From ddd3e1473a33dbaf6fc4141a519e6607f8ec5278 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 23:30:52 +0000 Subject: [PATCH 1/7] Bump @octokit/request-error and @actions/github Bumps [@octokit/request-error](https://github.com/octokit/request-error.js) to 5.1.1 and updates ancestor dependency [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github). These dependencies need to be updated together. Updates `@octokit/request-error` from 2.1.0 to 5.1.1 - [Release notes](https://github.com/octokit/request-error.js/releases) - [Commits](https://github.com/octokit/request-error.js/compare/v2.1.0...v5.1.1) Updates `@actions/github` from 5.1.1 to 6.0.0 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github) --- updated-dependencies: - dependency-name: "@octokit/request-error" dependency-type: indirect - dependency-name: "@actions/github" dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 485 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 266 insertions(+), 221 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4ed049..0d3b4c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1" + "@actions/github": "^6.0.0" }, "devDependencies": { "esbuild": "^0.12.8", @@ -28,134 +28,205 @@ } }, "node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" } }, "node_modules/@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "license": "MIT", "dependencies": { - "tunnel": "^0.0.6" + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" } }, "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dependencies": { - "@octokit/types": "^6.0.3" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "license": "MIT", + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "license": "MIT", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", + "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==", + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=2" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", + "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^23.0.1" } }, "node_modules/before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "license": "Apache-2.0" }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "license": "ISC" }, "node_modules/esbuild": { "version": "0.12.8", @@ -176,37 +247,11 @@ "node": ">= 0.10" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -223,11 +268,6 @@ "node": ">=10.13.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -236,10 +276,23 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, + "node_modules/undici": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "license": "ISC" }, "node_modules/uuid": { "version": "8.3.2", @@ -249,24 +302,11 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" } }, "dependencies": { @@ -280,123 +320,152 @@ } }, "@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", "requires": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" } }, "@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", "requires": { - "tunnel": "^0.0.6" + "tunnel": "^0.0.6", + "undici": "^5.25.4" } }, + "@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" + }, "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "requires": { - "@octokit/types": "^6.0.3" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==" }, "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", + "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==" }, "@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", "requires": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^12.6.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" + }, + "@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "requires": { + "@octokit/openapi-types": "^20.0.0" + } + } } }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", "requires": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^12.6.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" + }, + "@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "requires": { + "@octokit/openapi-types": "^20.0.0" + } + } } }, "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" } }, "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", "requires": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" } }, "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", + "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", "requires": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^23.0.1" } }, "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "deprecation": { "version": "2.3.1", @@ -415,19 +484,6 @@ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", "dev": true }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -442,40 +498,29 @@ "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, + "undici": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "requires": { + "@fastify/busboy": "^2.0.0" + } + }, "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index b2adee7..7be8875 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "license": "ISC", "dependencies": { "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1" + "@actions/github": "^6.0.0" }, "devDependencies": { "esbuild": "^0.12.8", From 93cfdd889c729e3e5a11f2f5b01ca75323bd8f6b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:52:18 +0000 Subject: [PATCH 2/7] Initial plan From a1b942c809f40ce5dc9e1324a74c1ef82a8bbe59 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:57:08 +0000 Subject: [PATCH 3/7] Fix ESBuild configuration and update to v0.20.2 to support Node.js built-in modules Co-authored-by: ahernandez411 <11199284+ahernandez411@users.noreply.github.com> --- dist/index.js | 33204 ++++++++++++++++++++++++++------------------ package-lock.json | 622 +- package.json | 6 +- 3 files changed, 20160 insertions(+), 13672 deletions(-) diff --git a/dist/index.js b/dist/index.js index 5169557..af6b79d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,40 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => + function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])((fn = 0))), res; + }; var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; +var __export = (target, all) => { + for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => ( + (target = mod != null ? __create(__getProtoOf(mod)) : {}), + __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, 'default', { value: mod, enumerable: true }) : target, + mod + ) +); +var __toCommonJS = mod => __copyProps(__defProp({}, '__esModule', { value: true }), mod); // node_modules/@actions/core/lib/utils.js var require_utils = __commonJS({ @@ -136,515 +169,357 @@ var require_command = __commonJS({ } }); -// node_modules/uuid/dist/rng.js -var require_rng = __commonJS({ - 'node_modules/uuid/dist/rng.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = rng; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var rnds8Pool = new Uint8Array(256); - var poolPtr = rnds8Pool.length; - function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - poolPtr = 0; - } - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); - } +// node_modules/uuid/dist/esm-node/rng.js +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + import_crypto.default.randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, (poolPtr += 16)); +} +var import_crypto, rnds8Pool, poolPtr; +var init_rng = __esm({ + 'node_modules/uuid/dist/esm-node/rng.js'() { + import_crypto = __toESM(require('crypto')); + rnds8Pool = new Uint8Array(256); + poolPtr = rnds8Pool.length; } }); -// node_modules/uuid/dist/regex.js -var require_regex = __commonJS({ - 'node_modules/uuid/dist/regex.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _default = +// node_modules/uuid/dist/esm-node/regex.js +var regex_default; +var init_regex = __esm({ + 'node_modules/uuid/dist/esm-node/regex.js'() { + regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - exports2.default = _default; } }); -// node_modules/uuid/dist/validate.js -var require_validate = __commonJS({ - 'node_modules/uuid/dist/validate.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _regex = _interopRequireDefault(require_regex()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); - } - var _default = validate; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/validate.js +function validate(uuid) { + return typeof uuid === 'string' && regex_default.test(uuid); +} +var validate_default; +var init_validate = __esm({ + 'node_modules/uuid/dist/esm-node/validate.js'() { + init_regex(); + validate_default = validate; } }); -// node_modules/uuid/dist/stringify.js -var require_stringify = __commonJS({ - 'node_modules/uuid/dist/stringify.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var byteToHex = []; +// node_modules/uuid/dist/esm-node/stringify.js +function stringify(arr, offset = 0) { + const uuid = ( + byteToHex[arr[offset + 0]] + + byteToHex[arr[offset + 1]] + + byteToHex[arr[offset + 2]] + + byteToHex[arr[offset + 3]] + + '-' + + byteToHex[arr[offset + 4]] + + byteToHex[arr[offset + 5]] + + '-' + + byteToHex[arr[offset + 6]] + + byteToHex[arr[offset + 7]] + + '-' + + byteToHex[arr[offset + 8]] + + byteToHex[arr[offset + 9]] + + '-' + + byteToHex[arr[offset + 10]] + + byteToHex[arr[offset + 11]] + + byteToHex[arr[offset + 12]] + + byteToHex[arr[offset + 13]] + + byteToHex[arr[offset + 14]] + + byteToHex[arr[offset + 15]] + ).toLowerCase(); + if (!validate_default(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + return uuid; +} +var byteToHex, stringify_default; +var init_stringify = __esm({ + 'node_modules/uuid/dist/esm-node/stringify.js'() { + init_validate(); + byteToHex = []; for (let i = 0; i < 256; ++i) { byteToHex.push((i + 256).toString(16).substr(1)); } - function stringify(arr, offset = 0) { - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - '-' + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - '-' + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - '-' + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - '-' + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; - } - var _default = stringify; - exports2.default = _default; + stringify_default = stringify; } }); -// node_modules/uuid/dist/v1.js -var require_v1 = __commonJS({ - 'node_modules/uuid/dist/v1.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var _nodeId; - var _clockseq; - var _lastMSecs = 0; - var _lastNSecs = 0; - function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - if (node == null) { - node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - if (clockseq == null) { - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 16383; - } - } - let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); - let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; - if (dt < 0 && options.clockseq === void 0) { - clockseq = (clockseq + 1) & 16383; - } - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { - nsecs = 0; - } - if (nsecs >= 1e4) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - msecs += 122192928e5; - const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; - b[i++] = (tl >>> 24) & 255; - b[i++] = (tl >>> 16) & 255; - b[i++] = (tl >>> 8) & 255; - b[i++] = tl & 255; - const tmh = ((msecs / 4294967296) * 1e4) & 268435455; - b[i++] = (tmh >>> 8) & 255; - b[i++] = tmh & 255; - b[i++] = ((tmh >>> 24) & 15) | 16; - b[i++] = (tmh >>> 16) & 255; - b[i++] = (clockseq >>> 8) | 128; - b[i++] = clockseq & 255; - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - return buf || (0, _stringify.default)(b); - } - var _default = v1; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/v1.js +function v1(options, buf, offset) { + let i = (buf && offset) || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + if (node == null) { + node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + if (clockseq == null) { + clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 16383; + } + } + let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); + let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; + if (dt < 0 && options.clockseq === void 0) { + clockseq = (clockseq + 1) & 16383; + } + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { + nsecs = 0; + } + if (nsecs >= 1e4) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + msecs += 122192928e5; + const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; + b[i++] = (tl >>> 24) & 255; + b[i++] = (tl >>> 16) & 255; + b[i++] = (tl >>> 8) & 255; + b[i++] = tl & 255; + const tmh = ((msecs / 4294967296) * 1e4) & 268435455; + b[i++] = (tmh >>> 8) & 255; + b[i++] = tmh & 255; + b[i++] = ((tmh >>> 24) & 15) | 16; + b[i++] = (tmh >>> 16) & 255; + b[i++] = (clockseq >>> 8) | 128; + b[i++] = clockseq & 255; + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + return buf || stringify_default(b); +} +var _nodeId, _clockseq, _lastMSecs, _lastNSecs, v1_default; +var init_v1 = __esm({ + 'node_modules/uuid/dist/esm-node/v1.js'() { + init_rng(); + init_stringify(); + _lastMSecs = 0; + _lastNSecs = 0; + v1_default = v1; } }); -// node_modules/uuid/dist/parse.js -var require_parse = __commonJS({ - 'node_modules/uuid/dist/parse.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - let v; - const arr = new Uint8Array(16); - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 255; - arr[2] = (v >>> 8) & 255; - arr[3] = v & 255; - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 255; - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 255; - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 255; - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776) & 255; - arr[11] = (v / 4294967296) & 255; - arr[12] = (v >>> 24) & 255; - arr[13] = (v >>> 16) & 255; - arr[14] = (v >>> 8) & 255; - arr[15] = v & 255; - return arr; - } - var _default = parse; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError('Invalid UUID'); + } + let v; + const arr = new Uint8Array(16); + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = (v >>> 16) & 255; + arr[2] = (v >>> 8) & 255; + arr[3] = v & 255; + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 255; + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 255; + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 255; + arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776) & 255; + arr[11] = (v / 4294967296) & 255; + arr[12] = (v >>> 24) & 255; + arr[13] = (v >>> 16) & 255; + arr[14] = (v >>> 8) & 255; + arr[15] = v & 255; + return arr; +} +var parse_default; +var init_parse = __esm({ + 'node_modules/uuid/dist/esm-node/parse.js'() { + init_validate(); + parse_default = parse; } }); -// node_modules/uuid/dist/v35.js -var require_v35 = __commonJS({ - 'node_modules/uuid/dist/v35.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = _default; - exports2.URL = exports2.DNS = void 0; - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; +// node_modules/uuid/dist/esm-node/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + return bytes; +} +function v35_default(name, version2, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); } - var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - exports2.DNS = DNS; - var URL2 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - exports2.URL = URL2; - function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 15) | version; - bytes[8] = (bytes[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - return buf; - } - return (0, _stringify.default)(bytes); - } - try { - generateUUID.name = name; - } catch (err) {} - generateUUID.DNS = DNS; - generateUUID.URL = URL2; - return generateUUID; + if (typeof namespace === 'string') { + namespace = parse_default(namespace); } - } -}); - -// node_modules/uuid/dist/md5.js -var require_md5 = __commonJS({ - 'node_modules/uuid/dist/md5.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); } - function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return _crypto.default.createHash('md5').update(bytes).digest(); + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = (bytes[6] & 15) | version2; + bytes[8] = (bytes[8] & 63) | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; } - var _default = md5; - exports2.default = _default; + return stringify_default(bytes); + } + try { + generateUUID.name = name; + } catch (err) {} + generateUUID.DNS = DNS; + generateUUID.URL = URL2; + return generateUUID; +} +var DNS, URL2; +var init_v35 = __esm({ + 'node_modules/uuid/dist/esm-node/v35.js'() { + init_stringify(); + init_parse(); + DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + URL2 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; } }); -// node_modules/uuid/dist/v3.js -var require_v3 = __commonJS({ - 'node_modules/uuid/dist/v3.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _md = _interopRequireDefault(require_md5()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v3 = (0, _v.default)('v3', 48, _md.default); - var _default = v3; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/md5.js +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + return import_crypto2.default.createHash('md5').update(bytes).digest(); +} +var import_crypto2, md5_default; +var init_md5 = __esm({ + 'node_modules/uuid/dist/esm-node/md5.js'() { + import_crypto2 = __toESM(require('crypto')); + md5_default = md5; } }); -// node_modules/uuid/dist/v4.js -var require_v4 = __commonJS({ - 'node_modules/uuid/dist/v4.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || _rng.default)(); - rnds[6] = (rnds[6] & 15) | 64; - rnds[8] = (rnds[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return (0, _stringify.default)(rnds); - } - var _default = v4; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/v3.js +var v3, v3_default; +var init_v3 = __esm({ + 'node_modules/uuid/dist/esm-node/v3.js'() { + init_v35(); + init_md5(); + v3 = v35_default('v3', 48, md5_default); + v3_default = v3; } }); -// node_modules/uuid/dist/sha1.js -var require_sha1 = __commonJS({ - 'node_modules/uuid/dist/sha1.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return _crypto.default.createHash('sha1').update(bytes).digest(); +// node_modules/uuid/dist/esm-node/v4.js +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = (rnds[6] & 15) | 64; + rnds[8] = (rnds[8] & 63) | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } - var _default = sha1; - exports2.default = _default; + return buf; + } + return stringify_default(rnds); +} +var v4_default; +var init_v4 = __esm({ + 'node_modules/uuid/dist/esm-node/v4.js'() { + init_rng(); + init_stringify(); + v4_default = v4; } }); -// node_modules/uuid/dist/v5.js -var require_v5 = __commonJS({ - 'node_modules/uuid/dist/v5.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _sha = _interopRequireDefault(require_sha1()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v5 = (0, _v.default)('v5', 80, _sha.default); - var _default = v5; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/sha1.js +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + return import_crypto3.default.createHash('sha1').update(bytes).digest(); +} +var import_crypto3, sha1_default; +var init_sha1 = __esm({ + 'node_modules/uuid/dist/esm-node/sha1.js'() { + import_crypto3 = __toESM(require('crypto')); + sha1_default = sha1; } }); -// node_modules/uuid/dist/nil.js -var require_nil = __commonJS({ - 'node_modules/uuid/dist/nil.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _default = '00000000-0000-0000-0000-000000000000'; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/v5.js +var v5, v5_default; +var init_v5 = __esm({ + 'node_modules/uuid/dist/esm-node/v5.js'() { + init_v35(); + init_sha1(); + v5 = v35_default('v5', 80, sha1_default); + v5_default = v5; } }); -// node_modules/uuid/dist/version.js -var require_version = __commonJS({ - 'node_modules/uuid/dist/version.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); - } - var _default = version; - exports2.default = _default; +// node_modules/uuid/dist/esm-node/nil.js +var nil_default; +var init_nil = __esm({ + 'node_modules/uuid/dist/esm-node/nil.js'() { + nil_default = '00000000-0000-0000-0000-000000000000'; } }); -// node_modules/uuid/dist/index.js -var require_dist = __commonJS({ - 'node_modules/uuid/dist/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - Object.defineProperty(exports2, 'v1', { - enumerable: true, - get: function () { - return _v.default; - } - }); - Object.defineProperty(exports2, 'v3', { - enumerable: true, - get: function () { - return _v2.default; - } - }); - Object.defineProperty(exports2, 'v4', { - enumerable: true, - get: function () { - return _v3.default; - } - }); - Object.defineProperty(exports2, 'v5', { - enumerable: true, - get: function () { - return _v4.default; - } - }); - Object.defineProperty(exports2, 'NIL', { - enumerable: true, - get: function () { - return _nil.default; - } - }); - Object.defineProperty(exports2, 'version', { - enumerable: true, - get: function () { - return _version.default; - } - }); - Object.defineProperty(exports2, 'validate', { - enumerable: true, - get: function () { - return _validate.default; - } - }); - Object.defineProperty(exports2, 'stringify', { - enumerable: true, - get: function () { - return _stringify.default; - } - }); - Object.defineProperty(exports2, 'parse', { - enumerable: true, - get: function () { - return _parse.default; - } - }); - var _v = _interopRequireDefault(require_v1()); - var _v2 = _interopRequireDefault(require_v3()); - var _v3 = _interopRequireDefault(require_v4()); - var _v4 = _interopRequireDefault(require_v5()); - var _nil = _interopRequireDefault(require_nil()); - var _version = _interopRequireDefault(require_version()); - var _validate = _interopRequireDefault(require_validate()); - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } +// node_modules/uuid/dist/esm-node/version.js +function version(uuid) { + if (!validate_default(uuid)) { + throw TypeError('Invalid UUID'); + } + return parseInt(uuid.substr(14, 1), 16); +} +var version_default; +var init_version = __esm({ + 'node_modules/uuid/dist/esm-node/version.js'() { + init_validate(); + version_default = version; + } +}); + +// node_modules/uuid/dist/esm-node/index.js +var esm_node_exports = {}; +__export(esm_node_exports, { + NIL: () => nil_default, + parse: () => parse_default, + stringify: () => stringify_default, + v1: () => v1_default, + v3: () => v3_default, + v4: () => v4_default, + v5: () => v5_default, + validate: () => validate_default, + version: () => version_default +}); +var init_esm_node = __esm({ + 'node_modules/uuid/dist/esm-node/index.js'() { + init_v1(); + init_v3(); + init_v4(); + init_v5(); + init_nil(); + init_version(); + init_validate(); + init_stringify(); + init_parse(); } }); @@ -692,7 +567,7 @@ var require_file_command = __commonJS({ exports2.prepareKeyValueMessage = exports2.issueFileCommand = void 0; var fs2 = __importStar(require('fs')); var os = __importStar(require('os')); - var uuid_1 = require_dist(); + var uuid_1 = (init_esm_node(), __toCommonJS(esm_node_exports)); var utils_1 = require_utils(); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -741,7 +616,11 @@ var require_proxy = __commonJS({ } })(); if (proxyVar) { - return new URL(proxyVar); + try { + return new DecodedURL(proxyVar); + } catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) return new DecodedURL(`http://${proxyVar}`); + } } else { return void 0; } @@ -751,6 +630,10 @@ var require_proxy = __commonJS({ if (!reqUrl.hostname) { return false; } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; if (!noProxy) { return false; @@ -771,13 +654,43 @@ var require_proxy = __commonJS({ .split(',') .map(x => x.trim().toUpperCase()) .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { + if ( + upperNoProxyItem === '*' || + upperReqHosts.some( + x => + x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && x.endsWith(`${upperNoProxyItem}`)) + ) + ) { return true; } } return false; } exports2.checkBypass = checkBypass; + function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return ( + hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]') + ); + } + var DecodedURL = class extends URL { + constructor(url, base) { + super(url, base); + this._decodedUsername = decodeURIComponent(super.username); + this._decodedPassword = decodeURIComponent(super.password); + } + get username() { + return this._decodedUsername; + } + get password() { + return this._decodedPassword; + } + }; } }); @@ -1010,13091 +923,18860 @@ var require_tunnel2 = __commonJS({ } }); -// node_modules/@actions/http-client/lib/index.js -var require_lib = __commonJS({ - 'node_modules/@actions/http-client/lib/index.js'(exports2) { +// node_modules/undici/lib/core/symbols.js +var require_symbols = __commonJS({ + 'node_modules/undici/lib/core/symbols.js'(exports2, module2) { + module2.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'), + kHeadersList: Symbol('headers list'), + 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'), + 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'), + 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'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') + }; + } +}); + +// node_modules/undici/lib/core/errors.js +var require_errors = __commonJS({ + 'node_modules/undici/lib/core/errors.js'(exports2, module2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.HttpClient = - exports2.isHttps = - exports2.HttpClientResponse = - exports2.HttpClientError = - exports2.getProxyUrl = - exports2.MediaTypes = - exports2.Headers = - exports2.HttpCodes = - void 0; - var http = __importStar(require('http')); - var https = __importStar(require('https')); - var pm = __importStar(require_proxy()); - var tunnel = __importStar(require_tunnel2()); - var HttpCodes; - (function (HttpCodes2) { - HttpCodes2[(HttpCodes2['OK'] = 200)] = 'OK'; - HttpCodes2[(HttpCodes2['MultipleChoices'] = 300)] = 'MultipleChoices'; - HttpCodes2[(HttpCodes2['MovedPermanently'] = 301)] = 'MovedPermanently'; - HttpCodes2[(HttpCodes2['ResourceMoved'] = 302)] = 'ResourceMoved'; - HttpCodes2[(HttpCodes2['SeeOther'] = 303)] = 'SeeOther'; - HttpCodes2[(HttpCodes2['NotModified'] = 304)] = 'NotModified'; - HttpCodes2[(HttpCodes2['UseProxy'] = 305)] = 'UseProxy'; - HttpCodes2[(HttpCodes2['SwitchProxy'] = 306)] = 'SwitchProxy'; - HttpCodes2[(HttpCodes2['TemporaryRedirect'] = 307)] = 'TemporaryRedirect'; - HttpCodes2[(HttpCodes2['PermanentRedirect'] = 308)] = 'PermanentRedirect'; - HttpCodes2[(HttpCodes2['BadRequest'] = 400)] = 'BadRequest'; - HttpCodes2[(HttpCodes2['Unauthorized'] = 401)] = 'Unauthorized'; - HttpCodes2[(HttpCodes2['PaymentRequired'] = 402)] = 'PaymentRequired'; - HttpCodes2[(HttpCodes2['Forbidden'] = 403)] = 'Forbidden'; - HttpCodes2[(HttpCodes2['NotFound'] = 404)] = 'NotFound'; - HttpCodes2[(HttpCodes2['MethodNotAllowed'] = 405)] = 'MethodNotAllowed'; - HttpCodes2[(HttpCodes2['NotAcceptable'] = 406)] = 'NotAcceptable'; - HttpCodes2[(HttpCodes2['ProxyAuthenticationRequired'] = 407)] = 'ProxyAuthenticationRequired'; - HttpCodes2[(HttpCodes2['RequestTimeout'] = 408)] = 'RequestTimeout'; - HttpCodes2[(HttpCodes2['Conflict'] = 409)] = 'Conflict'; - HttpCodes2[(HttpCodes2['Gone'] = 410)] = 'Gone'; - HttpCodes2[(HttpCodes2['TooManyRequests'] = 429)] = 'TooManyRequests'; - HttpCodes2[(HttpCodes2['InternalServerError'] = 500)] = 'InternalServerError'; - HttpCodes2[(HttpCodes2['NotImplemented'] = 501)] = 'NotImplemented'; - HttpCodes2[(HttpCodes2['BadGateway'] = 502)] = 'BadGateway'; - HttpCodes2[(HttpCodes2['ServiceUnavailable'] = 503)] = 'ServiceUnavailable'; - HttpCodes2[(HttpCodes2['GatewayTimeout'] = 504)] = 'GatewayTimeout'; - })((HttpCodes = exports2.HttpCodes || (exports2.HttpCodes = {}))); - var Headers; - (function (Headers2) { - Headers2['Accept'] = 'accept'; - Headers2['ContentType'] = 'content-type'; - })((Headers = exports2.Headers || (exports2.Headers = {}))); - var MediaTypes; - (function (MediaTypes2) { - MediaTypes2['ApplicationJson'] = 'application/json'; - })((MediaTypes = exports2.MediaTypes || (exports2.MediaTypes = {}))); - function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; - } - exports2.getProxyUrl = getProxyUrl; - var HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect - ]; - var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; - var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; - var ExponentialBackoffCeiling = 10; - var ExponentialBackoffTimeSlice = 5; - var HttpClientError = class extends Error { - constructor(message, statusCode) { + var UndiciError = class extends Error { + constructor(message) { super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); + this.name = 'UndiciError'; + this.code = 'UND_ERR'; } }; - exports2.HttpClientError = HttpClientError; - var HttpClientResponse = class { + var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError { constructor(message) { - this.message = message; + super(message); + Error.captureStackTrace(this, _ConnectTimeoutError); + this.name = 'ConnectTimeoutError'; + this.message = message || 'Connect Timeout Error'; + this.code = 'UND_ERR_CONNECT_TIMEOUT'; } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => - __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on('data', chunk => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - }) - ); - }); + }; + var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersTimeoutError); + this.name = 'HeadersTimeoutError'; + this.message = message || 'Headers Timeout Error'; + this.code = 'UND_ERR_HEADERS_TIMEOUT'; } }; - exports2.HttpClientResponse = HttpClientResponse; - function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; - } - exports2.isHttps = isHttps; - var HttpClient = class { - constructor(userAgent, handlers, requestOptions) { - 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 = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } + var HeadersOverflowError = class _HeadersOverflowError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _HeadersOverflowError); + this.name = 'HeadersOverflowError'; + this.message = message || 'Headers Overflow Error'; + this.code = 'UND_ERR_HEADERS_OVERFLOW'; } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); + }; + var BodyTimeoutError = class _BodyTimeoutError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _BodyTimeoutError); + this.name = 'BodyTimeoutError'; + this.message = message || 'Body Timeout Error'; + this.code = 'UND_ERR_BODY_TIMEOUT'; } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); + }; + var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError { + constructor(message, statusCode, headers, body2) { + super(message); + Error.captureStackTrace(this, _ResponseStatusCodeError); + this.name = 'ResponseStatusCodeError'; + this.message = message || 'Response Status Code Error'; + this.code = 'UND_ERR_RESPONSE_STATUS_CODE'; + this.body = body2; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - }); + }; + var InvalidArgumentError = class _InvalidArgumentError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidArgumentError); + this.name = 'InvalidArgumentError'; + this.message = message || 'Invalid Argument Error'; + this.code = 'UND_ERR_INVALID_ARG'; } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - }); + }; + var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InvalidReturnValueError); + this.name = 'InvalidReturnValueError'; + this.message = message || 'Invalid Return Value Error'; + this.code = 'UND_ERR_INVALID_RETURN_VALUE'; } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); + }; + var RequestAbortedError = class _RequestAbortedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestAbortedError); + this.name = 'AbortError'; + this.message = message || 'Request aborted'; + this.code = 'UND_ERR_ABORTED'; } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - }); + }; + var InformationalError = class _InformationalError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _InformationalError); + this.name = 'InformationalError'; + this.message = message || 'Request information'; + this.code = 'UND_ERR_INFO'; } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - }); + }; + var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _RequestContentLengthMismatchError); + this.name = 'RequestContentLengthMismatchError'; + this.message = message || 'Request body length does not match content-length header'; + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'; } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); + }; + var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseContentLengthMismatchError); + this.name = 'ResponseContentLengthMismatchError'; + this.message = message || 'Response body length does not match content-length header'; + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'; } - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + }; + var ClientDestroyedError = class _ClientDestroyedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientDestroyedError); + this.name = 'ClientDestroyedError'; + this.message = message || 'The client is destroyed'; + this.code = 'UND_ERR_DESTROYED'; } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + }; + var ClientClosedError = class _ClientClosedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ClientClosedError); + this.name = 'ClientClosedError'; + this.message = message || 'The client is closed'; + this.code = 'UND_ERR_CLOSED'; } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + }; + var SocketError = class _SocketError extends UndiciError { + constructor(message, socket) { + super(message); + Error.captureStackTrace(this, _SocketError); + this.name = 'SocketError'; + this.message = message || 'Socket error'; + this.code = 'UND_ERR_SOCKET'; + this.socket = socket; } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + }; + var NotSupportedError = class _NotSupportedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _NotSupportedError); + this.name = 'NotSupportedError'; + this.message = message || 'Not supported error'; + this.code = 'UND_ERR_NOT_SUPPORTED'; } - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } else { - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while ( - response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0 - ) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if ( - parsedUrl.protocol === 'https:' && - parsedUrl.protocol !== parsedRedirectUrl.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 response.readBody(); - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); + }; + var BalancedPoolMissingUpstreamError = class extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, NotSupportedError); + this.name = 'MissingUpstreamError'; + this.message = message || 'No upstream has been added to the BalancedPool'; + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'; } - dispose() { - if (this._agent) { - this._agent.destroy(); + }; + var HTTPParserError = class _HTTPParserError extends Error { + constructor(message, code, data) { + super(message); + Error.captureStackTrace(this, _HTTPParserError); + this.name = 'HTTPParserError'; + this.code = code ? `HPE_${code}` : void 0; + this.data = data ? data.toString() : void 0; + } + }; + var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _ResponseExceededMaxSizeError); + this.name = 'ResponseExceededMaxSizeError'; + this.message = message || 'Response content exceeded max size'; + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'; + } + }; + var RequestRetryError = class _RequestRetryError extends UndiciError { + constructor(message, code, { headers, data }) { + super(message); + Error.captureStackTrace(this, _RequestRetryError); + this.name = 'RequestRetryError'; + this.message = message || 'Request retry error'; + this.code = 'UND_ERR_REQ_RETRY'; + this.statusCode = code; + this.data = data; + this.headers = headers; + } + }; + module2.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError + }; + } +}); + +// node_modules/undici/lib/core/constants.js +var require_constants = __commonJS({ + 'node_modules/undici/lib/core/constants.js'(exports2, module2) { + 'use strict'; + var headerNameLowerCasedRecord = {}; + var wellknownHeaderNames = [ + '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 i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i]; + const lowerCasedKey = key.toLowerCase(); + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey; + } + Object.setPrototypeOf(headerNameLowerCasedRecord, null); + module2.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord + }; + } +}); + +// node_modules/undici/lib/core/util.js +var require_util = __commonJS({ + 'node_modules/undici/lib/core/util.js'(exports2, module2) { + 'use strict'; + var assert = require('assert'); + var { kDestroyed, kBodyUsed } = require_symbols(); + var { IncomingMessage } = require('http'); + var stream = require('stream'); + var net = require('net'); + var { InvalidArgumentError } = require_errors(); + var { Blob: Blob2 } = require('buffer'); + var nodeUtil = require('util'); + var { stringify: stringify2 } = require('querystring'); + var { headerNameLowerCasedRecord } = require_constants(); + var [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)); + function nop() {} + function isStream(obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'; + } + function isBlobLike(object) { + return ( + (Blob2 && object instanceof Blob2) || + (object && + typeof object === 'object' && + (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && + /^(Blob|File)$/.test(object[Symbol.toStringTag])) + ); + } + function buildURL(url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + const stringified = stringify2(queryParams); + if (stringified) { + url += '?' + stringified; + } + return url; + } + function parseURL(url) { + if (typeof url === 'string') { + url = new URL(url); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); } - this._disposed = true; + return url; } - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - reject(new Error('Unknown error')); - } else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.'); } - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.'); } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.'); } - const req = info.httpModule.request(info.options, msg => { - const res = new HttpClientResponse(msg); - handleResult(void 0, res); - }); - let socket; - req.on('socket', sock => { - socket = sock; - }); - req.setTimeout(this._socketTimeout || 3 * 6e4, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.'); } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } else { - req.end(); + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.'); } + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.'); + } + const port = url.port != null ? url.port : url.protocol === 'https:' ? 443 : 80; + let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + let path = url.path != null ? url.path : `${url.pathname || ''}${url.search || ''}`; + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1); + } + if (path && !path.startsWith('/')) { + path = `/${path}`; + } + url = new URL(origin + path); } - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url'); } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; - info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; + return url; + } + function getHostname(host) { + if (host[0] === '[') { + const idx2 = host.indexOf(']'); + assert(idx2 !== -1); + return host.substring(1, idx2); + } + const idx = host.indexOf(':'); + if (idx === -1) return host; + return host.substring(0, idx); + } + function getServerName(host) { + if (!host) { + return null; + } + assert.strictEqual(typeof host, 'string'); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ''; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function'); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')); + } + function bodyLength(body2) { + if (body2 == null) { + return 0; + } else if (isStream(body2)) { + const state = body2._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body2)) { + return body2.size != null ? body2.size : null; + } else if (isBuffer(body2)) { + return body2.byteLength; + } + return null; + } + function isDestroyed(stream2) { + return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); + } + function isReadableAborted(stream2) { + const state = stream2 && stream2._readableState; + return isDestroyed(stream2) && state && !state.endEmitted; + } + function destroy(stream2, err) { + if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === 'function') { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; } - info.options.agent = this._getAgent(info.parsedUrl); - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); + stream2.destroy(err); + } else if (err) { + process.nextTick( + (stream3, err2) => { + stream3.emit('error', err2); + }, + stream2, + err + ); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } + } + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; + } + function headerNameToString(value) { + return headerNameLowerCasedRecord[value] || value.toLowerCase(); + } + function parseHeaders(headers, obj = {}) { + if (!Array.isArray(headers)) return headers; + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase(); + let val = obj[key]; + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(x => x.toString('utf8')); + } else { + obj[key] = headers[i + 1].toString('utf8'); } + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString('utf8')); } - return info; } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); - } - return lowercaseKeys(headers || {}); + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1'); } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + return obj; + } + function parseRawHeaders(headers) { + const ret = []; + let hasContentLength = false; + let contentDispositionIdx = -1; + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString(); + const val = headers[n + 1].toString('utf8'); + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val); + hasContentLength = true; + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1; + } else { + ret.push(key, val); } - return additionalHeaders[header] || clientHeader || _default; } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1'); + } + return ret; + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method'); + } + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method'); + } + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== void 0) { + throw new InvalidArgumentError('invalid onBodySent method'); + } + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method'); } - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign( - Object.assign( - {}, - (proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - } - ), - { host: proxyUrl.hostname, port: proxyUrl.port } - ) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method'); } - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method'); } - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method'); } - if (usingSsl && this._ignoreSslError) { - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); + } + function isDisturbed(body2) { + return !!( + body2 && + (stream.isDisturbed + ? stream.isDisturbed(body2) || body2[kBodyUsed] + : body2[kBodyUsed] || + body2.readableDidRead || + (body2._readableState && body2._readableState.dataEmitted) || + isReadableAborted(body2)) + ); + } + function isErrored(body2) { + return !!(body2 && (stream.isErrored ? stream.isErrored(body2) : /state: 'errored'/.test(nodeUtil.inspect(body2)))); + } + function isReadable(body2) { + return !!(body2 && (stream.isReadable ? stream.isReadable(body2) : /state: 'readable'/.test(nodeUtil.inspect(body2)))); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + async function* convertIterableToBuffer(iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => - __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - function dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } catch (err) {} - if (statusCode > 299) { - let msg; - if (obj && obj.message) { - msg = obj.message; - } else if (contents && contents.length > 0) { - msg = contents; - } else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } else { - resolve(response); - } - }) - ); - }); + } + var ReadableStream; + function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = require('stream/web').ReadableStream; + } + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)); + } + let iterator; + return new ReadableStream( + { + async start() { + iterator = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }, + 0 + ); + } + function isFormDataLike(object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ); + } + function throwIfAborted(signal) { + if (!signal) { + return; + } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted(); + } else { + if (signal.aborted) { + const err = new Error('The operation was aborted'); + err.name = 'AbortError'; + throw err; + } + } + } + function addAbortListener(signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }); + return () => signal.removeEventListener('abort', listener); } + signal.addListener('abort', listener); + return () => signal.removeListener('abort', listener); + } + var hasToWellFormed = !!String.prototype.toWellFormed; + function toUSVString(val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed(); + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val); + } + return `${val}`; + } + function parseRangeHeader(range) { + if (range == null || range === '') return { start: 0, end: null, size: null }; + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null; + } + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + module2.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + parseRangeHeader, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] }; - exports2.HttpClient = HttpClient; - var lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); } }); -// node_modules/@actions/http-client/lib/auth.js -var require_auth = __commonJS({ - 'node_modules/@actions/http-client/lib/auth.js'(exports2) { +// node_modules/undici/lib/timers.js +var require_timers = __commonJS({ + 'node_modules/undici/lib/timers.js'(exports2, module2) { 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); + var fastNow = Date.now(); + var fastNowTimeout; + var fastTimers = []; + function onTimeout() { + fastNow = Date.now(); + let len = fastTimers.length; + let idx = 0; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer.state === 0) { + timer.state = fastNow + timer.delay; + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1; + timer.callback(timer.opaque); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); - } + if (timer.state === -1) { + timer.state = -2; + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop(); + } else { + fastTimers.pop(); } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + len -= 1; + } else { + idx += 1; + } + } + if (fastTimers.length > 0) { + refreshTimeout(); + } + } + function refreshTimeout() { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTimeout, 1e3); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } + } + var Timeout = class { + constructor(callback, delay, opaque) { + this.callback = callback; + this.delay = delay; + this.opaque = opaque; + this.state = -2; + this.refresh(); + } + refresh() { + if (this.state === -2) { + fastTimers.push(this); + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.PersonalAccessTokenCredentialHandler = exports2.BearerCredentialHandler = exports2.BasicCredentialHandler = void 0; - var BasicCredentialHandler = class { - constructor(username, password) { - this.username = username; - this.password = password; + } + this.state = 0; } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); + clear() { + this.state = -1; + } + }; + module2.exports = { + setTimeout(callback, delay, opaque) { + return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); + }, + clearTimeout(timeout) { + if (timeout instanceof Timeout) { + timeout.clear(); + } else { + clearTimeout(timeout); } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; } - canHandleAuthentication() { - return false; + }; + } +}); + +// node_modules/@fastify/busboy/deps/streamsearch/sbmh.js +var require_sbmh = __commonJS({ + 'node_modules/@fastify/busboy/deps/streamsearch/sbmh.js'(exports2, module2) { + 'use strict'; + var EventEmitter = require('node:events').EventEmitter; + var inherits = require('node:util').inherits; + function SBMH(needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle); + } + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.'); + } + const needleLength = needle.length; + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.'); + } + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.'); + } + this.maxMatches = Infinity; + this.matches = 0; + this._occ = new Array(256).fill(needleLength); + this._lookbehind_size = 0; + this._needle = needle; + this._bufpos = 0; + this._lookbehind = Buffer.alloc(needleLength); + for (var i = 0; i < needleLength - 1; ++i) { + this._occ[needle[i]] = needleLength - 1 - i; } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + } + inherits(SBMH, EventEmitter); + SBMH.prototype.reset = function () { + this._lookbehind_size = 0; + this.matches = 0; + this._bufpos = 0; + }; + SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary'); + } + const chlen = chunk.length; + this._bufpos = pos || 0; + let r; + while (r !== chlen && this.matches < this.maxMatches) { + r = this._sbmh_feed(chunk); } + return r; }; - exports2.BasicCredentialHandler = BasicCredentialHandler; - var BearerCredentialHandler = class { - constructor(token2) { - this.token = token2; + SBMH.prototype._sbmh_feed = function (data) { + const len = data.length; + const needle = this._needle; + const needleLength = needle.length; + const lastNeedleChar = needle[needleLength - 1]; + let pos = -this._lookbehind_size; + let ch; + if (pos < 0) { + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1); + if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { + this._lookbehind_size = 0; + ++this.matches; + this.emit('info', true); + return (this._bufpos = pos + needleLength); + } + pos += this._occ[ch]; + } + if (pos < 0) { + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { + ++pos; + } + } + if (pos >= 0) { + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size); + this._lookbehind_size = 0; + } else { + const bytesToCutOff = this._lookbehind_size + pos; + if (bytesToCutOff > 0) { + this.emit('info', false, this._lookbehind, 0, bytesToCutOff); + } + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, this._lookbehind_size - bytesToCutOff); + this._lookbehind_size -= bytesToCutOff; + data.copy(this._lookbehind, this._lookbehind_size); + this._lookbehind_size += len; + this._bufpos = len; + return len; + } } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); + pos += (pos >= 0) * this._bufpos; + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos); + ++this.matches; + if (pos > 0) { + this.emit('info', true, data, this._bufpos, pos); + } else { + this.emit('info', true); } - options.headers['Authorization'] = `Bearer ${this.token}`; + return (this._bufpos = pos + needleLength); + } else { + pos = len - needleLength; } - canHandleAuthentication() { - return false; + while ( + pos < len && + (data[pos] !== needle[0] || Buffer.compare(data.subarray(pos, pos + len - pos), needle.subarray(0, len - pos)) !== 0) + ) { + ++pos; } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)); + this._lookbehind_size = len - pos; } - }; - exports2.BearerCredentialHandler = BearerCredentialHandler; - var PersonalAccessTokenCredentialHandler = class { - constructor(token2) { - this.token = token2; + if (pos > 0) { + this.emit('info', false, data, this._bufpos, pos < len ? pos : len); } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); + this._bufpos = len; + return len; + }; + SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; + }; + SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { + return false; } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; } - canHandleAuthentication() { - return false; + return true; + }; + module2.exports = SBMH; + } +}); + +// node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js +var require_PartStream = __commonJS({ + 'node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js'(exports2, module2) { + 'use strict'; + var inherits = require('node:util').inherits; + var ReadableStream = require('node:stream').Readable; + function PartStream(opts) { + ReadableStream.call(this, opts); + } + inherits(PartStream, ReadableStream); + PartStream.prototype._read = function (n) {}; + module2.exports = PartStream; + } +}); + +// node_modules/@fastify/busboy/lib/utils/getLimit.js +var require_getLimit = __commonJS({ + 'node_modules/@fastify/busboy/lib/utils/getLimit.js'(exports2, module2) { + 'use strict'; + module2.exports = function getLimit(limits, name, defaultLimit) { + if (!limits || limits[name] === void 0 || limits[name] === null) { + return defaultLimit; } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + if (typeof limits[name] !== 'number' || isNaN(limits[name])) { + throw new TypeError('Limit ' + name + ' is not a valid number'); } + return limits[name]; }; - exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; } }); -// node_modules/@actions/core/lib/oidc-utils.js -var require_oidc_utils = __commonJS({ - 'node_modules/@actions/core/lib/oidc-utils.js'(exports2) { +// node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js +var require_HeaderParser = __commonJS({ + 'node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js'(exports2, module2) { 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } + var EventEmitter = require('node:events').EventEmitter; + var inherits = require('node:util').inherits; + var getLimit = require_getLimit(); + var StreamSearch = require_sbmh(); + var B_DCRLF = Buffer.from('\r\n\r\n'); + var RE_CRLF = /\r\n/g; + var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; + function HeaderParser(cfg) { + EventEmitter.call(this); + cfg = cfg || {}; + const self = this; + this.nread = 0; + this.maxed = false; + this.npairs = 0; + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2e3); + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024); + this.buffer = ''; + this.header = {}; + this.finished = false; + this.ss = new StreamSearch(B_DCRLF); + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start; + self.nread = self.maxHeaderSize; + self.maxed = true; + } else { + self.nread += end - start; } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.OidcClient = void 0; - var http_client_1 = require_lib(); - var auth_1 = require_auth(); - var core_1 = require_core(); - var OidcClient = class { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient( - 'actions/oidc-client', - [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], - requestOptions - ); - } - static getRequestToken() { - const token2 = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token2) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + self.buffer += data.toString('binary', start, end); } - return token2; - } - static getIDTokenUrl() { - const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; - if (!runtimeUrl) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + if (isMatch) { + self._finish(); } - return runtimeUrl; + }); + } + inherits(HeaderParser, EventEmitter); + HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data); + if (this.finished) { + return r; } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch(error => { - throw new Error(`Failed to get ID Token. - - Error Code : ${error.statusCode} - - Error Message: ${error.result.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); - } - return id_token; - }); + }; + HeaderParser.prototype.reset = function () { + this.finished = false; + this.buffer = ''; + this.header = {}; + this.ss.reset(); + }; + HeaderParser.prototype._finish = function () { + if (this.buffer) { + this._parseHeader(); } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; - } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } catch (error) { - throw new Error(`Error message: ${error.message}`); + this.ss.matches = this.ss.maxMatches; + const header = this.header; + this.header = {}; + this.buffer = ''; + this.finished = true; + this.nread = this.npairs = 0; + this.maxed = false; + this.emit('header', header); + }; + HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { + return; + } + const lines = this.buffer.split(RE_CRLF); + const len = lines.length; + let m, h; + for (var i = 0; i < len; ++i) { + if (lines[i].length === 0) { + continue; + } + if (lines[i][0] === ' ' || lines[i][0] === ' ') { + if (h) { + this.header[h][this.header[h].length - 1] += lines[i]; + continue; } - }); + } + const posColon = lines[i].indexOf(':'); + if (posColon === -1 || posColon === 0) { + return; + } + m = RE_HDR.exec(lines[i]); + h = m[1].toLowerCase(); + this.header[h] = this.header[h] || []; + this.header[h].push(m[2] || ''); + if (++this.npairs === this.maxHeaderPairs) { + break; + } } }; - exports2.OidcClient = OidcClient; + module2.exports = HeaderParser; } }); -// node_modules/@actions/core/lib/summary.js -var require_summary = __commonJS({ - 'node_modules/@actions/core/lib/summary.js'(exports2) { +// node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js +var require_Dicer = __commonJS({ + 'node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js'(exports2, module2) { 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); + var WritableStream = require('node:stream').Writable; + var inherits = require('node:util').inherits; + var StreamSearch = require_sbmh(); + var PartStream = require_PartStream(); + var HeaderParser = require_HeaderParser(); + var DASH = 45; + var B_ONEDASH = Buffer.from('-'); + var B_CRLF = Buffer.from('\r\n'); + var EMPTY_FN = function () {}; + function Dicer(cfg) { + if (!(this instanceof Dicer)) { + return new Dicer(cfg); + } + WritableStream.call(this, cfg); + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { + throw new TypeError('Boundary required'); + } + if (typeof cfg.boundary === 'string') { + this.setBoundary(cfg.boundary); + } else { + this._bparser = void 0; + } + this._headerFirst = cfg.headerFirst; + this._dashes = 0; + this._parts = 0; + this._finished = false; + this._realFinish = false; + this._isPreamble = true; + this._justMatched = false; + this._firstWrite = true; + this._inHeader = true; + this._part = void 0; + this._cb = void 0; + this._ignoreData = false; + this._partOpts = { highWaterMark: cfg.partHwm }; + this._pause = false; + const self = this; + this._hparser = new HeaderParser(cfg); + this._hparser.on('header', function (header) { + self._inHeader = false; + self._part.emit('header', header); + }); + } + inherits(Dicer, WritableStream); + Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this; + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')); + if (self._part && !self._ignoreData) { + const type = self._isPreamble ? 'Preamble' : 'Part'; + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')); + self._part.push(null); + process.nextTick(function () { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + return; } + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + }); + } + } else { + WritableStream.prototype.emit.apply(this, arguments); + } + }; + Dicer.prototype._write = function (data, encoding, cb) { + if (!this._hparser && !this._bparser) { + return cb(); + } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts); + if (this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part); + } else { + this._ignore(); } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); + } + const r = this._hparser.push(data); + if (!this._inHeader && r !== void 0 && r < data.length) { + data = data.slice(r); + } else { + return cb(); + } + } + if (this._firstWrite) { + this._bparser.push(B_CRLF); + this._firstWrite = false; + } + this._bparser.push(data); + if (this._pause) { + this._cb = cb; + } else { + cb(); + } + }; + Dicer.prototype.reset = function () { + this._part = void 0; + this._bparser = void 0; + this._hparser = void 0; + }; + Dicer.prototype.setBoundary = function (boundary) { + const self = this; + this._bparser = new StreamSearch('\r\n--' + boundary); + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end); + }); + }; + Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true; + this._part.on('error', EMPTY_FN); + this._part.resume(); + } + }; + Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; + const self = this; + let i = 0; + let r; + let shouldWriteMore = true; + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && start + i < end) { + if (data[start + i] === DASH) { + ++i; + ++this._dashes; + } else { + if (this._dashes) { + buf = B_ONEDASH; } + this._dashes = 0; + break; } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + if (this._dashes === 2) { + if (start + i < end && this.listenerCount('trailer') !== 0) { + this.emit('trailer', data.slice(start + i, end)); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.summary = exports2.markdownSummary = exports2.SUMMARY_DOCS_URL = exports2.SUMMARY_ENV_VAR = void 0; - var os_1 = require('os'); - var fs_1 = require('fs'); - var { access, appendFile, writeFile } = fs_1.promises; - exports2.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; - exports2.SUMMARY_DOCS_URL = - 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; - var Summary = class { - constructor() { - this._buffer = ''; + this.reset(); + this._finished = true; + if (self._parts === 0) { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + } + } + if (this._dashes) { + return; + } } - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; + if (this._justMatched) { + this._justMatched = false; + } + if (!this._part) { + this._part = new PartStream(this._partOpts); + this._part._read = function (n) { + self._unpause(); + }; + if (this._isPreamble && this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part); + } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { + this.emit('part', this._part); + } else { + this._ignore(); + } + if (!this._isPreamble) { + this._inHeader = true; + } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { + shouldWriteMore = this._part.push(buf); } - const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error( - `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` - ); + shouldWriteMore = this._part.push(data.slice(start, end)); + if (!shouldWriteMore) { + this._pause = true; } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } catch (_a) { - throw new Error( - `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.` - ); + } else if (!this._isPreamble && this._inHeader) { + if (buf) { + this._hparser.push(buf); + } + r = this._hparser.push(data.slice(start, end)); + if (!this._inHeader && r !== void 0 && r < end) { + this._oninfo(false, data, start + r, end); } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - wrap(tag2, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag2}${htmlAttrs}>`; } - return `<${tag2}${htmlAttrs}>${content}`; - } - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); - return this.emptyBuffer(); - }); } - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); + if (isMatch) { + this._hparser.reset(); + if (this._isPreamble) { + this._isPreamble = false; + } else { + if (start !== end) { + ++this._parts; + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true; + self.emit('finish'); + self._realFinish = false; + } else { + self._unpause(); + } + } + }); + } + } + this._part.push(null); + this._part = void 0; + this._ignoreData = false; + this._justMatched = true; + this._dashes = 0; } - stringify() { - return this._buffer; + }; + Dicer.prototype._unpause = function () { + if (!this._pause) { + return; } - isEmptyBuffer() { - return this._buffer.length === 0; + this._pause = false; + if (this._cb) { + const cb = this._cb; + this._cb = void 0; + cb(); } - emptyBuffer() { - this._buffer = ''; - return this; + }; + module2.exports = Dicer; + } +}); + +// node_modules/@fastify/busboy/lib/utils/decodeText.js +var require_decodeText = __commonJS({ + 'node_modules/@fastify/busboy/lib/utils/decodeText.js'(exports2, module2) { + 'use strict'; + var utf8Decoder = new TextDecoder('utf-8'); + var textDecoders = /* @__PURE__ */ new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] + ]); + function getDecoder(charset) { + let lc; + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8; + case 'latin1': + case 'ascii': + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1; + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le; + case 'base64': + return decoders.base64; + default: + if (lc === void 0) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } } - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; + } + var decoders = { + utf8: (data, sourceEncoding) => { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.utf8Slice(0, data.length); + }, + latin1: (data, sourceEncoding) => { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + return data; + } + return data.latin1Slice(0, data.length); + }, + utf16le: (data, sourceEncoding) => { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.ucs2Slice(0, data.length); + }, + base64: (data, sourceEncoding) => { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + return data.base64Slice(0, data.length); + }, + other: (data, sourceEncoding) => { + if (data.length === 0) { + return ''; + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding); + } + if (textDecoders.has(exports2.toString())) { + try { + return textDecoders.get(exports2).decode(data); + } catch {} + } + return typeof data === 'string' ? data : data.toString(); } - addEOL() { - return this.addRaw(os_1.EOL); + }; + function decodeText(text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding); } - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); - } - addList(items, ordered = false) { - const tag2 = ordered ? 'ol' : 'ul'; - const listItems = items.map(item => this.wrap('li', item)).join(''); - const element = this.wrap(tag2, listItems); - return this.addRaw(element).addEOL(); + return text; + } + module2.exports = decodeText; + } +}); + +// node_modules/@fastify/busboy/lib/utils/parseParams.js +var require_parseParams = __commonJS({ + 'node_modules/@fastify/busboy/lib/utils/parseParams.js'(exports2, module2) { + 'use strict'; + var decodeText = require_decodeText(); + var RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g; + var EncodedLookup = { + '%00': '\0', + '%01': '', + '%02': '', + '%03': '', + '%04': '', + '%05': '', + '%06': '', + '%07': '\x07', + '%08': '\b', + '%09': ' ', + '%0a': '\n', + '%0A': '\n', + '%0b': '\v', + '%0B': '\v', + '%0c': '\f', + '%0C': '\f', + '%0d': '\r', + '%0D': '\r', + '%0e': '', + '%0E': '', + '%0f': '', + '%0F': '', + '%10': '', + '%11': '', + '%12': '', + '%13': '', + '%14': '', + '%15': '', + '%16': '', + '%17': '', + '%18': '', + '%19': '', + '%1a': '', + '%1A': '', + '%1b': '\x1B', + '%1B': '\x1B', + '%1c': '', + '%1C': '', + '%1d': '', + '%1D': '', + '%1e': '', + '%1E': '', + '%1f': '', + '%1F': '', + '%20': ' ', + '%21': '!', + '%22': '"', + '%23': '#', + '%24': '$', + '%25': '%', + '%26': '&', + '%27': "'", + '%28': '(', + '%29': ')', + '%2a': '*', + '%2A': '*', + '%2b': '+', + '%2B': '+', + '%2c': ',', + '%2C': ',', + '%2d': '-', + '%2D': '-', + '%2e': '.', + '%2E': '.', + '%2f': '/', + '%2F': '/', + '%30': '0', + '%31': '1', + '%32': '2', + '%33': '3', + '%34': '4', + '%35': '5', + '%36': '6', + '%37': '7', + '%38': '8', + '%39': '9', + '%3a': ':', + '%3A': ':', + '%3b': ';', + '%3B': ';', + '%3c': '<', + '%3C': '<', + '%3d': '=', + '%3D': '=', + '%3e': '>', + '%3E': '>', + '%3f': '?', + '%3F': '?', + '%40': '@', + '%41': 'A', + '%42': 'B', + '%43': 'C', + '%44': 'D', + '%45': 'E', + '%46': 'F', + '%47': 'G', + '%48': 'H', + '%49': 'I', + '%4a': 'J', + '%4A': 'J', + '%4b': 'K', + '%4B': 'K', + '%4c': 'L', + '%4C': 'L', + '%4d': 'M', + '%4D': 'M', + '%4e': 'N', + '%4E': 'N', + '%4f': 'O', + '%4F': 'O', + '%50': 'P', + '%51': 'Q', + '%52': 'R', + '%53': 'S', + '%54': 'T', + '%55': 'U', + '%56': 'V', + '%57': 'W', + '%58': 'X', + '%59': 'Y', + '%5a': 'Z', + '%5A': 'Z', + '%5b': '[', + '%5B': '[', + '%5c': '\\', + '%5C': '\\', + '%5d': ']', + '%5D': ']', + '%5e': '^', + '%5E': '^', + '%5f': '_', + '%5F': '_', + '%60': '`', + '%61': 'a', + '%62': 'b', + '%63': 'c', + '%64': 'd', + '%65': 'e', + '%66': 'f', + '%67': 'g', + '%68': 'h', + '%69': 'i', + '%6a': 'j', + '%6A': 'j', + '%6b': 'k', + '%6B': 'k', + '%6c': 'l', + '%6C': 'l', + '%6d': 'm', + '%6D': 'm', + '%6e': 'n', + '%6E': 'n', + '%6f': 'o', + '%6F': 'o', + '%70': 'p', + '%71': 'q', + '%72': 'r', + '%73': 's', + '%74': 't', + '%75': 'u', + '%76': 'v', + '%77': 'w', + '%78': 'x', + '%79': 'y', + '%7a': 'z', + '%7A': 'z', + '%7b': '{', + '%7B': '{', + '%7c': '|', + '%7C': '|', + '%7d': '}', + '%7D': '}', + '%7e': '~', + '%7E': '~', + '%7f': '\x7F', + '%7F': '\x7F', + '%80': '\x80', + '%81': '\x81', + '%82': '\x82', + '%83': '\x83', + '%84': '\x84', + '%85': '\x85', + '%86': '\x86', + '%87': '\x87', + '%88': '\x88', + '%89': '\x89', + '%8a': '\x8A', + '%8A': '\x8A', + '%8b': '\x8B', + '%8B': '\x8B', + '%8c': '\x8C', + '%8C': '\x8C', + '%8d': '\x8D', + '%8D': '\x8D', + '%8e': '\x8E', + '%8E': '\x8E', + '%8f': '\x8F', + '%8F': '\x8F', + '%90': '\x90', + '%91': '\x91', + '%92': '\x92', + '%93': '\x93', + '%94': '\x94', + '%95': '\x95', + '%96': '\x96', + '%97': '\x97', + '%98': '\x98', + '%99': '\x99', + '%9a': '\x9A', + '%9A': '\x9A', + '%9b': '\x9B', + '%9B': '\x9B', + '%9c': '\x9C', + '%9C': '\x9C', + '%9d': '\x9D', + '%9D': '\x9D', + '%9e': '\x9E', + '%9E': '\x9E', + '%9f': '\x9F', + '%9F': '\x9F', + '%a0': '\xA0', + '%A0': '\xA0', + '%a1': '\xA1', + '%A1': '\xA1', + '%a2': '\xA2', + '%A2': '\xA2', + '%a3': '\xA3', + '%A3': '\xA3', + '%a4': '\xA4', + '%A4': '\xA4', + '%a5': '\xA5', + '%A5': '\xA5', + '%a6': '\xA6', + '%A6': '\xA6', + '%a7': '\xA7', + '%A7': '\xA7', + '%a8': '\xA8', + '%A8': '\xA8', + '%a9': '\xA9', + '%A9': '\xA9', + '%aa': '\xAA', + '%Aa': '\xAA', + '%aA': '\xAA', + '%AA': '\xAA', + '%ab': '\xAB', + '%Ab': '\xAB', + '%aB': '\xAB', + '%AB': '\xAB', + '%ac': '\xAC', + '%Ac': '\xAC', + '%aC': '\xAC', + '%AC': '\xAC', + '%ad': '\xAD', + '%Ad': '\xAD', + '%aD': '\xAD', + '%AD': '\xAD', + '%ae': '\xAE', + '%Ae': '\xAE', + '%aE': '\xAE', + '%AE': '\xAE', + '%af': '\xAF', + '%Af': '\xAF', + '%aF': '\xAF', + '%AF': '\xAF', + '%b0': '\xB0', + '%B0': '\xB0', + '%b1': '\xB1', + '%B1': '\xB1', + '%b2': '\xB2', + '%B2': '\xB2', + '%b3': '\xB3', + '%B3': '\xB3', + '%b4': '\xB4', + '%B4': '\xB4', + '%b5': '\xB5', + '%B5': '\xB5', + '%b6': '\xB6', + '%B6': '\xB6', + '%b7': '\xB7', + '%B7': '\xB7', + '%b8': '\xB8', + '%B8': '\xB8', + '%b9': '\xB9', + '%B9': '\xB9', + '%ba': '\xBA', + '%Ba': '\xBA', + '%bA': '\xBA', + '%BA': '\xBA', + '%bb': '\xBB', + '%Bb': '\xBB', + '%bB': '\xBB', + '%BB': '\xBB', + '%bc': '\xBC', + '%Bc': '\xBC', + '%bC': '\xBC', + '%BC': '\xBC', + '%bd': '\xBD', + '%Bd': '\xBD', + '%bD': '\xBD', + '%BD': '\xBD', + '%be': '\xBE', + '%Be': '\xBE', + '%bE': '\xBE', + '%BE': '\xBE', + '%bf': '\xBF', + '%Bf': '\xBF', + '%bF': '\xBF', + '%BF': '\xBF', + '%c0': '\xC0', + '%C0': '\xC0', + '%c1': '\xC1', + '%C1': '\xC1', + '%c2': '\xC2', + '%C2': '\xC2', + '%c3': '\xC3', + '%C3': '\xC3', + '%c4': '\xC4', + '%C4': '\xC4', + '%c5': '\xC5', + '%C5': '\xC5', + '%c6': '\xC6', + '%C6': '\xC6', + '%c7': '\xC7', + '%C7': '\xC7', + '%c8': '\xC8', + '%C8': '\xC8', + '%c9': '\xC9', + '%C9': '\xC9', + '%ca': '\xCA', + '%Ca': '\xCA', + '%cA': '\xCA', + '%CA': '\xCA', + '%cb': '\xCB', + '%Cb': '\xCB', + '%cB': '\xCB', + '%CB': '\xCB', + '%cc': '\xCC', + '%Cc': '\xCC', + '%cC': '\xCC', + '%CC': '\xCC', + '%cd': '\xCD', + '%Cd': '\xCD', + '%cD': '\xCD', + '%CD': '\xCD', + '%ce': '\xCE', + '%Ce': '\xCE', + '%cE': '\xCE', + '%CE': '\xCE', + '%cf': '\xCF', + '%Cf': '\xCF', + '%cF': '\xCF', + '%CF': '\xCF', + '%d0': '\xD0', + '%D0': '\xD0', + '%d1': '\xD1', + '%D1': '\xD1', + '%d2': '\xD2', + '%D2': '\xD2', + '%d3': '\xD3', + '%D3': '\xD3', + '%d4': '\xD4', + '%D4': '\xD4', + '%d5': '\xD5', + '%D5': '\xD5', + '%d6': '\xD6', + '%D6': '\xD6', + '%d7': '\xD7', + '%D7': '\xD7', + '%d8': '\xD8', + '%D8': '\xD8', + '%d9': '\xD9', + '%D9': '\xD9', + '%da': '\xDA', + '%Da': '\xDA', + '%dA': '\xDA', + '%DA': '\xDA', + '%db': '\xDB', + '%Db': '\xDB', + '%dB': '\xDB', + '%DB': '\xDB', + '%dc': '\xDC', + '%Dc': '\xDC', + '%dC': '\xDC', + '%DC': '\xDC', + '%dd': '\xDD', + '%Dd': '\xDD', + '%dD': '\xDD', + '%DD': '\xDD', + '%de': '\xDE', + '%De': '\xDE', + '%dE': '\xDE', + '%DE': '\xDE', + '%df': '\xDF', + '%Df': '\xDF', + '%dF': '\xDF', + '%DF': '\xDF', + '%e0': '\xE0', + '%E0': '\xE0', + '%e1': '\xE1', + '%E1': '\xE1', + '%e2': '\xE2', + '%E2': '\xE2', + '%e3': '\xE3', + '%E3': '\xE3', + '%e4': '\xE4', + '%E4': '\xE4', + '%e5': '\xE5', + '%E5': '\xE5', + '%e6': '\xE6', + '%E6': '\xE6', + '%e7': '\xE7', + '%E7': '\xE7', + '%e8': '\xE8', + '%E8': '\xE8', + '%e9': '\xE9', + '%E9': '\xE9', + '%ea': '\xEA', + '%Ea': '\xEA', + '%eA': '\xEA', + '%EA': '\xEA', + '%eb': '\xEB', + '%Eb': '\xEB', + '%eB': '\xEB', + '%EB': '\xEB', + '%ec': '\xEC', + '%Ec': '\xEC', + '%eC': '\xEC', + '%EC': '\xEC', + '%ed': '\xED', + '%Ed': '\xED', + '%eD': '\xED', + '%ED': '\xED', + '%ee': '\xEE', + '%Ee': '\xEE', + '%eE': '\xEE', + '%EE': '\xEE', + '%ef': '\xEF', + '%Ef': '\xEF', + '%eF': '\xEF', + '%EF': '\xEF', + '%f0': '\xF0', + '%F0': '\xF0', + '%f1': '\xF1', + '%F1': '\xF1', + '%f2': '\xF2', + '%F2': '\xF2', + '%f3': '\xF3', + '%F3': '\xF3', + '%f4': '\xF4', + '%F4': '\xF4', + '%f5': '\xF5', + '%F5': '\xF5', + '%f6': '\xF6', + '%F6': '\xF6', + '%f7': '\xF7', + '%F7': '\xF7', + '%f8': '\xF8', + '%F8': '\xF8', + '%f9': '\xF9', + '%F9': '\xF9', + '%fa': '\xFA', + '%Fa': '\xFA', + '%fA': '\xFA', + '%FA': '\xFA', + '%fb': '\xFB', + '%Fb': '\xFB', + '%fB': '\xFB', + '%FB': '\xFB', + '%fc': '\xFC', + '%Fc': '\xFC', + '%fC': '\xFC', + '%FC': '\xFC', + '%fd': '\xFD', + '%Fd': '\xFD', + '%fD': '\xFD', + '%FD': '\xFD', + '%fe': '\xFE', + '%Fe': '\xFE', + '%fE': '\xFE', + '%FE': '\xFE', + '%ff': '\xFF', + '%Ff': '\xFF', + '%fF': '\xFF', + '%FF': '\xFF' + }; + function encodedReplacer(match) { + return EncodedLookup[match]; + } + var STATE_KEY = 0; + var STATE_VALUE = 1; + var STATE_CHARSET = 2; + var STATE_LANG = 3; + function parseParams(str) { + const res = []; + let state = STATE_KEY; + let charset = ''; + let inquote = false; + let escaping = false; + let p = 0; + let tmp = ''; + const len = str.length; + for (var i = 0; i < len; ++i) { + const char = str[i]; + if (char === '\\' && inquote) { + if (escaping) { + escaping = false; + } else { + escaping = true; + continue; + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false; + state = STATE_KEY; + } else { + inquote = true; + } + continue; + } else { + escaping = false; + } + } else { + if (escaping && inquote) { + tmp += '\\'; + } + escaping = false; + if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG; + charset = tmp.substring(1); + } else { + state = STATE_VALUE; + } + tmp = ''; + continue; + } else if (state === STATE_KEY && (char === '*' || char === '=') && res.length) { + state = char === '*' ? STATE_CHARSET : STATE_VALUE; + res[p] = [tmp, void 0]; + tmp = ''; + continue; + } else if (!inquote && char === ';') { + state = STATE_KEY; + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); + } + charset = ''; + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8'); + } + if (res[p] === void 0) { + res[p] = tmp; + } else { + res[p][1] = tmp; + } + tmp = ''; + ++p; + continue; + } else if (!inquote && (char === ' ' || char === ' ')) { + continue; + } + } + tmp += char; } - addTable(rows) { - const tableBody = rows - .map(row => { - const cells = row - .map(cell => { - if (typeof cell === 'string') { - return this.wrap('td', cell); - } - const { header, data, colspan, rowspan } = cell; - const tag2 = header ? 'th' : 'td'; - const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); - return this.wrap(tag2, data, attrs); - }) - .join(''); - return this.wrap('tr', cells); - }) - .join(''); - const element = this.wrap('table', tableBody); - return this.addRaw(element).addEOL(); + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8'); } - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); + if (res[p] === void 0) { + if (tmp) { + res[p] = tmp; + } + } else { + res[p][1] = tmp; } - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); + return res; + } + module2.exports = parseParams; + } +}); + +// node_modules/@fastify/busboy/lib/utils/basename.js +var require_basename = __commonJS({ + 'node_modules/@fastify/busboy/lib/utils/basename.js'(exports2, module2) { + 'use strict'; + module2.exports = function basename(path) { + if (typeof path !== 'string') { + return ''; } - addHeading(text, level) { - const tag2 = `h${level}`; - const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag2) ? tag2 : 'h1'; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); + for (var i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 47: + case 92: + path = path.slice(i + 1); + return path === '..' || path === '.' ? '' : path; + } } - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); + return path === '..' || path === '.' ? '' : path; + }; + } +}); + +// node_modules/@fastify/busboy/lib/types/multipart.js +var require_multipart = __commonJS({ + 'node_modules/@fastify/busboy/lib/types/multipart.js'(exports2, module2) { + 'use strict'; + var { Readable } = require('node:stream'); + var { inherits } = require('node:util'); + var Dicer = require_Dicer(); + var parseParams = require_parseParams(); + var decodeText = require_decodeText(); + var basename = require_basename(); + var getLimit = require_getLimit(); + var RE_BOUNDARY = /^boundary$/i; + var RE_FIELD = /^form-data$/i; + var RE_CHARSET = /^charset$/i; + var RE_FILENAME = /^filename$/i; + var RE_NAME = /^name$/i; + Multipart.detect = /^multipart\/form-data/i; + function Multipart(boy, cfg) { + let i; + let len; + const self = this; + let boundary; + const limits = cfg.limits; + const isPartAFile = + cfg.isPartAFile || + ((fieldName, contentType, fileName) => contentType === 'application/octet-stream' || fileName !== void 0); + const parsedConType = cfg.parsedConType || []; + const defCharset = cfg.defCharset || 'utf8'; + const preservePath = cfg.preservePath; + const fileOpts = { highWaterMark: cfg.fileHwm }; + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1]; + break; + } } - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); + function checkFinished() { + if (nends === 0 && finished && !boy._done) { + finished = false; + self.end(); + } } - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); + if (typeof boundary !== 'string') { + throw new Error('Multipart: Boundary not found'); + } + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity); + const filesLimit = getLimit(limits, 'files', Infinity); + const fieldsLimit = getLimit(limits, 'fields', Infinity); + const partsLimit = getLimit(limits, 'parts', Infinity); + const headerPairsLimit = getLimit(limits, 'headerPairs', 2e3); + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024); + let nfiles = 0; + let nfields = 0; + let nends = 0; + let curFile; + let curField; + let finished = false; + this._needDrain = false; + this._pause = false; + this._cb = void 0; + this._nparts = 0; + this._boy = boy; + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + }; + this.parser = new Dicer(parserCfg); + this.parser + .on('drain', function () { + self._needDrain = false; + if (self._cb && !self._pause) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }) + .on('part', function onPart(part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart); + self.parser.on('part', skipPart); + boy.hitPartsLimit = true; + boy.emit('partsLimit'); + return skipPart(part); + } + if (curField) { + const field = curField; + field.emit('end'); + field.removeAllListeners('end'); + } + part + .on('header', function (header) { + let contype; + let fieldname; + let parsed; + let charset; + let encoding; + let filename; + let nsize = 0; + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]); + if (parsed[0]) { + contype = parsed[0].toLowerCase(); + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase(); + break; + } + } + } + } + if (contype === void 0) { + contype = 'text/plain'; + } + if (charset === void 0) { + charset = defCharset; + } + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]); + if (!RE_FIELD.test(parsed[0])) { + return skipPart(part); + } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1]; + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1]; + if (!preservePath) { + filename = basename(filename); + } + } + } + } else { + return skipPart(part); + } + if (header['content-transfer-encoding']) { + encoding = header['content-transfer-encoding'][0].toLowerCase(); + } else { + encoding = '7bit'; + } + let onData, onEnd; + if (isPartAFile(fieldname, contype, filename)) { + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true; + boy.emit('filesLimit'); + } + return skipPart(part); + } + ++nfiles; + if (boy.listenerCount('file') === 0) { + self.parser._ignore(); + return; + } + ++nends; + const file = new FileStream(fileOpts); + curFile = file; + file.on('end', function () { + --nends; + self._pause = false; + checkFinished(); + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }); + file._read = function (n) { + if (!self._pause) { + return; + } + self._pause = false; + if (self._cb && !self._needDrain) { + const cb = self._cb; + self._cb = void 0; + cb(); + } + }; + boy.emit('file', fieldname, file, filename, encoding, contype); + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length; + if (extralen > 0) { + file.push(data.slice(0, extralen)); + } + file.truncated = true; + file.bytesRead = fileSizeLimit; + part.removeAllListeners('data'); + file.emit('limit'); + return; + } else if (!file.push(data)) { + self._pause = true; + } + file.bytesRead = nsize; + }; + onEnd = function () { + curFile = void 0; + file.push(null); + }; + } else { + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true; + boy.emit('fieldsLimit'); + } + return skipPart(part); + } + ++nfields; + ++nends; + let buffer = ''; + let truncated = false; + curField = part; + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = fieldSizeLimit - (nsize - data.length); + buffer += data.toString('binary', 0, extralen); + truncated = true; + part.removeAllListeners('data'); + } else { + buffer += data.toString('binary'); + } + }; + onEnd = function () { + curField = void 0; + if (buffer.length) { + buffer = decodeText(buffer, 'binary', charset); + } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype); + --nends; + checkFinished(); + }; + } + part._readableState.sync = false; + part.on('data', onData); + part.on('end', onEnd); + }) + .on('error', function (err) { + if (curFile) { + curFile.emit('error', err); + } + }); + }) + .on('error', function (err) { + boy.emit('error', err); + }) + .on('finish', function () { + finished = true; + checkFinished(); + }); + } + Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk); + if (r && !this._pause) { + cb(); + } else { + this._needDrain = !r; + this._cb = cb; } - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); + }; + Multipart.prototype.end = function () { + const self = this; + if (self.parser.writable) { + self.parser.end(); + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true; + self._boy.emit('finish'); + }); } }; - var _summary = new Summary(); - exports2.markdownSummary = _summary; - exports2.summary = _summary; + function skipPart(part) { + part.resume(); + } + function FileStream(opts) { + Readable.call(this, opts); + this.bytesRead = 0; + this.truncated = false; + } + inherits(FileStream, Readable); + FileStream.prototype._read = function (n) {}; + module2.exports = Multipart; } }); -// node_modules/@actions/core/lib/path-utils.js -var require_path_utils = __commonJS({ - 'node_modules/@actions/core/lib/path-utils.js'(exports2) { +// node_modules/@fastify/busboy/lib/utils/Decoder.js +var require_Decoder = __commonJS({ + 'node_modules/@fastify/busboy/lib/utils/Decoder.js'(exports2, module2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var RE_PLUS = /\+/g; + var HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + ]; + function Decoder() { + this.buffer = void 0; + } + Decoder.prototype.write = function (str) { + str = str.replace(RE_PLUS, ' '); + let res = ''; + let i = 0; + let p = 0; + const len = str.length; + for (; i < len; ++i) { + if (this.buffer !== void 0) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer; + this.buffer = void 0; + --i; + } else { + this.buffer += str[i]; + ++p; + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)); + this.buffer = void 0; + } } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i); + p = i; } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + this.buffer = ''; + ++p; } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.toPlatformPath = exports2.toWin32Path = exports2.toPosixPath = void 0; - var path = __importStar(require('path')); - function toPosixPath(pth) { - return pth.replace(/[\\]/g, '/'); - } - exports2.toPosixPath = toPosixPath; - function toWin32Path(pth) { - return pth.replace(/[/]/g, '\\'); - } - exports2.toWin32Path = toWin32Path; - function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); - } - exports2.toPlatformPath = toPlatformPath; + } + if (p < len && this.buffer === void 0) { + res += str.substring(p); + } + return res; + }; + Decoder.prototype.reset = function () { + this.buffer = void 0; + }; + module2.exports = Decoder; } }); -// node_modules/@actions/core/lib/core.js -var require_core = __commonJS({ - 'node_modules/@actions/core/lib/core.js'(exports2) { +// node_modules/@fastify/busboy/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + 'node_modules/@fastify/busboy/lib/types/urlencoded.js'(exports2, module2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var Decoder = require_Decoder(); + var decodeText = require_decodeText(); + var getLimit = require_getLimit(); + var RE_CHARSET = /^charset$/i; + UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; + function UrlEncoded(boy, cfg) { + const limits = cfg.limits; + const parsedConType = cfg.parsedConType; + this.boy = boy; + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100); + this.fieldsLimit = getLimit(limits, 'fields', Infinity); + let charset; + for (var i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase(); + break; + } + } + if (charset === void 0) { + charset = cfg.defCharset || 'utf8'; + } + this.decoder = new Decoder(); + this.charset = charset; + this._fields = 0; + this._state = 'key'; + this._checkingBytes = true; + this._bytesKey = 0; + this._bytesVal = 0; + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._hitLimit = false; + } + UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true; + this.boy.emit('fieldsLimit'); + } + return cb(); + } + let idxeq; + let idxamp; + let i; + let p = 0; + const len = data.length; + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; + } + if (data[i] === 61) { + idxeq = i; + break; + } else if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesKey; + } } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); + if (idxeq !== void 0) { + if (idxeq > p) { + this._key += this.decoder.write(data.toString('binary', p, idxeq)); + } + this._state = 'val'; + this._hitLimit = false; + this._checkingBytes = true; + this._val = ''; + this._bytesVal = 0; + this._valTrunc = false; + this.decoder.reset(); + p = idxeq + 1; + } else if (idxamp !== void 0) { + ++this._fields; + let key; + const keyTrunc = this._keyTrunc; + if (idxamp > p) { + key = this._key += this.decoder.write(data.toString('binary', p, idxamp)); + } else { + key = this._key; + } + this._hitLimit = false; + this._checkingBytes = true; + this._key = ''; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), '', keyTrunc, false); + } + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._key += this.decoder.write(data.toString('binary', p, i)); + } + p = i; + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + this._checkingBytes = false; + this._keyTrunc = true; + } + } else { + if (p < len) { + this._key += this.decoder.write(data.toString('binary', p)); + } + p = len; } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + } else { + idxamp = void 0; + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { + ++p; } - } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); + if (data[i] === 38) { + idxamp = i; + break; + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true; + break; + } else if (this._checkingBytes) { + ++this._bytesVal; } } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + if (idxamp !== void 0) { + ++this._fields; + if (idxamp > p) { + this._val += this.decoder.write(data.toString('binary', p, idxamp)); + } + this.boy.emit( + 'field', + decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc + ); + this._state = 'key'; + this._hitLimit = false; + this._checkingBytes = true; + this._key = ''; + this._bytesKey = 0; + this._keyTrunc = false; + this.decoder.reset(); + p = idxamp + 1; + if (this._fields === this.fieldsLimit) { + return cb(); + } + } else if (this._hitLimit) { + if (i > p) { + this._val += this.decoder.write(data.toString('binary', p, i)); + } + p = i; + if ((this._val === '' && this.fieldSizeLimit === 0) || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + this._checkingBytes = false; + this._valTrunc = true; + } + } else { + if (p < len) { + this._val += this.decoder.write(data.toString('binary', p)); + } + p = len; } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getIDToken = - exports2.getState = - exports2.saveState = - exports2.group = - exports2.endGroup = - exports2.startGroup = - exports2.info = - exports2.notice = - exports2.warning = - exports2.error = - exports2.debug = - exports2.isDebug = - exports2.setFailed = - exports2.setCommandEcho = - exports2.setOutput = - exports2.getBooleanInput = - exports2.getMultilineInput = - exports2.getInput = - exports2.addPath = - exports2.setSecret = - exports2.exportVariable = - exports2.ExitCode = - void 0; - var command_1 = require_command(); - var file_command_1 = require_file_command(); - var utils_1 = require_utils(); - var os = __importStar(require('os')); - var path = __importStar(require('path')); - var oidc_utils_1 = require_oidc_utils(); - var ExitCode; - (function (ExitCode2) { - ExitCode2[(ExitCode2['Success'] = 0)] = 'Success'; - ExitCode2[(ExitCode2['Failure'] = 1)] = 'Failure'; - })((ExitCode = exports2.ExitCode || (exports2.ExitCode = {}))); - function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + } } - command_1.issueCommand('set-env', { name }, convertedVal); + cb(); + }; + UrlEncoded.prototype.end = function () { + if (this.boy._done) { + return; + } + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), '', this._keyTrunc, false); + } else if (this._state === 'val') { + this.boy.emit( + 'field', + decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc + ); + } + this.boy._done = true; + this.boy.emit('finish'); + }; + module2.exports = UrlEncoded; + } +}); + +// node_modules/@fastify/busboy/lib/main.js +var require_main = __commonJS({ + 'node_modules/@fastify/busboy/lib/main.js'(exports2, module2) { + 'use strict'; + var WritableStream = require('node:stream').Writable; + var { inherits } = require('node:util'); + var Dicer = require_Dicer(); + var MultipartParser = require_multipart(); + var UrlencodedParser = require_urlencoded(); + var parseParams = require_parseParams(); + function Busboy(opts) { + if (!(this instanceof Busboy)) { + return new Busboy(opts); + } + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.'); + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.'); + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.'); + } + const { headers, ...streamOptions } = opts; + this.opts = { + autoDestroy: false, + ...streamOptions + }; + WritableStream.call(this, this.opts); + this._done = false; + this._parser = this.getParserByHeaders(headers); + this._finished = false; } - exports2.exportVariable = exportVariable; - function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + inherits(Busboy, WritableStream); + Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end(); + return; + } else if (this._finished) { + return; + } + this._finished = true; + } + WritableStream.prototype.emit.apply(this, arguments); + }; + Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']); + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + }; + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg); + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg); + } + throw new Error('Unsupported Content-Type.'); + }; + Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb); + }; + module2.exports = Busboy; + module2.exports.default = Busboy; + module2.exports.Busboy = Busboy; + module2.exports.Dicer = Dicer; + } +}); + +// node_modules/undici/lib/fetch/constants.js +var require_constants2 = __commonJS({ + 'node_modules/undici/lib/fetch/constants.js'(exports2, module2) { + 'use strict'; + var { MessageChannel, receiveMessageOnPort } = require('worker_threads'); + var corsSafeListedMethods = ['GET', 'HEAD', 'POST']; + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = [101, 204, 205, 304]; + var redirectStatus = [301, 302, 303, 307, 308]; + var redirectStatusSet = new Set(redirectStatus); + var badPorts = [ + '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', + '5060', + '5061', + '6000', + '6566', + '6665', + '6666', + '6667', + '6668', + '6669', + '6697', + '10080' + ]; + var badPortsSet = new Set(badPorts); + var referrerPolicy = [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' + ]; + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = ['follow', 'manual', 'error']; + var safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']; + var safeMethodsSet = new Set(safeMethods); + var requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']; + var requestCredentials = ['omit', 'same-origin', 'include']; + var requestCache = ['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached']; + var requestBodyHeader = [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' + ]; + var requestDuplex = ['half']; + var forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']; + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = [ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' + ]; + var subresourceSet = new Set(subresource); + var DOMException2 = + globalThis.DOMException ?? + (() => { + try { + atob('~'); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } + })(); + var channel; + var structuredClone = + globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone2(value, options = void 0) { + if (arguments.length === 0) { + throw new TypeError('missing argument'); + } + if (!channel) { + channel = new MessageChannel(); + } + channel.port1.unref(); + channel.port2.unref(); + channel.port1.postMessage(value, options?.transfer); + return receiveMessageOnPort(channel.port2).message; + }; + module2.exports = { + DOMException: DOMException2, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet + }; + } +}); + +// node_modules/undici/lib/fetch/global.js +var require_global = __commonJS({ + 'node_modules/undici/lib/fetch/global.js'(exports2, module2) { + 'use strict'; + var globalOrigin = Symbol.for('undici.globalOrigin.1'); + function getGlobalOrigin() { + return globalThis[globalOrigin]; } - exports2.setSecret = setSecret; - function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueFileCommand('PATH', inputPath); - } else { - command_1.issueCommand('add-path', {}, inputPath); + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false + }); + return; } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); } - exports2.addPath = addPath; - function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); + module2.exports = { + getGlobalOrigin, + setGlobalOrigin + }; + } +}); + +// node_modules/undici/lib/fetch/util.js +var require_util2 = __commonJS({ + 'node_modules/undici/lib/fetch/util.js'(exports2, module2) { + 'use strict'; + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants2(); + var { getGlobalOrigin } = require_global(); + var { performance: performance2 } = require('perf_hooks'); + var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); + var assert = require('assert'); + var { isUint8Array } = require('util/types'); + var supportedHashes = []; + var crypto4; + try { + crypto4 = require('crypto'); + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']; + supportedHashes = crypto4.getHashes().filter(hash => possibleRelevantHashes.includes(hash)); + } catch {} + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; } - if (options && options.trimWhitespace === false) { - return val; + let location = response.headersList.get('location'); + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)); } - return val.trim(); + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; } - exports2.getInput = getInput; - function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - if (options && options.trimWhitespace === false) { - return inputs; + function requestCurrentURL(request) { + return request.urlList[request.urlList.length - 1]; + } + function requestBadPort(request) { + const url = requestCurrentURL(request); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked'; } - return inputs.map(input => input.trim()); + return 'allowed'; } - exports2.getMultilineInput = getMultilineInput; - function getBooleanInput(name, options) { - const trueValue = ['true', 'True', 'TRUE']; - const falseValue = ['false', 'False', 'FALSE']; - const val = getInput(name, options); - if (trueValue.includes(val)) return true; - if (falseValue.includes(val)) return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} -Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); + function isErrorLike(object) { + return object instanceof Error || object?.constructor?.name === 'Error' || object?.constructor?.name === 'DOMException'; } - exports2.getBooleanInput = getBooleanInput; - function setOutput(name, value) { - const filePath = process.env['GITHUB_OUTPUT'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if ( + !( + c === 9 || // HTAB + (c >= 32 && c <= 126) || // SP / VCHAR + (c >= 128 && c <= 255) + ) + ) { + return false; + } } - process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); + return true; } - exports2.setOutput = setOutput; - function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); + function isTokenCharCode(c) { + switch (c) { + 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 c >= 33 && c <= 126; + } } - exports2.setCommandEcho = setCommandEcho; - function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); + function isValidHTTPToken(characters) { + if (characters.length === 0) { + return false; + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false; + } + } + return true; } - exports2.setFailed = setFailed; - function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; + function isValidHeaderName(potentialValue) { + return isValidHTTPToken(potentialValue); } - exports2.isDebug = isDebug; - function debug(message) { - command_1.issueCommand('debug', {}, message); + function isValidHeaderValue(potentialValue) { + if ( + potentialValue.startsWith(' ') || + potentialValue.startsWith(' ') || + potentialValue.endsWith(' ') || + potentialValue.endsWith(' ') + ) { + return false; + } + if (potentialValue.includes('\0') || potentialValue.includes('\r') || potentialValue.includes('\n')) { + return false; + } + return true; } - exports2.debug = debug; - function error(message, properties = {}) { - command_1.issueCommand( - 'error', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); + function setRequestReferrerPolicyOnRedirect(request, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get('referrer-policy') ?? '').split(','); + let policy = ''; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token2 = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token2)) { + policy = token2; + break; + } + } + } + if (policy !== '') { + request.referrerPolicy = policy; + } } - exports2.error = error; - function warning(message, properties = {}) { - command_1.issueCommand( - 'warning', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); + function crossOriginResourcePolicyCheck() { + return 'allowed'; } - exports2.warning = warning; - function notice(message, properties = {}) { - command_1.issueCommand( - 'notice', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); + function corsCheck() { + return 'success'; } - exports2.notice = notice; - function info(message) { - process.stdout.write(message + os.EOL); + function TAOCheck() { + return 'success'; } - exports2.info = info; - function startGroup(name) { - command_1.issue('group', name); - } - exports2.startGroup = startGroup; - function endGroup() { - command_1.issue('endgroup'); + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set('sec-fetch-mode', header); } - exports2.endGroup = endGroup; - function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } finally { - endGroup(); + function appendRequestOriginHeader(request) { + let serializedOrigin = request.origin; + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin); + } + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + switch (request.referrerPolicy) { + case 'no-referrer': + serializedOrigin = null; + break; + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + case 'same-origin': + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + default: + } + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin); } - return result; - }); - } - exports2.group = group; - function saveState(name, value) { - const filePath = process.env['GITHUB_STATE'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); } - command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); } - exports2.saveState = saveState; - function getState(name) { - return process.env[`STATE_${name}`] || ''; + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return performance2.now(); } - exports2.getState = getState; - function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; } - exports2.getIDToken = getIDToken; - var summary_1 = require_summary(); - Object.defineProperty(exports2, 'summary', { - enumerable: true, - get: function () { - return summary_1.summary; + function makePolicyContainer() { + return { + referrerPolicy: 'strict-origin-when-cross-origin' + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request) { + const policy = request.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request.referrer === 'client') { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer'; + } + referrerSource = new URL(globalOrigin); + } else if (request.referrer instanceof URL) { + referrerSource = request.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + const areSameOrigin = sameOrigin(request, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url); + switch (policy) { + case 'origin': + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case 'unsafe-url': + return referrerURL; + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer'; + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin; + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer'; + } + return referrerOrigin; + } + case 'strict-origin': + case 'no-referrer-when-downgrade': + default: + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin; } - }); - var summary_2 = require_summary(); - Object.defineProperty(exports2, 'markdownSummary', { - enumerable: true, - get: function () { - return summary_2.markdownSummary; + } + function stripURLForReferrer(url, originOnly) { + assert(url instanceof URL); + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer'; } - }); - var path_utils_1 = require_path_utils(); - Object.defineProperty(exports2, 'toPosixPath', { - enumerable: true, - get: function () { - return path_utils_1.toPosixPath; + url.username = ''; + url.password = ''; + url.hash = ''; + if (originOnly) { + url.pathname = ''; + url.search = ''; } - }); - Object.defineProperty(exports2, 'toWin32Path', { - enumerable: true, - get: function () { - return path_utils_1.toWin32Path; + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; } - }); - Object.defineProperty(exports2, 'toPlatformPath', { - enumerable: true, - get: function () { - return path_utils_1.toPlatformPath; + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true; } - }); - } -}); - -// node_modules/@actions/github/lib/context.js -var require_context = __commonJS({ - 'node_modules/@actions/github/lib/context.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.Context = void 0; - var fs_1 = require('fs'); - var os_1 = require('os'); - var Context = class { - constructor() { - var _a, _b, _c; - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + if (url.protocol === 'data:') return true; + if (url.protocol === 'file:') return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === 'null') return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true; + } + if ( + /^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + originAsURL.hostname === 'localhost' || + originAsURL.hostname.includes('localhost.') || + originAsURL.hostname.endsWith('.localhost') + ) { + return true; + } + return false; + } + } + function bytesMatch(bytes, metadataList) { + if (crypto4 === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === 'no metadata') { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const strongest = getStrongestMetadata(parsedMetadata); + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest); + for (const item of metadata) { + const algorithm = item.algo; + const expectedValue = item.hash; + let actualValue = crypto4.createHash(algorithm).update(bytes).digest('base64'); + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2); } else { - const path = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); + actualValue = actualValue.slice(0, -1); } } - this.eventName = process.env.GITHUB_EVENT_NAME; - this.sha = process.env.GITHUB_SHA; - this.ref = process.env.GITHUB_REF; - this.workflow = process.env.GITHUB_WORKFLOW; - this.action = process.env.GITHUB_ACTION; - this.actor = process.env.GITHUB_ACTOR; - this.job = process.env.GITHUB_JOB; - this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; - this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; - this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; - } - get issue() { - const payload = this.payload; - return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + if (compareBase64Mixed(actualValue, expectedValue)) { + return true; + } } - get repo() { - if (process.env.GITHUB_REPOSITORY) { - const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); - return { owner, repo }; + return false; + } + var parseHashWithOptions = + /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + for (const token2 of metadata.split(' ')) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token2); + if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) { + continue; } - if (this.payload.repository) { - return { - owner: this.payload.repository.owner.login, - repo: this.payload.repository.name - }; + const algorithm = parsedToken.groups.algo.toLowerCase(); + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups); } - throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); } - }; - exports2.Context = Context; - } -}); - -// node_modules/@actions/github/lib/internal/utils.js -var require_utils2 = __commonJS({ - 'node_modules/@actions/github/lib/internal/utils.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getApiBaseUrl = exports2.getProxyAgent = exports2.getAuthString = void 0; - var httpClient = __importStar(require_lib()); - function getAuthString(token2, options) { - if (!token2 && !options.auth) { - throw new Error('Parameter token or opts.auth is required'); - } else if (token2 && options.auth) { - throw new Error('Parameters token and opts.auth may not both be specified'); + if (empty === true) { + return 'no metadata'; } - return typeof options.auth === 'string' ? options.auth : `token ${token2}`; + return result; } - exports2.getAuthString = getAuthString; - function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); + function getStrongestMetadata(metadataList) { + let algorithm = metadataList[0].algo; + if (algorithm[3] === '5') { + return algorithm; + } + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i]; + if (metadata.algo[3] === '5') { + algorithm = 'sha512'; + break; + } else if (algorithm[3] === '3') { + continue; + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384'; + } + } + return algorithm; } - exports2.getProxyAgent = getProxyAgent; - function getApiBaseUrl() { - return process.env['GITHUB_API_URL'] || 'https://api.github.com'; + function filterMetadataListByAlgorithm(metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList; + } + let pos = 0; + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i]; + } + } + metadataList.length = pos; + return metadataList; } - exports2.getApiBaseUrl = getApiBaseUrl; - } -}); - -// node_modules/universal-user-agent/dist-node/index.js -var require_dist_node = __commonJS({ - 'node_modules/universal-user-agent/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function getUserAgent() { - if (typeof navigator === 'object' && 'userAgent' in navigator) { - return navigator.userAgent; + function compareBase64Mixed(actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false; } - if (typeof process === 'object' && 'version' in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ((actualValue[i] === '+' && expectedValue[i] === '-') || (actualValue[i] === '/' && expectedValue[i] === '_')) { + continue; + } + return false; + } } - return ''; + return true; } - exports2.getUserAgent = getUserAgent; - } -}); - -// node_modules/before-after-hook/lib/register.js -var require_register = __commonJS({ - 'node_modules/before-after-hook/lib/register.js'(exports2, module2) { - module2.exports = register; - function register(state, name, method, options) { - if (typeof method !== 'function') { - throw new Error('method for before hook must be a function'); - } - if (!options) { - options = {}; + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) {} + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === 'null') { + return true; } - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name2) { - return register.bind(null, state, name2, callback, options); - }, method)(); + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; } - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce(function (method2, registered) { - return registered.hook.bind(null, method2, options); - }, method)(); + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; }); + return { promise, resolve: res, reject: rej }; } - } -}); - -// node_modules/before-after-hook/lib/add.js -var require_add = __commonJS({ - 'node_modules/before-after-hook/lib/add.js'(exports2, module2) { - module2.exports = addHook; - function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; + function isAborted(fetchParams) { + return fetchParams.controller.state === 'aborted'; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === 'aborted' || fetchParams.controller.state === 'terminated'; + } + var normalizeMethodRecord = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' + }; + Object.setPrototypeOf(normalizeMethodRecord, null); + function normalizeMethod(method) { + return normalizeMethodRecord[method.toLowerCase()] ?? method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError('Value is not JSON serializable'); } - if (kind === 'before') { - hook = function (method, options) { - return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); - }; + assert(typeof result === 'string'); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function makeIterator(iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + }; + const i = { + next() { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`); + } + const { index, kind: kind2, target } = object; + const values = target(); + const len = values.length; + if (index >= len) { + return { value: void 0, done: true }; + } + const pair = values[index]; + object.index = index + 1; + return iteratorResult(pair, kind2); + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + }; + Object.setPrototypeOf(i, esIteratorPrototype); + return Object.setPrototypeOf({}, i); + } + function iteratorResult(pair, kind) { + let result; + switch (kind) { + case 'key': { + result = pair[0]; + break; + } + case 'value': { + result = pair[1]; + break; + } + case 'key+value': { + result = pair; + break; + } } - if (kind === 'after') { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; + return { value: result, done: false }; + } + async function fullyReadBody(body2, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body2.stream.getReader(); + } catch (e) { + errorSteps(e); + return; } - if (kind === 'error') { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; + try { + const result = await readAllBytes(reader); + successSteps(result); + } catch (e) { + errorSteps(e); } - state.registry[name].push({ - hook, - orig - }); } - } -}); - -// node_modules/before-after-hook/lib/remove.js -var require_remove = __commonJS({ - 'node_modules/before-after-hook/lib/remove.js'(exports2, module2) { - module2.exports = removeHook; - function removeHook(state, name, method) { - if (!state.registry[name]) { - return; + var ReadableStream = globalThis.ReadableStream; + function isReadableStreamLike(stream) { + if (!ReadableStream) { + ReadableStream = require('stream/web').ReadableStream; } - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - if (index === -1) { - return; + return ( + stream instanceof ReadableStream || (stream[Symbol.toStringTag] === 'ReadableStream' && typeof stream.tee === 'function') + ); + } + var MAXIMUM_ARGUMENT_LENGTH = 65535; + function isomorphicDecode(input) { + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input); } - state.registry[name].splice(index, 1); + return input.reduce((previous, current) => previous + String.fromCharCode(current), ''); } - } -}); - -// node_modules/before-after-hook/index.js -var require_before_after_hook = __commonJS({ - 'node_modules/before-after-hook/index.js'(exports2, module2) { - var register = require_register(); - var addHook = require_add(); - var removeHook = require_remove(); - var bind = Function.bind; - var bindable = bind.bind(bind); - function bindApi(hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); + function readableStreamClose(controller) { + try { + controller.close(); + } catch (err) { + if (!err.message.includes('Controller is already closed')) { + throw err; + } + } } - function HookSingular() { - var singularHookName = 'h'; - var singularHookState = { - registry: {} - }; - var singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; + function isomorphicEncode(input) { + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 255); + } + return input; } - function HookCollection() { - var state = { - registry: {} - }; - var hook = register.bind(null, state); - bindApi(hook, state); - return hook; + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk'); + } + bytes.push(chunk); + byteLength += chunk.length; + } } - var collectionHookDeprecationMessageDisplayed = false; - function Hook() { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn( - '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' - ); - collectionHookDeprecationMessageDisplayed = true; + function urlIsLocal(url) { + assert('protocol' in url); + const protocol = url.protocol; + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'; + } + function urlHasHttpsScheme(url) { + if (typeof url === 'string') { + return url.startsWith('https:'); } - return HookCollection(); + return url.protocol === 'https:'; } - Hook.Singular = HookSingular.bind(); - Hook.Collection = HookCollection.bind(); - module2.exports = Hook; - module2.exports.Hook = Hook; - module2.exports.Singular = Hook.Singular; - module2.exports.Collection = Hook.Collection; + function urlIsHttpHttpsScheme(url) { + assert('protocol' in url); + const protocol = url.protocol; + return protocol === 'http:' || protocol === 'https:'; + } + var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); + module2.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + normalizeMethodRecord, + parseMetadata + }; } }); -// node_modules/is-plain-object/dist/is-plain-object.js -var require_is_plain_object = __commonJS({ - 'node_modules/is-plain-object/dist/is-plain-object.js'(exports2) { +// node_modules/undici/lib/fetch/symbols.js +var require_symbols2 = __commonJS({ + 'node_modules/undici/lib/fetch/symbols.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; - } - function isPlainObject(o) { - var ctor, prot; - if (isObject(o) === false) return false; - ctor = o.constructor; - if (ctor === void 0) return true; - prot = ctor.prototype; - if (isObject(prot) === false) return false; - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - return true; - } - exports2.isPlainObject = isPlainObject; + module2.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') + }; } }); -// node_modules/@octokit/endpoint/dist-node/index.js -var require_dist_node2 = __commonJS({ - 'node_modules/@octokit/endpoint/dist-node/index.js'(exports2) { +// node_modules/undici/lib/fetch/webidl.js +var require_webidl = __commonJS({ + 'node_modules/undici/lib/fetch/webidl.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var isPlainObject = require_is_plain_object(); - var universalUserAgent = require_dist_node(); - function lowercaseKeys(object) { - if (!object) { - return {}; + var { types } = require('util'); + var { hasOwn, toUSVString } = require_util2(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of'; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(', ')}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); + }; + webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.brandCheck = function (V, I, opts = void 0) { + if (opts?.strict !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation'); + } else { + return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]; } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); - } - function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) - Object.assign(result, { - [key]: options[key] - }); - else result[key] = mergeDeep(defaults[key], options[key]); + }; + webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, but${length ? ' only' : ''} ${length} found.`, + ...ctx + }); + } + }; + webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }); + }; + webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': + return 'Undefined'; + case 'boolean': + return 'Boolean'; + case 'string': + return 'String'; + case 'symbol': + return 'Symbol'; + case 'number': + return 'Number'; + case 'bigint': + return 'BigInt'; + case 'function': + case 'object': { + if (V === null) { + return 'Null'; + } + return 'Object'; + } + } + }; + webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === 'unsigned') { + lowerBound = 0; } else { - Object.assign(result, { - [key]: options[key] + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === 'unsigned') { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (x === 0) { + x = 0; + } + if (opts.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` }); } - }); - return result; - } - function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); } + return x; } - return obj; - } - function merge(defaults, route, options) { - if (typeof route === 'string') { - let [method, url] = route.split(' '); - options = Object.assign( - url - ? { - method, - url - } - : { - url: method - }, - options - ); - } else { - options = Object.assign({}, route); + if (!Number.isNaN(x) && opts.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter(preview => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); + if (Number.isNaN(x) || (x === 0 && Object.is(0, x)) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; } - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, '')); - return mergedOptions; - } - function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? '&' : '?'; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); } - return ( - url + - separator + - names - .map(name => { - if (name === 'q') { - return 'q=' + parameters.q.split('+').map(encodeURIComponent).join('+'); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join('&') - ); - } - var urlVariableRegex = /\{[^}]+\}/g; - function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, '').split(/,/); - } - function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; + return x; + }; + webidl.util.IntegerPart = function (n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); - } - function omit(object, keysToOmit) { - return Object.keys(object) - .filter(option => !keysToOmit.includes(option)) - .reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); - } - function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']'); - } - return part; - }) - .join(''); - } - function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase(); - }); - } - function encodeValue(operator, value, key) { - value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + '=' + value; - } else { - return value; - } - } - function isDefined(value) { - return value !== void 0 && value !== null; - } - function isKeyOperator(operator) { - return operator === ';' || operator === '&' || operator === '?'; - } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== '') { - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { - value = value.toString(); - if (modifier && modifier !== '*') { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : '')); - } else { - if (modifier === '*') { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : '')); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + '=' + tmp.join(',')); - } else if (tmp.length !== 0) { - result.push(tmp.join(',')); - } - } + return r; + }; + webidl.sequenceConverter = function (converter) { + return V => { + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }); } - } else { - if (operator === ';') { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); + const method = V?.[Symbol.iterator]?.(); + const seq = []; + if (method === void 0 || typeof method.next !== 'function') { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; } - } else if (value === '' && (operator === '&' || operator === '?')) { - result.push(encodeUnreserved(key) + '='); - } else if (value === '') { - result.push(''); + seq.push(converter(value)); } - } - return result; - } - function parseUrl(template) { - return { - expand: expand.bind(null, template) + return seq; }; - } - function expand(template, context) { - var operators = ['+', '#', '.', '/', ';', '?', '&']; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ''; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }; + webidl.recordConverter = function (keyConverter, valueConverter) { + return O => { + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: `Value of type ${webidl.util.Type(O)} is not an Object.` }); - if (operator && operator !== '+') { - var separator = ','; - if (operator === '?') { - separator = '&'; - } else if (operator !== '#') { - separator = operator; - } - return (values.length !== 0 ? operator : '') + values.join(separator); - } else { - return values.join(','); + } + const result = {}; + if (!types.isProxy(O)) { + const keys2 = Object.keys(O); + for (const key of keys2) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; } - } else { - return encodeReserved(literal); + return result; } - }); - } - function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || '/').replace(/:([a-z]\w+)/g, '{$1}'); - let headers = Object.assign({}, options.headers); - let body2; - let parameters = omit(options, ['method', 'baseUrl', 'url', 'headers', 'request', 'mediaType']); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter(option => urlVariableNames.includes(option)) - .concat('baseUrl'); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept - .split(/,/) - .map(preview => - preview.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ) - .join(','); + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc?.enumerable) { + const typedKey = keyConverter(key); + const typedValue = valueConverter(O[key]); + result[typedKey] = typedValue; + } } - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(','); + return result; + }; + }; + webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }); } - } - if (['GET', 'HEAD'].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ('data' in remainingParameters) { - body2 = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body2 = remainingParameters; - } else { - headers['content-length'] = 0; - } + return V; + }; + }; + webidl.dictionaryConverter = function (converters) { + return dictionary => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === 'Null' || type === 'Undefined') { + return dict; + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); } - } - if (!headers['content-type'] && typeof body2 !== 'undefined') { - headers['content-type'] = 'application/json; charset=utf-8'; - } - if (['PATCH', 'PUT'].includes(method) && typeof body2 === 'undefined') { - body2 = ''; - } - return Object.assign( - { - method, - url, - headers - }, - typeof body2 !== 'undefined' - ? { - body: body2 + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }); } - : null, - options.request - ? { - request: options.request + } + let value = dictionary[key]; + const hasDefault = hasOwn(options, 'defaultValue'); + if (hasDefault && value !== null) { + value = value ?? defaultValue; + } + if (required || hasDefault || value !== void 0) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }); } - : null - ); - } - function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); - } - function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse - }); - } - var VERSION = '6.0.12'; - var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; - var DEFAULTS = { - method: 'GET', - baseUrl: 'https://api.github.com', - headers: { - accept: 'application/vnd.github.v3+json', - 'user-agent': userAgent - }, - mediaType: { - format: '', - previews: [] - } - }; - var endpoint = withDefaults(null, DEFAULTS); - exports2.endpoint = endpoint; - } -}); - -// node_modules/webidl-conversions/lib/index.js -var require_lib2 = __commonJS({ - 'node_modules/webidl-conversions/lib/index.js'(exports2, module2) { - 'use strict'; - var conversions = {}; - module2.exports = conversions; - function sign(x) { - return x < 0 ? -1 : 1; - } - function evenRound(x) { - if (x % 1 === 0.5 && (x & 1) === 0) { - return Math.floor(x); - } else { - return Math.round(x); - } - } - function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; - } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); - return function (V, opts) { - if (!opts) opts = {}; - let x = +V; - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError('Argument is not a finite number'); - } - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError('Argument is not in byte range'); - } - return x; - } - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } - if (!Number.isFinite(x) || x === 0) { - return 0; - } - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { - return 0; + dict[key] = value; } } - return x; + return dict; }; - } - conversions['void'] = function () { - return void 0; - }; - conversions['boolean'] = function (val) { - return !!val; }; - conversions['byte'] = createNumberConversion(8, { unsigned: false }); - conversions['octet'] = createNumberConversion(8, { unsigned: true }); - conversions['short'] = createNumberConversion(16, { unsigned: false }); - conversions['unsigned short'] = createNumberConversion(16, { unsigned: true }); - conversions['long'] = createNumberConversion(32, { unsigned: false }); - conversions['unsigned long'] = createNumberConversion(32, { unsigned: true }); - conversions['long long'] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); - conversions['unsigned long long'] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); - conversions['double'] = function (V) { - const x = +V; - if (!Number.isFinite(x)) { - throw new TypeError('Argument is not a finite floating-point value'); - } - return x; - }; - conversions['unrestricted double'] = function (V) { - const x = +V; - if (isNaN(x)) { - throw new TypeError('Argument is NaN'); - } - return x; + webidl.nullableConverter = function (converter) { + return V => { + if (V === null) { + return V; + } + return converter(V); + }; }; - conversions['float'] = conversions['double']; - conversions['unrestricted float'] = conversions['unrestricted double']; - conversions['DOMString'] = function (V, opts) { - if (!opts) opts = {}; - if (opts.treatNullAsEmptyString && V === null) { + webidl.converters.DOMString = function (V, opts = {}) { + if (V === null && opts.legacyNullToEmptyString) { return ''; } + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.'); + } return String(V); }; - conversions['ByteString'] = function (V, opts) { - const x = String(V); - let c = void 0; - for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { - if (c > 255) { - throw new TypeError('Argument is not a valid bytestring'); + webidl.converters.ByteString = function (V) { + const x = webidl.converters.DOMString(V); + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt( + index + )} which is greater than 255.` + ); } } return x; }; - conversions['USVString'] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 55296 || c > 57343) { - U.push(String.fromCodePoint(c)); - } else if (56320 <= c && c <= 57343) { - U.push(String.fromCodePoint(65533)); - } else { - if (i === n - 1) { - U.push(String.fromCodePoint(65533)); - } else { - const d = S.charCodeAt(i + 1); - if (56320 <= d && d <= 57343) { - const a = c & 1023; - const b = d & 1023; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(65533)); - } - } - } + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function (V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function (V) { + return V; + }; + webidl.converters['long long'] = function (V) { + const x = webidl.util.ConvertToInt(V, 64, 'signed'); + return x; + }; + webidl.converters['unsigned long long'] = function (V) { + const x = webidl.util.ConvertToInt(V, 64, 'unsigned'); + return x; + }; + webidl.converters['unsigned long'] = function (V) { + const x = webidl.util.ConvertToInt(V, 32, 'unsigned'); + return x; + }; + webidl.converters['unsigned short'] = function (V, opts) { + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts); + return x; + }; + webidl.converters.ArrayBuffer = function (V, opts = {}) { + if (webidl.util.Type(V) !== 'Object' || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }); } - return U.join(''); + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + return V; }; - conversions['Date'] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError('Argument is not a Date object'); + webidl.converters.TypedArray = function (V, T, opts = {}) { + if (webidl.util.Type(V) !== 'Object' || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }); } - if (isNaN(V)) { - return void 0; + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); } return V; }; - conversions['RegExp'] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); + webidl.converters.DataView = function (V, opts = {}) { + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); } return V; }; + webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError(`Could not convert ${V} to a BufferSource.`); + }; + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.ByteString); + webidl.converters['sequence>'] = webidl.sequenceConverter(webidl.converters['sequence']); + webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); + module2.exports = { + webidl + }; } }); -// node_modules/whatwg-url/lib/utils.js -var require_utils3 = __commonJS({ - 'node_modules/whatwg-url/lib/utils.js'(exports2, module2) { - 'use strict'; - module2.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); +// node_modules/undici/lib/fetch/dataURL.js +var require_dataURL = __commonJS({ + 'node_modules/undici/lib/fetch/dataURL.js'(exports2, module2) { + var assert = require('assert'); + var { atob: atob2 } = require('buffer'); + var { isomorphicDecode } = require_util2(); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; + var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; + function dataURLProcessor(dataURL) { + assert(dataURL.protocol === 'data:'); + let input = URLSerializer(dataURL, true); + input = input.slice(5); + const position = { position: 0 }; + let mimeType = collectASequenceOfCodePointsFast(',', input, position); + const mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + if (position.position >= input.length) { + return 'failure'; } - }; - module2.exports.wrapperSymbol = Symbol('wrapper'); - module2.exports.implSymbol = Symbol('impl'); - module2.exports.wrapperForImpl = function (impl) { - return impl[module2.exports.wrapperSymbol]; - }; - module2.exports.implForWrapper = function (wrapper) { - return wrapper[module2.exports.implSymbol]; - }; - } -}); - -// node_modules/tr46/lib/mappingTable.json -var require_mappingTable = __commonJS({ - 'node_modules/tr46/lib/mappingTable.json'(exports2, module2) { - module2.exports = [ - [[0, 44], 'disallowed_STD3_valid'], - [[45, 46], 'valid'], - [[47, 47], 'disallowed_STD3_valid'], - [[48, 57], 'valid'], - [[58, 64], 'disallowed_STD3_valid'], - [[65, 65], 'mapped', [97]], - [[66, 66], 'mapped', [98]], - [[67, 67], 'mapped', [99]], - [[68, 68], 'mapped', [100]], - [[69, 69], 'mapped', [101]], - [[70, 70], 'mapped', [102]], - [[71, 71], 'mapped', [103]], - [[72, 72], 'mapped', [104]], - [[73, 73], 'mapped', [105]], - [[74, 74], 'mapped', [106]], - [[75, 75], 'mapped', [107]], - [[76, 76], 'mapped', [108]], - [[77, 77], 'mapped', [109]], - [[78, 78], 'mapped', [110]], - [[79, 79], 'mapped', [111]], - [[80, 80], 'mapped', [112]], - [[81, 81], 'mapped', [113]], - [[82, 82], 'mapped', [114]], - [[83, 83], 'mapped', [115]], - [[84, 84], 'mapped', [116]], - [[85, 85], 'mapped', [117]], - [[86, 86], 'mapped', [118]], - [[87, 87], 'mapped', [119]], - [[88, 88], 'mapped', [120]], - [[89, 89], 'mapped', [121]], - [[90, 90], 'mapped', [122]], - [[91, 96], 'disallowed_STD3_valid'], - [[97, 122], 'valid'], - [[123, 127], 'disallowed_STD3_valid'], - [[128, 159], 'disallowed'], - [[160, 160], 'disallowed_STD3_mapped', [32]], - [[161, 167], 'valid', [], 'NV8'], - [[168, 168], 'disallowed_STD3_mapped', [32, 776]], - [[169, 169], 'valid', [], 'NV8'], - [[170, 170], 'mapped', [97]], - [[171, 172], 'valid', [], 'NV8'], - [[173, 173], 'ignored'], - [[174, 174], 'valid', [], 'NV8'], - [[175, 175], 'disallowed_STD3_mapped', [32, 772]], - [[176, 177], 'valid', [], 'NV8'], - [[178, 178], 'mapped', [50]], - [[179, 179], 'mapped', [51]], - [[180, 180], 'disallowed_STD3_mapped', [32, 769]], - [[181, 181], 'mapped', [956]], - [[182, 182], 'valid', [], 'NV8'], - [[183, 183], 'valid'], - [[184, 184], 'disallowed_STD3_mapped', [32, 807]], - [[185, 185], 'mapped', [49]], - [[186, 186], 'mapped', [111]], - [[187, 187], 'valid', [], 'NV8'], - [[188, 188], 'mapped', [49, 8260, 52]], - [[189, 189], 'mapped', [49, 8260, 50]], - [[190, 190], 'mapped', [51, 8260, 52]], - [[191, 191], 'valid', [], 'NV8'], - [[192, 192], 'mapped', [224]], - [[193, 193], 'mapped', [225]], - [[194, 194], 'mapped', [226]], - [[195, 195], 'mapped', [227]], - [[196, 196], 'mapped', [228]], - [[197, 197], 'mapped', [229]], - [[198, 198], 'mapped', [230]], - [[199, 199], 'mapped', [231]], - [[200, 200], 'mapped', [232]], - [[201, 201], 'mapped', [233]], - [[202, 202], 'mapped', [234]], - [[203, 203], 'mapped', [235]], - [[204, 204], 'mapped', [236]], - [[205, 205], 'mapped', [237]], - [[206, 206], 'mapped', [238]], - [[207, 207], 'mapped', [239]], - [[208, 208], 'mapped', [240]], - [[209, 209], 'mapped', [241]], - [[210, 210], 'mapped', [242]], - [[211, 211], 'mapped', [243]], - [[212, 212], 'mapped', [244]], - [[213, 213], 'mapped', [245]], - [[214, 214], 'mapped', [246]], - [[215, 215], 'valid', [], 'NV8'], - [[216, 216], 'mapped', [248]], - [[217, 217], 'mapped', [249]], - [[218, 218], 'mapped', [250]], - [[219, 219], 'mapped', [251]], - [[220, 220], 'mapped', [252]], - [[221, 221], 'mapped', [253]], - [[222, 222], 'mapped', [254]], - [[223, 223], 'deviation', [115, 115]], - [[224, 246], 'valid'], - [[247, 247], 'valid', [], 'NV8'], - [[248, 255], 'valid'], - [[256, 256], 'mapped', [257]], - [[257, 257], 'valid'], - [[258, 258], 'mapped', [259]], - [[259, 259], 'valid'], - [[260, 260], 'mapped', [261]], - [[261, 261], 'valid'], - [[262, 262], 'mapped', [263]], - [[263, 263], 'valid'], - [[264, 264], 'mapped', [265]], - [[265, 265], 'valid'], - [[266, 266], 'mapped', [267]], - [[267, 267], 'valid'], - [[268, 268], 'mapped', [269]], - [[269, 269], 'valid'], - [[270, 270], 'mapped', [271]], - [[271, 271], 'valid'], - [[272, 272], 'mapped', [273]], - [[273, 273], 'valid'], - [[274, 274], 'mapped', [275]], - [[275, 275], 'valid'], - [[276, 276], 'mapped', [277]], - [[277, 277], 'valid'], - [[278, 278], 'mapped', [279]], - [[279, 279], 'valid'], - [[280, 280], 'mapped', [281]], - [[281, 281], 'valid'], - [[282, 282], 'mapped', [283]], - [[283, 283], 'valid'], - [[284, 284], 'mapped', [285]], - [[285, 285], 'valid'], - [[286, 286], 'mapped', [287]], - [[287, 287], 'valid'], - [[288, 288], 'mapped', [289]], - [[289, 289], 'valid'], - [[290, 290], 'mapped', [291]], - [[291, 291], 'valid'], - [[292, 292], 'mapped', [293]], - [[293, 293], 'valid'], - [[294, 294], 'mapped', [295]], - [[295, 295], 'valid'], - [[296, 296], 'mapped', [297]], - [[297, 297], 'valid'], - [[298, 298], 'mapped', [299]], - [[299, 299], 'valid'], - [[300, 300], 'mapped', [301]], - [[301, 301], 'valid'], - [[302, 302], 'mapped', [303]], - [[303, 303], 'valid'], - [[304, 304], 'mapped', [105, 775]], - [[305, 305], 'valid'], - [[306, 307], 'mapped', [105, 106]], - [[308, 308], 'mapped', [309]], - [[309, 309], 'valid'], - [[310, 310], 'mapped', [311]], - [[311, 312], 'valid'], - [[313, 313], 'mapped', [314]], - [[314, 314], 'valid'], - [[315, 315], 'mapped', [316]], - [[316, 316], 'valid'], - [[317, 317], 'mapped', [318]], - [[318, 318], 'valid'], - [[319, 320], 'mapped', [108, 183]], - [[321, 321], 'mapped', [322]], - [[322, 322], 'valid'], - [[323, 323], 'mapped', [324]], - [[324, 324], 'valid'], - [[325, 325], 'mapped', [326]], - [[326, 326], 'valid'], - [[327, 327], 'mapped', [328]], - [[328, 328], 'valid'], - [[329, 329], 'mapped', [700, 110]], - [[330, 330], 'mapped', [331]], - [[331, 331], 'valid'], - [[332, 332], 'mapped', [333]], - [[333, 333], 'valid'], - [[334, 334], 'mapped', [335]], - [[335, 335], 'valid'], - [[336, 336], 'mapped', [337]], - [[337, 337], 'valid'], - [[338, 338], 'mapped', [339]], - [[339, 339], 'valid'], - [[340, 340], 'mapped', [341]], - [[341, 341], 'valid'], - [[342, 342], 'mapped', [343]], - [[343, 343], 'valid'], - [[344, 344], 'mapped', [345]], - [[345, 345], 'valid'], - [[346, 346], 'mapped', [347]], - [[347, 347], 'valid'], - [[348, 348], 'mapped', [349]], - [[349, 349], 'valid'], - [[350, 350], 'mapped', [351]], - [[351, 351], 'valid'], - [[352, 352], 'mapped', [353]], - [[353, 353], 'valid'], - [[354, 354], 'mapped', [355]], - [[355, 355], 'valid'], - [[356, 356], 'mapped', [357]], - [[357, 357], 'valid'], - [[358, 358], 'mapped', [359]], - [[359, 359], 'valid'], - [[360, 360], 'mapped', [361]], - [[361, 361], 'valid'], - [[362, 362], 'mapped', [363]], - [[363, 363], 'valid'], - [[364, 364], 'mapped', [365]], - [[365, 365], 'valid'], - [[366, 366], 'mapped', [367]], - [[367, 367], 'valid'], - [[368, 368], 'mapped', [369]], - [[369, 369], 'valid'], - [[370, 370], 'mapped', [371]], - [[371, 371], 'valid'], - [[372, 372], 'mapped', [373]], - [[373, 373], 'valid'], - [[374, 374], 'mapped', [375]], - [[375, 375], 'valid'], - [[376, 376], 'mapped', [255]], - [[377, 377], 'mapped', [378]], - [[378, 378], 'valid'], - [[379, 379], 'mapped', [380]], - [[380, 380], 'valid'], - [[381, 381], 'mapped', [382]], - [[382, 382], 'valid'], - [[383, 383], 'mapped', [115]], - [[384, 384], 'valid'], - [[385, 385], 'mapped', [595]], - [[386, 386], 'mapped', [387]], - [[387, 387], 'valid'], - [[388, 388], 'mapped', [389]], - [[389, 389], 'valid'], - [[390, 390], 'mapped', [596]], - [[391, 391], 'mapped', [392]], - [[392, 392], 'valid'], - [[393, 393], 'mapped', [598]], - [[394, 394], 'mapped', [599]], - [[395, 395], 'mapped', [396]], - [[396, 397], 'valid'], - [[398, 398], 'mapped', [477]], - [[399, 399], 'mapped', [601]], - [[400, 400], 'mapped', [603]], - [[401, 401], 'mapped', [402]], - [[402, 402], 'valid'], - [[403, 403], 'mapped', [608]], - [[404, 404], 'mapped', [611]], - [[405, 405], 'valid'], - [[406, 406], 'mapped', [617]], - [[407, 407], 'mapped', [616]], - [[408, 408], 'mapped', [409]], - [[409, 411], 'valid'], - [[412, 412], 'mapped', [623]], - [[413, 413], 'mapped', [626]], - [[414, 414], 'valid'], - [[415, 415], 'mapped', [629]], - [[416, 416], 'mapped', [417]], - [[417, 417], 'valid'], - [[418, 418], 'mapped', [419]], - [[419, 419], 'valid'], - [[420, 420], 'mapped', [421]], - [[421, 421], 'valid'], - [[422, 422], 'mapped', [640]], - [[423, 423], 'mapped', [424]], - [[424, 424], 'valid'], - [[425, 425], 'mapped', [643]], - [[426, 427], 'valid'], - [[428, 428], 'mapped', [429]], - [[429, 429], 'valid'], - [[430, 430], 'mapped', [648]], - [[431, 431], 'mapped', [432]], - [[432, 432], 'valid'], - [[433, 433], 'mapped', [650]], - [[434, 434], 'mapped', [651]], - [[435, 435], 'mapped', [436]], - [[436, 436], 'valid'], - [[437, 437], 'mapped', [438]], - [[438, 438], 'valid'], - [[439, 439], 'mapped', [658]], - [[440, 440], 'mapped', [441]], - [[441, 443], 'valid'], - [[444, 444], 'mapped', [445]], - [[445, 451], 'valid'], - [[452, 454], 'mapped', [100, 382]], - [[455, 457], 'mapped', [108, 106]], - [[458, 460], 'mapped', [110, 106]], - [[461, 461], 'mapped', [462]], - [[462, 462], 'valid'], - [[463, 463], 'mapped', [464]], - [[464, 464], 'valid'], - [[465, 465], 'mapped', [466]], - [[466, 466], 'valid'], - [[467, 467], 'mapped', [468]], - [[468, 468], 'valid'], - [[469, 469], 'mapped', [470]], - [[470, 470], 'valid'], - [[471, 471], 'mapped', [472]], - [[472, 472], 'valid'], - [[473, 473], 'mapped', [474]], - [[474, 474], 'valid'], - [[475, 475], 'mapped', [476]], - [[476, 477], 'valid'], - [[478, 478], 'mapped', [479]], - [[479, 479], 'valid'], - [[480, 480], 'mapped', [481]], - [[481, 481], 'valid'], - [[482, 482], 'mapped', [483]], - [[483, 483], 'valid'], - [[484, 484], 'mapped', [485]], - [[485, 485], 'valid'], - [[486, 486], 'mapped', [487]], - [[487, 487], 'valid'], - [[488, 488], 'mapped', [489]], - [[489, 489], 'valid'], - [[490, 490], 'mapped', [491]], - [[491, 491], 'valid'], - [[492, 492], 'mapped', [493]], - [[493, 493], 'valid'], - [[494, 494], 'mapped', [495]], - [[495, 496], 'valid'], - [[497, 499], 'mapped', [100, 122]], - [[500, 500], 'mapped', [501]], - [[501, 501], 'valid'], - [[502, 502], 'mapped', [405]], - [[503, 503], 'mapped', [447]], - [[504, 504], 'mapped', [505]], - [[505, 505], 'valid'], - [[506, 506], 'mapped', [507]], - [[507, 507], 'valid'], - [[508, 508], 'mapped', [509]], - [[509, 509], 'valid'], - [[510, 510], 'mapped', [511]], - [[511, 511], 'valid'], - [[512, 512], 'mapped', [513]], - [[513, 513], 'valid'], - [[514, 514], 'mapped', [515]], - [[515, 515], 'valid'], - [[516, 516], 'mapped', [517]], - [[517, 517], 'valid'], - [[518, 518], 'mapped', [519]], - [[519, 519], 'valid'], - [[520, 520], 'mapped', [521]], - [[521, 521], 'valid'], - [[522, 522], 'mapped', [523]], - [[523, 523], 'valid'], - [[524, 524], 'mapped', [525]], - [[525, 525], 'valid'], - [[526, 526], 'mapped', [527]], - [[527, 527], 'valid'], - [[528, 528], 'mapped', [529]], - [[529, 529], 'valid'], - [[530, 530], 'mapped', [531]], - [[531, 531], 'valid'], - [[532, 532], 'mapped', [533]], - [[533, 533], 'valid'], - [[534, 534], 'mapped', [535]], - [[535, 535], 'valid'], - [[536, 536], 'mapped', [537]], - [[537, 537], 'valid'], - [[538, 538], 'mapped', [539]], - [[539, 539], 'valid'], - [[540, 540], 'mapped', [541]], - [[541, 541], 'valid'], - [[542, 542], 'mapped', [543]], - [[543, 543], 'valid'], - [[544, 544], 'mapped', [414]], - [[545, 545], 'valid'], - [[546, 546], 'mapped', [547]], - [[547, 547], 'valid'], - [[548, 548], 'mapped', [549]], - [[549, 549], 'valid'], - [[550, 550], 'mapped', [551]], - [[551, 551], 'valid'], - [[552, 552], 'mapped', [553]], - [[553, 553], 'valid'], - [[554, 554], 'mapped', [555]], - [[555, 555], 'valid'], - [[556, 556], 'mapped', [557]], - [[557, 557], 'valid'], - [[558, 558], 'mapped', [559]], - [[559, 559], 'valid'], - [[560, 560], 'mapped', [561]], - [[561, 561], 'valid'], - [[562, 562], 'mapped', [563]], - [[563, 563], 'valid'], - [[564, 566], 'valid'], - [[567, 569], 'valid'], - [[570, 570], 'mapped', [11365]], - [[571, 571], 'mapped', [572]], - [[572, 572], 'valid'], - [[573, 573], 'mapped', [410]], - [[574, 574], 'mapped', [11366]], - [[575, 576], 'valid'], - [[577, 577], 'mapped', [578]], - [[578, 578], 'valid'], - [[579, 579], 'mapped', [384]], - [[580, 580], 'mapped', [649]], - [[581, 581], 'mapped', [652]], - [[582, 582], 'mapped', [583]], - [[583, 583], 'valid'], - [[584, 584], 'mapped', [585]], - [[585, 585], 'valid'], - [[586, 586], 'mapped', [587]], - [[587, 587], 'valid'], - [[588, 588], 'mapped', [589]], - [[589, 589], 'valid'], - [[590, 590], 'mapped', [591]], - [[591, 591], 'valid'], - [[592, 680], 'valid'], - [[681, 685], 'valid'], - [[686, 687], 'valid'], - [[688, 688], 'mapped', [104]], - [[689, 689], 'mapped', [614]], - [[690, 690], 'mapped', [106]], - [[691, 691], 'mapped', [114]], - [[692, 692], 'mapped', [633]], - [[693, 693], 'mapped', [635]], - [[694, 694], 'mapped', [641]], - [[695, 695], 'mapped', [119]], - [[696, 696], 'mapped', [121]], - [[697, 705], 'valid'], - [[706, 709], 'valid', [], 'NV8'], - [[710, 721], 'valid'], - [[722, 727], 'valid', [], 'NV8'], - [[728, 728], 'disallowed_STD3_mapped', [32, 774]], - [[729, 729], 'disallowed_STD3_mapped', [32, 775]], - [[730, 730], 'disallowed_STD3_mapped', [32, 778]], - [[731, 731], 'disallowed_STD3_mapped', [32, 808]], - [[732, 732], 'disallowed_STD3_mapped', [32, 771]], - [[733, 733], 'disallowed_STD3_mapped', [32, 779]], - [[734, 734], 'valid', [], 'NV8'], - [[735, 735], 'valid', [], 'NV8'], - [[736, 736], 'mapped', [611]], - [[737, 737], 'mapped', [108]], - [[738, 738], 'mapped', [115]], - [[739, 739], 'mapped', [120]], - [[740, 740], 'mapped', [661]], - [[741, 745], 'valid', [], 'NV8'], - [[746, 747], 'valid', [], 'NV8'], - [[748, 748], 'valid'], - [[749, 749], 'valid', [], 'NV8'], - [[750, 750], 'valid'], - [[751, 767], 'valid', [], 'NV8'], - [[768, 831], 'valid'], - [[832, 832], 'mapped', [768]], - [[833, 833], 'mapped', [769]], - [[834, 834], 'valid'], - [[835, 835], 'mapped', [787]], - [[836, 836], 'mapped', [776, 769]], - [[837, 837], 'mapped', [953]], - [[838, 846], 'valid'], - [[847, 847], 'ignored'], - [[848, 855], 'valid'], - [[856, 860], 'valid'], - [[861, 863], 'valid'], - [[864, 865], 'valid'], - [[866, 866], 'valid'], - [[867, 879], 'valid'], - [[880, 880], 'mapped', [881]], - [[881, 881], 'valid'], - [[882, 882], 'mapped', [883]], - [[883, 883], 'valid'], - [[884, 884], 'mapped', [697]], - [[885, 885], 'valid'], - [[886, 886], 'mapped', [887]], - [[887, 887], 'valid'], - [[888, 889], 'disallowed'], - [[890, 890], 'disallowed_STD3_mapped', [32, 953]], - [[891, 893], 'valid'], - [[894, 894], 'disallowed_STD3_mapped', [59]], - [[895, 895], 'mapped', [1011]], - [[896, 899], 'disallowed'], - [[900, 900], 'disallowed_STD3_mapped', [32, 769]], - [[901, 901], 'disallowed_STD3_mapped', [32, 776, 769]], - [[902, 902], 'mapped', [940]], - [[903, 903], 'mapped', [183]], - [[904, 904], 'mapped', [941]], - [[905, 905], 'mapped', [942]], - [[906, 906], 'mapped', [943]], - [[907, 907], 'disallowed'], - [[908, 908], 'mapped', [972]], - [[909, 909], 'disallowed'], - [[910, 910], 'mapped', [973]], - [[911, 911], 'mapped', [974]], - [[912, 912], 'valid'], - [[913, 913], 'mapped', [945]], - [[914, 914], 'mapped', [946]], - [[915, 915], 'mapped', [947]], - [[916, 916], 'mapped', [948]], - [[917, 917], 'mapped', [949]], - [[918, 918], 'mapped', [950]], - [[919, 919], 'mapped', [951]], - [[920, 920], 'mapped', [952]], - [[921, 921], 'mapped', [953]], - [[922, 922], 'mapped', [954]], - [[923, 923], 'mapped', [955]], - [[924, 924], 'mapped', [956]], - [[925, 925], 'mapped', [957]], - [[926, 926], 'mapped', [958]], - [[927, 927], 'mapped', [959]], - [[928, 928], 'mapped', [960]], - [[929, 929], 'mapped', [961]], - [[930, 930], 'disallowed'], - [[931, 931], 'mapped', [963]], - [[932, 932], 'mapped', [964]], - [[933, 933], 'mapped', [965]], - [[934, 934], 'mapped', [966]], - [[935, 935], 'mapped', [967]], - [[936, 936], 'mapped', [968]], - [[937, 937], 'mapped', [969]], - [[938, 938], 'mapped', [970]], - [[939, 939], 'mapped', [971]], - [[940, 961], 'valid'], - [[962, 962], 'deviation', [963]], - [[963, 974], 'valid'], - [[975, 975], 'mapped', [983]], - [[976, 976], 'mapped', [946]], - [[977, 977], 'mapped', [952]], - [[978, 978], 'mapped', [965]], - [[979, 979], 'mapped', [973]], - [[980, 980], 'mapped', [971]], - [[981, 981], 'mapped', [966]], - [[982, 982], 'mapped', [960]], - [[983, 983], 'valid'], - [[984, 984], 'mapped', [985]], - [[985, 985], 'valid'], - [[986, 986], 'mapped', [987]], - [[987, 987], 'valid'], - [[988, 988], 'mapped', [989]], - [[989, 989], 'valid'], - [[990, 990], 'mapped', [991]], - [[991, 991], 'valid'], - [[992, 992], 'mapped', [993]], - [[993, 993], 'valid'], - [[994, 994], 'mapped', [995]], - [[995, 995], 'valid'], - [[996, 996], 'mapped', [997]], - [[997, 997], 'valid'], - [[998, 998], 'mapped', [999]], - [[999, 999], 'valid'], - [[1e3, 1e3], 'mapped', [1001]], - [[1001, 1001], 'valid'], - [[1002, 1002], 'mapped', [1003]], - [[1003, 1003], 'valid'], - [[1004, 1004], 'mapped', [1005]], - [[1005, 1005], 'valid'], - [[1006, 1006], 'mapped', [1007]], - [[1007, 1007], 'valid'], - [[1008, 1008], 'mapped', [954]], - [[1009, 1009], 'mapped', [961]], - [[1010, 1010], 'mapped', [963]], - [[1011, 1011], 'valid'], - [[1012, 1012], 'mapped', [952]], - [[1013, 1013], 'mapped', [949]], - [[1014, 1014], 'valid', [], 'NV8'], - [[1015, 1015], 'mapped', [1016]], - [[1016, 1016], 'valid'], - [[1017, 1017], 'mapped', [963]], - [[1018, 1018], 'mapped', [1019]], - [[1019, 1019], 'valid'], - [[1020, 1020], 'valid'], - [[1021, 1021], 'mapped', [891]], - [[1022, 1022], 'mapped', [892]], - [[1023, 1023], 'mapped', [893]], - [[1024, 1024], 'mapped', [1104]], - [[1025, 1025], 'mapped', [1105]], - [[1026, 1026], 'mapped', [1106]], - [[1027, 1027], 'mapped', [1107]], - [[1028, 1028], 'mapped', [1108]], - [[1029, 1029], 'mapped', [1109]], - [[1030, 1030], 'mapped', [1110]], - [[1031, 1031], 'mapped', [1111]], - [[1032, 1032], 'mapped', [1112]], - [[1033, 1033], 'mapped', [1113]], - [[1034, 1034], 'mapped', [1114]], - [[1035, 1035], 'mapped', [1115]], - [[1036, 1036], 'mapped', [1116]], - [[1037, 1037], 'mapped', [1117]], - [[1038, 1038], 'mapped', [1118]], - [[1039, 1039], 'mapped', [1119]], - [[1040, 1040], 'mapped', [1072]], - [[1041, 1041], 'mapped', [1073]], - [[1042, 1042], 'mapped', [1074]], - [[1043, 1043], 'mapped', [1075]], - [[1044, 1044], 'mapped', [1076]], - [[1045, 1045], 'mapped', [1077]], - [[1046, 1046], 'mapped', [1078]], - [[1047, 1047], 'mapped', [1079]], - [[1048, 1048], 'mapped', [1080]], - [[1049, 1049], 'mapped', [1081]], - [[1050, 1050], 'mapped', [1082]], - [[1051, 1051], 'mapped', [1083]], - [[1052, 1052], 'mapped', [1084]], - [[1053, 1053], 'mapped', [1085]], - [[1054, 1054], 'mapped', [1086]], - [[1055, 1055], 'mapped', [1087]], - [[1056, 1056], 'mapped', [1088]], - [[1057, 1057], 'mapped', [1089]], - [[1058, 1058], 'mapped', [1090]], - [[1059, 1059], 'mapped', [1091]], - [[1060, 1060], 'mapped', [1092]], - [[1061, 1061], 'mapped', [1093]], - [[1062, 1062], 'mapped', [1094]], - [[1063, 1063], 'mapped', [1095]], - [[1064, 1064], 'mapped', [1096]], - [[1065, 1065], 'mapped', [1097]], - [[1066, 1066], 'mapped', [1098]], - [[1067, 1067], 'mapped', [1099]], - [[1068, 1068], 'mapped', [1100]], - [[1069, 1069], 'mapped', [1101]], - [[1070, 1070], 'mapped', [1102]], - [[1071, 1071], 'mapped', [1103]], - [[1072, 1103], 'valid'], - [[1104, 1104], 'valid'], - [[1105, 1116], 'valid'], - [[1117, 1117], 'valid'], - [[1118, 1119], 'valid'], - [[1120, 1120], 'mapped', [1121]], - [[1121, 1121], 'valid'], - [[1122, 1122], 'mapped', [1123]], - [[1123, 1123], 'valid'], - [[1124, 1124], 'mapped', [1125]], - [[1125, 1125], 'valid'], - [[1126, 1126], 'mapped', [1127]], - [[1127, 1127], 'valid'], - [[1128, 1128], 'mapped', [1129]], - [[1129, 1129], 'valid'], - [[1130, 1130], 'mapped', [1131]], - [[1131, 1131], 'valid'], - [[1132, 1132], 'mapped', [1133]], - [[1133, 1133], 'valid'], - [[1134, 1134], 'mapped', [1135]], - [[1135, 1135], 'valid'], - [[1136, 1136], 'mapped', [1137]], - [[1137, 1137], 'valid'], - [[1138, 1138], 'mapped', [1139]], - [[1139, 1139], 'valid'], - [[1140, 1140], 'mapped', [1141]], - [[1141, 1141], 'valid'], - [[1142, 1142], 'mapped', [1143]], - [[1143, 1143], 'valid'], - [[1144, 1144], 'mapped', [1145]], - [[1145, 1145], 'valid'], - [[1146, 1146], 'mapped', [1147]], - [[1147, 1147], 'valid'], - [[1148, 1148], 'mapped', [1149]], - [[1149, 1149], 'valid'], - [[1150, 1150], 'mapped', [1151]], - [[1151, 1151], 'valid'], - [[1152, 1152], 'mapped', [1153]], - [[1153, 1153], 'valid'], - [[1154, 1154], 'valid', [], 'NV8'], - [[1155, 1158], 'valid'], - [[1159, 1159], 'valid'], - [[1160, 1161], 'valid', [], 'NV8'], - [[1162, 1162], 'mapped', [1163]], - [[1163, 1163], 'valid'], - [[1164, 1164], 'mapped', [1165]], - [[1165, 1165], 'valid'], - [[1166, 1166], 'mapped', [1167]], - [[1167, 1167], 'valid'], - [[1168, 1168], 'mapped', [1169]], - [[1169, 1169], 'valid'], - [[1170, 1170], 'mapped', [1171]], - [[1171, 1171], 'valid'], - [[1172, 1172], 'mapped', [1173]], - [[1173, 1173], 'valid'], - [[1174, 1174], 'mapped', [1175]], - [[1175, 1175], 'valid'], - [[1176, 1176], 'mapped', [1177]], - [[1177, 1177], 'valid'], - [[1178, 1178], 'mapped', [1179]], - [[1179, 1179], 'valid'], - [[1180, 1180], 'mapped', [1181]], - [[1181, 1181], 'valid'], - [[1182, 1182], 'mapped', [1183]], - [[1183, 1183], 'valid'], - [[1184, 1184], 'mapped', [1185]], - [[1185, 1185], 'valid'], - [[1186, 1186], 'mapped', [1187]], - [[1187, 1187], 'valid'], - [[1188, 1188], 'mapped', [1189]], - [[1189, 1189], 'valid'], - [[1190, 1190], 'mapped', [1191]], - [[1191, 1191], 'valid'], - [[1192, 1192], 'mapped', [1193]], - [[1193, 1193], 'valid'], - [[1194, 1194], 'mapped', [1195]], - [[1195, 1195], 'valid'], - [[1196, 1196], 'mapped', [1197]], - [[1197, 1197], 'valid'], - [[1198, 1198], 'mapped', [1199]], - [[1199, 1199], 'valid'], - [[1200, 1200], 'mapped', [1201]], - [[1201, 1201], 'valid'], - [[1202, 1202], 'mapped', [1203]], - [[1203, 1203], 'valid'], - [[1204, 1204], 'mapped', [1205]], - [[1205, 1205], 'valid'], - [[1206, 1206], 'mapped', [1207]], - [[1207, 1207], 'valid'], - [[1208, 1208], 'mapped', [1209]], - [[1209, 1209], 'valid'], - [[1210, 1210], 'mapped', [1211]], - [[1211, 1211], 'valid'], - [[1212, 1212], 'mapped', [1213]], - [[1213, 1213], 'valid'], - [[1214, 1214], 'mapped', [1215]], - [[1215, 1215], 'valid'], - [[1216, 1216], 'disallowed'], - [[1217, 1217], 'mapped', [1218]], - [[1218, 1218], 'valid'], - [[1219, 1219], 'mapped', [1220]], - [[1220, 1220], 'valid'], - [[1221, 1221], 'mapped', [1222]], - [[1222, 1222], 'valid'], - [[1223, 1223], 'mapped', [1224]], - [[1224, 1224], 'valid'], - [[1225, 1225], 'mapped', [1226]], - [[1226, 1226], 'valid'], - [[1227, 1227], 'mapped', [1228]], - [[1228, 1228], 'valid'], - [[1229, 1229], 'mapped', [1230]], - [[1230, 1230], 'valid'], - [[1231, 1231], 'valid'], - [[1232, 1232], 'mapped', [1233]], - [[1233, 1233], 'valid'], - [[1234, 1234], 'mapped', [1235]], - [[1235, 1235], 'valid'], - [[1236, 1236], 'mapped', [1237]], - [[1237, 1237], 'valid'], - [[1238, 1238], 'mapped', [1239]], - [[1239, 1239], 'valid'], - [[1240, 1240], 'mapped', [1241]], - [[1241, 1241], 'valid'], - [[1242, 1242], 'mapped', [1243]], - [[1243, 1243], 'valid'], - [[1244, 1244], 'mapped', [1245]], - [[1245, 1245], 'valid'], - [[1246, 1246], 'mapped', [1247]], - [[1247, 1247], 'valid'], - [[1248, 1248], 'mapped', [1249]], - [[1249, 1249], 'valid'], - [[1250, 1250], 'mapped', [1251]], - [[1251, 1251], 'valid'], - [[1252, 1252], 'mapped', [1253]], - [[1253, 1253], 'valid'], - [[1254, 1254], 'mapped', [1255]], - [[1255, 1255], 'valid'], - [[1256, 1256], 'mapped', [1257]], - [[1257, 1257], 'valid'], - [[1258, 1258], 'mapped', [1259]], - [[1259, 1259], 'valid'], - [[1260, 1260], 'mapped', [1261]], - [[1261, 1261], 'valid'], - [[1262, 1262], 'mapped', [1263]], - [[1263, 1263], 'valid'], - [[1264, 1264], 'mapped', [1265]], - [[1265, 1265], 'valid'], - [[1266, 1266], 'mapped', [1267]], - [[1267, 1267], 'valid'], - [[1268, 1268], 'mapped', [1269]], - [[1269, 1269], 'valid'], - [[1270, 1270], 'mapped', [1271]], - [[1271, 1271], 'valid'], - [[1272, 1272], 'mapped', [1273]], - [[1273, 1273], 'valid'], - [[1274, 1274], 'mapped', [1275]], - [[1275, 1275], 'valid'], - [[1276, 1276], 'mapped', [1277]], - [[1277, 1277], 'valid'], - [[1278, 1278], 'mapped', [1279]], - [[1279, 1279], 'valid'], - [[1280, 1280], 'mapped', [1281]], - [[1281, 1281], 'valid'], - [[1282, 1282], 'mapped', [1283]], - [[1283, 1283], 'valid'], - [[1284, 1284], 'mapped', [1285]], - [[1285, 1285], 'valid'], - [[1286, 1286], 'mapped', [1287]], - [[1287, 1287], 'valid'], - [[1288, 1288], 'mapped', [1289]], - [[1289, 1289], 'valid'], - [[1290, 1290], 'mapped', [1291]], - [[1291, 1291], 'valid'], - [[1292, 1292], 'mapped', [1293]], - [[1293, 1293], 'valid'], - [[1294, 1294], 'mapped', [1295]], - [[1295, 1295], 'valid'], - [[1296, 1296], 'mapped', [1297]], - [[1297, 1297], 'valid'], - [[1298, 1298], 'mapped', [1299]], - [[1299, 1299], 'valid'], - [[1300, 1300], 'mapped', [1301]], - [[1301, 1301], 'valid'], - [[1302, 1302], 'mapped', [1303]], - [[1303, 1303], 'valid'], - [[1304, 1304], 'mapped', [1305]], - [[1305, 1305], 'valid'], - [[1306, 1306], 'mapped', [1307]], - [[1307, 1307], 'valid'], - [[1308, 1308], 'mapped', [1309]], - [[1309, 1309], 'valid'], - [[1310, 1310], 'mapped', [1311]], - [[1311, 1311], 'valid'], - [[1312, 1312], 'mapped', [1313]], - [[1313, 1313], 'valid'], - [[1314, 1314], 'mapped', [1315]], - [[1315, 1315], 'valid'], - [[1316, 1316], 'mapped', [1317]], - [[1317, 1317], 'valid'], - [[1318, 1318], 'mapped', [1319]], - [[1319, 1319], 'valid'], - [[1320, 1320], 'mapped', [1321]], - [[1321, 1321], 'valid'], - [[1322, 1322], 'mapped', [1323]], - [[1323, 1323], 'valid'], - [[1324, 1324], 'mapped', [1325]], - [[1325, 1325], 'valid'], - [[1326, 1326], 'mapped', [1327]], - [[1327, 1327], 'valid'], - [[1328, 1328], 'disallowed'], - [[1329, 1329], 'mapped', [1377]], - [[1330, 1330], 'mapped', [1378]], - [[1331, 1331], 'mapped', [1379]], - [[1332, 1332], 'mapped', [1380]], - [[1333, 1333], 'mapped', [1381]], - [[1334, 1334], 'mapped', [1382]], - [[1335, 1335], 'mapped', [1383]], - [[1336, 1336], 'mapped', [1384]], - [[1337, 1337], 'mapped', [1385]], - [[1338, 1338], 'mapped', [1386]], - [[1339, 1339], 'mapped', [1387]], - [[1340, 1340], 'mapped', [1388]], - [[1341, 1341], 'mapped', [1389]], - [[1342, 1342], 'mapped', [1390]], - [[1343, 1343], 'mapped', [1391]], - [[1344, 1344], 'mapped', [1392]], - [[1345, 1345], 'mapped', [1393]], - [[1346, 1346], 'mapped', [1394]], - [[1347, 1347], 'mapped', [1395]], - [[1348, 1348], 'mapped', [1396]], - [[1349, 1349], 'mapped', [1397]], - [[1350, 1350], 'mapped', [1398]], - [[1351, 1351], 'mapped', [1399]], - [[1352, 1352], 'mapped', [1400]], - [[1353, 1353], 'mapped', [1401]], - [[1354, 1354], 'mapped', [1402]], - [[1355, 1355], 'mapped', [1403]], - [[1356, 1356], 'mapped', [1404]], - [[1357, 1357], 'mapped', [1405]], - [[1358, 1358], 'mapped', [1406]], - [[1359, 1359], 'mapped', [1407]], - [[1360, 1360], 'mapped', [1408]], - [[1361, 1361], 'mapped', [1409]], - [[1362, 1362], 'mapped', [1410]], - [[1363, 1363], 'mapped', [1411]], - [[1364, 1364], 'mapped', [1412]], - [[1365, 1365], 'mapped', [1413]], - [[1366, 1366], 'mapped', [1414]], - [[1367, 1368], 'disallowed'], - [[1369, 1369], 'valid'], - [[1370, 1375], 'valid', [], 'NV8'], - [[1376, 1376], 'disallowed'], - [[1377, 1414], 'valid'], - [[1415, 1415], 'mapped', [1381, 1410]], - [[1416, 1416], 'disallowed'], - [[1417, 1417], 'valid', [], 'NV8'], - [[1418, 1418], 'valid', [], 'NV8'], - [[1419, 1420], 'disallowed'], - [[1421, 1422], 'valid', [], 'NV8'], - [[1423, 1423], 'valid', [], 'NV8'], - [[1424, 1424], 'disallowed'], - [[1425, 1441], 'valid'], - [[1442, 1442], 'valid'], - [[1443, 1455], 'valid'], - [[1456, 1465], 'valid'], - [[1466, 1466], 'valid'], - [[1467, 1469], 'valid'], - [[1470, 1470], 'valid', [], 'NV8'], - [[1471, 1471], 'valid'], - [[1472, 1472], 'valid', [], 'NV8'], - [[1473, 1474], 'valid'], - [[1475, 1475], 'valid', [], 'NV8'], - [[1476, 1476], 'valid'], - [[1477, 1477], 'valid'], - [[1478, 1478], 'valid', [], 'NV8'], - [[1479, 1479], 'valid'], - [[1480, 1487], 'disallowed'], - [[1488, 1514], 'valid'], - [[1515, 1519], 'disallowed'], - [[1520, 1524], 'valid'], - [[1525, 1535], 'disallowed'], - [[1536, 1539], 'disallowed'], - [[1540, 1540], 'disallowed'], - [[1541, 1541], 'disallowed'], - [[1542, 1546], 'valid', [], 'NV8'], - [[1547, 1547], 'valid', [], 'NV8'], - [[1548, 1548], 'valid', [], 'NV8'], - [[1549, 1551], 'valid', [], 'NV8'], - [[1552, 1557], 'valid'], - [[1558, 1562], 'valid'], - [[1563, 1563], 'valid', [], 'NV8'], - [[1564, 1564], 'disallowed'], - [[1565, 1565], 'disallowed'], - [[1566, 1566], 'valid', [], 'NV8'], - [[1567, 1567], 'valid', [], 'NV8'], - [[1568, 1568], 'valid'], - [[1569, 1594], 'valid'], - [[1595, 1599], 'valid'], - [[1600, 1600], 'valid', [], 'NV8'], - [[1601, 1618], 'valid'], - [[1619, 1621], 'valid'], - [[1622, 1624], 'valid'], - [[1625, 1630], 'valid'], - [[1631, 1631], 'valid'], - [[1632, 1641], 'valid'], - [[1642, 1645], 'valid', [], 'NV8'], - [[1646, 1647], 'valid'], - [[1648, 1652], 'valid'], - [[1653, 1653], 'mapped', [1575, 1652]], - [[1654, 1654], 'mapped', [1608, 1652]], - [[1655, 1655], 'mapped', [1735, 1652]], - [[1656, 1656], 'mapped', [1610, 1652]], - [[1657, 1719], 'valid'], - [[1720, 1721], 'valid'], - [[1722, 1726], 'valid'], - [[1727, 1727], 'valid'], - [[1728, 1742], 'valid'], - [[1743, 1743], 'valid'], - [[1744, 1747], 'valid'], - [[1748, 1748], 'valid', [], 'NV8'], - [[1749, 1756], 'valid'], - [[1757, 1757], 'disallowed'], - [[1758, 1758], 'valid', [], 'NV8'], - [[1759, 1768], 'valid'], - [[1769, 1769], 'valid', [], 'NV8'], - [[1770, 1773], 'valid'], - [[1774, 1775], 'valid'], - [[1776, 1785], 'valid'], - [[1786, 1790], 'valid'], - [[1791, 1791], 'valid'], - [[1792, 1805], 'valid', [], 'NV8'], - [[1806, 1806], 'disallowed'], - [[1807, 1807], 'disallowed'], - [[1808, 1836], 'valid'], - [[1837, 1839], 'valid'], - [[1840, 1866], 'valid'], - [[1867, 1868], 'disallowed'], - [[1869, 1871], 'valid'], - [[1872, 1901], 'valid'], - [[1902, 1919], 'valid'], - [[1920, 1968], 'valid'], - [[1969, 1969], 'valid'], - [[1970, 1983], 'disallowed'], - [[1984, 2037], 'valid'], - [[2038, 2042], 'valid', [], 'NV8'], - [[2043, 2047], 'disallowed'], - [[2048, 2093], 'valid'], - [[2094, 2095], 'disallowed'], - [[2096, 2110], 'valid', [], 'NV8'], - [[2111, 2111], 'disallowed'], - [[2112, 2139], 'valid'], - [[2140, 2141], 'disallowed'], - [[2142, 2142], 'valid', [], 'NV8'], - [[2143, 2207], 'disallowed'], - [[2208, 2208], 'valid'], - [[2209, 2209], 'valid'], - [[2210, 2220], 'valid'], - [[2221, 2226], 'valid'], - [[2227, 2228], 'valid'], - [[2229, 2274], 'disallowed'], - [[2275, 2275], 'valid'], - [[2276, 2302], 'valid'], - [[2303, 2303], 'valid'], - [[2304, 2304], 'valid'], - [[2305, 2307], 'valid'], - [[2308, 2308], 'valid'], - [[2309, 2361], 'valid'], - [[2362, 2363], 'valid'], - [[2364, 2381], 'valid'], - [[2382, 2382], 'valid'], - [[2383, 2383], 'valid'], - [[2384, 2388], 'valid'], - [[2389, 2389], 'valid'], - [[2390, 2391], 'valid'], - [[2392, 2392], 'mapped', [2325, 2364]], - [[2393, 2393], 'mapped', [2326, 2364]], - [[2394, 2394], 'mapped', [2327, 2364]], - [[2395, 2395], 'mapped', [2332, 2364]], - [[2396, 2396], 'mapped', [2337, 2364]], - [[2397, 2397], 'mapped', [2338, 2364]], - [[2398, 2398], 'mapped', [2347, 2364]], - [[2399, 2399], 'mapped', [2351, 2364]], - [[2400, 2403], 'valid'], - [[2404, 2405], 'valid', [], 'NV8'], - [[2406, 2415], 'valid'], - [[2416, 2416], 'valid', [], 'NV8'], - [[2417, 2418], 'valid'], - [[2419, 2423], 'valid'], - [[2424, 2424], 'valid'], - [[2425, 2426], 'valid'], - [[2427, 2428], 'valid'], - [[2429, 2429], 'valid'], - [[2430, 2431], 'valid'], - [[2432, 2432], 'valid'], - [[2433, 2435], 'valid'], - [[2436, 2436], 'disallowed'], - [[2437, 2444], 'valid'], - [[2445, 2446], 'disallowed'], - [[2447, 2448], 'valid'], - [[2449, 2450], 'disallowed'], - [[2451, 2472], 'valid'], - [[2473, 2473], 'disallowed'], - [[2474, 2480], 'valid'], - [[2481, 2481], 'disallowed'], - [[2482, 2482], 'valid'], - [[2483, 2485], 'disallowed'], - [[2486, 2489], 'valid'], - [[2490, 2491], 'disallowed'], - [[2492, 2492], 'valid'], - [[2493, 2493], 'valid'], - [[2494, 2500], 'valid'], - [[2501, 2502], 'disallowed'], - [[2503, 2504], 'valid'], - [[2505, 2506], 'disallowed'], - [[2507, 2509], 'valid'], - [[2510, 2510], 'valid'], - [[2511, 2518], 'disallowed'], - [[2519, 2519], 'valid'], - [[2520, 2523], 'disallowed'], - [[2524, 2524], 'mapped', [2465, 2492]], - [[2525, 2525], 'mapped', [2466, 2492]], - [[2526, 2526], 'disallowed'], - [[2527, 2527], 'mapped', [2479, 2492]], - [[2528, 2531], 'valid'], - [[2532, 2533], 'disallowed'], - [[2534, 2545], 'valid'], - [[2546, 2554], 'valid', [], 'NV8'], - [[2555, 2555], 'valid', [], 'NV8'], - [[2556, 2560], 'disallowed'], - [[2561, 2561], 'valid'], - [[2562, 2562], 'valid'], - [[2563, 2563], 'valid'], - [[2564, 2564], 'disallowed'], - [[2565, 2570], 'valid'], - [[2571, 2574], 'disallowed'], - [[2575, 2576], 'valid'], - [[2577, 2578], 'disallowed'], - [[2579, 2600], 'valid'], - [[2601, 2601], 'disallowed'], - [[2602, 2608], 'valid'], - [[2609, 2609], 'disallowed'], - [[2610, 2610], 'valid'], - [[2611, 2611], 'mapped', [2610, 2620]], - [[2612, 2612], 'disallowed'], - [[2613, 2613], 'valid'], - [[2614, 2614], 'mapped', [2616, 2620]], - [[2615, 2615], 'disallowed'], - [[2616, 2617], 'valid'], - [[2618, 2619], 'disallowed'], - [[2620, 2620], 'valid'], - [[2621, 2621], 'disallowed'], - [[2622, 2626], 'valid'], - [[2627, 2630], 'disallowed'], - [[2631, 2632], 'valid'], - [[2633, 2634], 'disallowed'], - [[2635, 2637], 'valid'], - [[2638, 2640], 'disallowed'], - [[2641, 2641], 'valid'], - [[2642, 2648], 'disallowed'], - [[2649, 2649], 'mapped', [2582, 2620]], - [[2650, 2650], 'mapped', [2583, 2620]], - [[2651, 2651], 'mapped', [2588, 2620]], - [[2652, 2652], 'valid'], - [[2653, 2653], 'disallowed'], - [[2654, 2654], 'mapped', [2603, 2620]], - [[2655, 2661], 'disallowed'], - [[2662, 2676], 'valid'], - [[2677, 2677], 'valid'], - [[2678, 2688], 'disallowed'], - [[2689, 2691], 'valid'], - [[2692, 2692], 'disallowed'], - [[2693, 2699], 'valid'], - [[2700, 2700], 'valid'], - [[2701, 2701], 'valid'], - [[2702, 2702], 'disallowed'], - [[2703, 2705], 'valid'], - [[2706, 2706], 'disallowed'], - [[2707, 2728], 'valid'], - [[2729, 2729], 'disallowed'], - [[2730, 2736], 'valid'], - [[2737, 2737], 'disallowed'], - [[2738, 2739], 'valid'], - [[2740, 2740], 'disallowed'], - [[2741, 2745], 'valid'], - [[2746, 2747], 'disallowed'], - [[2748, 2757], 'valid'], - [[2758, 2758], 'disallowed'], - [[2759, 2761], 'valid'], - [[2762, 2762], 'disallowed'], - [[2763, 2765], 'valid'], - [[2766, 2767], 'disallowed'], - [[2768, 2768], 'valid'], - [[2769, 2783], 'disallowed'], - [[2784, 2784], 'valid'], - [[2785, 2787], 'valid'], - [[2788, 2789], 'disallowed'], - [[2790, 2799], 'valid'], - [[2800, 2800], 'valid', [], 'NV8'], - [[2801, 2801], 'valid', [], 'NV8'], - [[2802, 2808], 'disallowed'], - [[2809, 2809], 'valid'], - [[2810, 2816], 'disallowed'], - [[2817, 2819], 'valid'], - [[2820, 2820], 'disallowed'], - [[2821, 2828], 'valid'], - [[2829, 2830], 'disallowed'], - [[2831, 2832], 'valid'], - [[2833, 2834], 'disallowed'], - [[2835, 2856], 'valid'], - [[2857, 2857], 'disallowed'], - [[2858, 2864], 'valid'], - [[2865, 2865], 'disallowed'], - [[2866, 2867], 'valid'], - [[2868, 2868], 'disallowed'], - [[2869, 2869], 'valid'], - [[2870, 2873], 'valid'], - [[2874, 2875], 'disallowed'], - [[2876, 2883], 'valid'], - [[2884, 2884], 'valid'], - [[2885, 2886], 'disallowed'], - [[2887, 2888], 'valid'], - [[2889, 2890], 'disallowed'], - [[2891, 2893], 'valid'], - [[2894, 2901], 'disallowed'], - [[2902, 2903], 'valid'], - [[2904, 2907], 'disallowed'], - [[2908, 2908], 'mapped', [2849, 2876]], - [[2909, 2909], 'mapped', [2850, 2876]], - [[2910, 2910], 'disallowed'], - [[2911, 2913], 'valid'], - [[2914, 2915], 'valid'], - [[2916, 2917], 'disallowed'], - [[2918, 2927], 'valid'], - [[2928, 2928], 'valid', [], 'NV8'], - [[2929, 2929], 'valid'], - [[2930, 2935], 'valid', [], 'NV8'], - [[2936, 2945], 'disallowed'], - [[2946, 2947], 'valid'], - [[2948, 2948], 'disallowed'], - [[2949, 2954], 'valid'], - [[2955, 2957], 'disallowed'], - [[2958, 2960], 'valid'], - [[2961, 2961], 'disallowed'], - [[2962, 2965], 'valid'], - [[2966, 2968], 'disallowed'], - [[2969, 2970], 'valid'], - [[2971, 2971], 'disallowed'], - [[2972, 2972], 'valid'], - [[2973, 2973], 'disallowed'], - [[2974, 2975], 'valid'], - [[2976, 2978], 'disallowed'], - [[2979, 2980], 'valid'], - [[2981, 2983], 'disallowed'], - [[2984, 2986], 'valid'], - [[2987, 2989], 'disallowed'], - [[2990, 2997], 'valid'], - [[2998, 2998], 'valid'], - [[2999, 3001], 'valid'], - [[3002, 3005], 'disallowed'], - [[3006, 3010], 'valid'], - [[3011, 3013], 'disallowed'], - [[3014, 3016], 'valid'], - [[3017, 3017], 'disallowed'], - [[3018, 3021], 'valid'], - [[3022, 3023], 'disallowed'], - [[3024, 3024], 'valid'], - [[3025, 3030], 'disallowed'], - [[3031, 3031], 'valid'], - [[3032, 3045], 'disallowed'], - [[3046, 3046], 'valid'], - [[3047, 3055], 'valid'], - [[3056, 3058], 'valid', [], 'NV8'], - [[3059, 3066], 'valid', [], 'NV8'], - [[3067, 3071], 'disallowed'], - [[3072, 3072], 'valid'], - [[3073, 3075], 'valid'], - [[3076, 3076], 'disallowed'], - [[3077, 3084], 'valid'], - [[3085, 3085], 'disallowed'], - [[3086, 3088], 'valid'], - [[3089, 3089], 'disallowed'], - [[3090, 3112], 'valid'], - [[3113, 3113], 'disallowed'], - [[3114, 3123], 'valid'], - [[3124, 3124], 'valid'], - [[3125, 3129], 'valid'], - [[3130, 3132], 'disallowed'], - [[3133, 3133], 'valid'], - [[3134, 3140], 'valid'], - [[3141, 3141], 'disallowed'], - [[3142, 3144], 'valid'], - [[3145, 3145], 'disallowed'], - [[3146, 3149], 'valid'], - [[3150, 3156], 'disallowed'], - [[3157, 3158], 'valid'], - [[3159, 3159], 'disallowed'], - [[3160, 3161], 'valid'], - [[3162, 3162], 'valid'], - [[3163, 3167], 'disallowed'], - [[3168, 3169], 'valid'], - [[3170, 3171], 'valid'], - [[3172, 3173], 'disallowed'], - [[3174, 3183], 'valid'], - [[3184, 3191], 'disallowed'], - [[3192, 3199], 'valid', [], 'NV8'], - [[3200, 3200], 'disallowed'], - [[3201, 3201], 'valid'], - [[3202, 3203], 'valid'], - [[3204, 3204], 'disallowed'], - [[3205, 3212], 'valid'], - [[3213, 3213], 'disallowed'], - [[3214, 3216], 'valid'], - [[3217, 3217], 'disallowed'], - [[3218, 3240], 'valid'], - [[3241, 3241], 'disallowed'], - [[3242, 3251], 'valid'], - [[3252, 3252], 'disallowed'], - [[3253, 3257], 'valid'], - [[3258, 3259], 'disallowed'], - [[3260, 3261], 'valid'], - [[3262, 3268], 'valid'], - [[3269, 3269], 'disallowed'], - [[3270, 3272], 'valid'], - [[3273, 3273], 'disallowed'], - [[3274, 3277], 'valid'], - [[3278, 3284], 'disallowed'], - [[3285, 3286], 'valid'], - [[3287, 3293], 'disallowed'], - [[3294, 3294], 'valid'], - [[3295, 3295], 'disallowed'], - [[3296, 3297], 'valid'], - [[3298, 3299], 'valid'], - [[3300, 3301], 'disallowed'], - [[3302, 3311], 'valid'], - [[3312, 3312], 'disallowed'], - [[3313, 3314], 'valid'], - [[3315, 3328], 'disallowed'], - [[3329, 3329], 'valid'], - [[3330, 3331], 'valid'], - [[3332, 3332], 'disallowed'], - [[3333, 3340], 'valid'], - [[3341, 3341], 'disallowed'], - [[3342, 3344], 'valid'], - [[3345, 3345], 'disallowed'], - [[3346, 3368], 'valid'], - [[3369, 3369], 'valid'], - [[3370, 3385], 'valid'], - [[3386, 3386], 'valid'], - [[3387, 3388], 'disallowed'], - [[3389, 3389], 'valid'], - [[3390, 3395], 'valid'], - [[3396, 3396], 'valid'], - [[3397, 3397], 'disallowed'], - [[3398, 3400], 'valid'], - [[3401, 3401], 'disallowed'], - [[3402, 3405], 'valid'], - [[3406, 3406], 'valid'], - [[3407, 3414], 'disallowed'], - [[3415, 3415], 'valid'], - [[3416, 3422], 'disallowed'], - [[3423, 3423], 'valid'], - [[3424, 3425], 'valid'], - [[3426, 3427], 'valid'], - [[3428, 3429], 'disallowed'], - [[3430, 3439], 'valid'], - [[3440, 3445], 'valid', [], 'NV8'], - [[3446, 3448], 'disallowed'], - [[3449, 3449], 'valid', [], 'NV8'], - [[3450, 3455], 'valid'], - [[3456, 3457], 'disallowed'], - [[3458, 3459], 'valid'], - [[3460, 3460], 'disallowed'], - [[3461, 3478], 'valid'], - [[3479, 3481], 'disallowed'], - [[3482, 3505], 'valid'], - [[3506, 3506], 'disallowed'], - [[3507, 3515], 'valid'], - [[3516, 3516], 'disallowed'], - [[3517, 3517], 'valid'], - [[3518, 3519], 'disallowed'], - [[3520, 3526], 'valid'], - [[3527, 3529], 'disallowed'], - [[3530, 3530], 'valid'], - [[3531, 3534], 'disallowed'], - [[3535, 3540], 'valid'], - [[3541, 3541], 'disallowed'], - [[3542, 3542], 'valid'], - [[3543, 3543], 'disallowed'], - [[3544, 3551], 'valid'], - [[3552, 3557], 'disallowed'], - [[3558, 3567], 'valid'], - [[3568, 3569], 'disallowed'], - [[3570, 3571], 'valid'], - [[3572, 3572], 'valid', [], 'NV8'], - [[3573, 3584], 'disallowed'], - [[3585, 3634], 'valid'], - [[3635, 3635], 'mapped', [3661, 3634]], - [[3636, 3642], 'valid'], - [[3643, 3646], 'disallowed'], - [[3647, 3647], 'valid', [], 'NV8'], - [[3648, 3662], 'valid'], - [[3663, 3663], 'valid', [], 'NV8'], - [[3664, 3673], 'valid'], - [[3674, 3675], 'valid', [], 'NV8'], - [[3676, 3712], 'disallowed'], - [[3713, 3714], 'valid'], - [[3715, 3715], 'disallowed'], - [[3716, 3716], 'valid'], - [[3717, 3718], 'disallowed'], - [[3719, 3720], 'valid'], - [[3721, 3721], 'disallowed'], - [[3722, 3722], 'valid'], - [[3723, 3724], 'disallowed'], - [[3725, 3725], 'valid'], - [[3726, 3731], 'disallowed'], - [[3732, 3735], 'valid'], - [[3736, 3736], 'disallowed'], - [[3737, 3743], 'valid'], - [[3744, 3744], 'disallowed'], - [[3745, 3747], 'valid'], - [[3748, 3748], 'disallowed'], - [[3749, 3749], 'valid'], - [[3750, 3750], 'disallowed'], - [[3751, 3751], 'valid'], - [[3752, 3753], 'disallowed'], - [[3754, 3755], 'valid'], - [[3756, 3756], 'disallowed'], - [[3757, 3762], 'valid'], - [[3763, 3763], 'mapped', [3789, 3762]], - [[3764, 3769], 'valid'], - [[3770, 3770], 'disallowed'], - [[3771, 3773], 'valid'], - [[3774, 3775], 'disallowed'], - [[3776, 3780], 'valid'], - [[3781, 3781], 'disallowed'], - [[3782, 3782], 'valid'], - [[3783, 3783], 'disallowed'], - [[3784, 3789], 'valid'], - [[3790, 3791], 'disallowed'], - [[3792, 3801], 'valid'], - [[3802, 3803], 'disallowed'], - [[3804, 3804], 'mapped', [3755, 3737]], - [[3805, 3805], 'mapped', [3755, 3745]], - [[3806, 3807], 'valid'], - [[3808, 3839], 'disallowed'], - [[3840, 3840], 'valid'], - [[3841, 3850], 'valid', [], 'NV8'], - [[3851, 3851], 'valid'], - [[3852, 3852], 'mapped', [3851]], - [[3853, 3863], 'valid', [], 'NV8'], - [[3864, 3865], 'valid'], - [[3866, 3871], 'valid', [], 'NV8'], - [[3872, 3881], 'valid'], - [[3882, 3892], 'valid', [], 'NV8'], - [[3893, 3893], 'valid'], - [[3894, 3894], 'valid', [], 'NV8'], - [[3895, 3895], 'valid'], - [[3896, 3896], 'valid', [], 'NV8'], - [[3897, 3897], 'valid'], - [[3898, 3901], 'valid', [], 'NV8'], - [[3902, 3906], 'valid'], - [[3907, 3907], 'mapped', [3906, 4023]], - [[3908, 3911], 'valid'], - [[3912, 3912], 'disallowed'], - [[3913, 3916], 'valid'], - [[3917, 3917], 'mapped', [3916, 4023]], - [[3918, 3921], 'valid'], - [[3922, 3922], 'mapped', [3921, 4023]], - [[3923, 3926], 'valid'], - [[3927, 3927], 'mapped', [3926, 4023]], - [[3928, 3931], 'valid'], - [[3932, 3932], 'mapped', [3931, 4023]], - [[3933, 3944], 'valid'], - [[3945, 3945], 'mapped', [3904, 4021]], - [[3946, 3946], 'valid'], - [[3947, 3948], 'valid'], - [[3949, 3952], 'disallowed'], - [[3953, 3954], 'valid'], - [[3955, 3955], 'mapped', [3953, 3954]], - [[3956, 3956], 'valid'], - [[3957, 3957], 'mapped', [3953, 3956]], - [[3958, 3958], 'mapped', [4018, 3968]], - [[3959, 3959], 'mapped', [4018, 3953, 3968]], - [[3960, 3960], 'mapped', [4019, 3968]], - [[3961, 3961], 'mapped', [4019, 3953, 3968]], - [[3962, 3968], 'valid'], - [[3969, 3969], 'mapped', [3953, 3968]], - [[3970, 3972], 'valid'], - [[3973, 3973], 'valid', [], 'NV8'], - [[3974, 3979], 'valid'], - [[3980, 3983], 'valid'], - [[3984, 3986], 'valid'], - [[3987, 3987], 'mapped', [3986, 4023]], - [[3988, 3989], 'valid'], - [[3990, 3990], 'valid'], - [[3991, 3991], 'valid'], - [[3992, 3992], 'disallowed'], - [[3993, 3996], 'valid'], - [[3997, 3997], 'mapped', [3996, 4023]], - [[3998, 4001], 'valid'], - [[4002, 4002], 'mapped', [4001, 4023]], - [[4003, 4006], 'valid'], - [[4007, 4007], 'mapped', [4006, 4023]], - [[4008, 4011], 'valid'], - [[4012, 4012], 'mapped', [4011, 4023]], - [[4013, 4013], 'valid'], - [[4014, 4016], 'valid'], - [[4017, 4023], 'valid'], - [[4024, 4024], 'valid'], - [[4025, 4025], 'mapped', [3984, 4021]], - [[4026, 4028], 'valid'], - [[4029, 4029], 'disallowed'], - [[4030, 4037], 'valid', [], 'NV8'], - [[4038, 4038], 'valid'], - [[4039, 4044], 'valid', [], 'NV8'], - [[4045, 4045], 'disallowed'], - [[4046, 4046], 'valid', [], 'NV8'], - [[4047, 4047], 'valid', [], 'NV8'], - [[4048, 4049], 'valid', [], 'NV8'], - [[4050, 4052], 'valid', [], 'NV8'], - [[4053, 4056], 'valid', [], 'NV8'], - [[4057, 4058], 'valid', [], 'NV8'], - [[4059, 4095], 'disallowed'], - [[4096, 4129], 'valid'], - [[4130, 4130], 'valid'], - [[4131, 4135], 'valid'], - [[4136, 4136], 'valid'], - [[4137, 4138], 'valid'], - [[4139, 4139], 'valid'], - [[4140, 4146], 'valid'], - [[4147, 4149], 'valid'], - [[4150, 4153], 'valid'], - [[4154, 4159], 'valid'], - [[4160, 4169], 'valid'], - [[4170, 4175], 'valid', [], 'NV8'], - [[4176, 4185], 'valid'], - [[4186, 4249], 'valid'], - [[4250, 4253], 'valid'], - [[4254, 4255], 'valid', [], 'NV8'], - [[4256, 4293], 'disallowed'], - [[4294, 4294], 'disallowed'], - [[4295, 4295], 'mapped', [11559]], - [[4296, 4300], 'disallowed'], - [[4301, 4301], 'mapped', [11565]], - [[4302, 4303], 'disallowed'], - [[4304, 4342], 'valid'], - [[4343, 4344], 'valid'], - [[4345, 4346], 'valid'], - [[4347, 4347], 'valid', [], 'NV8'], - [[4348, 4348], 'mapped', [4316]], - [[4349, 4351], 'valid'], - [[4352, 4441], 'valid', [], 'NV8'], - [[4442, 4446], 'valid', [], 'NV8'], - [[4447, 4448], 'disallowed'], - [[4449, 4514], 'valid', [], 'NV8'], - [[4515, 4519], 'valid', [], 'NV8'], - [[4520, 4601], 'valid', [], 'NV8'], - [[4602, 4607], 'valid', [], 'NV8'], - [[4608, 4614], 'valid'], - [[4615, 4615], 'valid'], - [[4616, 4678], 'valid'], - [[4679, 4679], 'valid'], - [[4680, 4680], 'valid'], - [[4681, 4681], 'disallowed'], - [[4682, 4685], 'valid'], - [[4686, 4687], 'disallowed'], - [[4688, 4694], 'valid'], - [[4695, 4695], 'disallowed'], - [[4696, 4696], 'valid'], - [[4697, 4697], 'disallowed'], - [[4698, 4701], 'valid'], - [[4702, 4703], 'disallowed'], - [[4704, 4742], 'valid'], - [[4743, 4743], 'valid'], - [[4744, 4744], 'valid'], - [[4745, 4745], 'disallowed'], - [[4746, 4749], 'valid'], - [[4750, 4751], 'disallowed'], - [[4752, 4782], 'valid'], - [[4783, 4783], 'valid'], - [[4784, 4784], 'valid'], - [[4785, 4785], 'disallowed'], - [[4786, 4789], 'valid'], - [[4790, 4791], 'disallowed'], - [[4792, 4798], 'valid'], - [[4799, 4799], 'disallowed'], - [[4800, 4800], 'valid'], - [[4801, 4801], 'disallowed'], - [[4802, 4805], 'valid'], - [[4806, 4807], 'disallowed'], - [[4808, 4814], 'valid'], - [[4815, 4815], 'valid'], - [[4816, 4822], 'valid'], - [[4823, 4823], 'disallowed'], - [[4824, 4846], 'valid'], - [[4847, 4847], 'valid'], - [[4848, 4878], 'valid'], - [[4879, 4879], 'valid'], - [[4880, 4880], 'valid'], - [[4881, 4881], 'disallowed'], - [[4882, 4885], 'valid'], - [[4886, 4887], 'disallowed'], - [[4888, 4894], 'valid'], - [[4895, 4895], 'valid'], - [[4896, 4934], 'valid'], - [[4935, 4935], 'valid'], - [[4936, 4954], 'valid'], - [[4955, 4956], 'disallowed'], - [[4957, 4958], 'valid'], - [[4959, 4959], 'valid'], - [[4960, 4960], 'valid', [], 'NV8'], - [[4961, 4988], 'valid', [], 'NV8'], - [[4989, 4991], 'disallowed'], - [[4992, 5007], 'valid'], - [[5008, 5017], 'valid', [], 'NV8'], - [[5018, 5023], 'disallowed'], - [[5024, 5108], 'valid'], - [[5109, 5109], 'valid'], - [[5110, 5111], 'disallowed'], - [[5112, 5112], 'mapped', [5104]], - [[5113, 5113], 'mapped', [5105]], - [[5114, 5114], 'mapped', [5106]], - [[5115, 5115], 'mapped', [5107]], - [[5116, 5116], 'mapped', [5108]], - [[5117, 5117], 'mapped', [5109]], - [[5118, 5119], 'disallowed'], - [[5120, 5120], 'valid', [], 'NV8'], - [[5121, 5740], 'valid'], - [[5741, 5742], 'valid', [], 'NV8'], - [[5743, 5750], 'valid'], - [[5751, 5759], 'valid'], - [[5760, 5760], 'disallowed'], - [[5761, 5786], 'valid'], - [[5787, 5788], 'valid', [], 'NV8'], - [[5789, 5791], 'disallowed'], - [[5792, 5866], 'valid'], - [[5867, 5872], 'valid', [], 'NV8'], - [[5873, 5880], 'valid'], - [[5881, 5887], 'disallowed'], - [[5888, 5900], 'valid'], - [[5901, 5901], 'disallowed'], - [[5902, 5908], 'valid'], - [[5909, 5919], 'disallowed'], - [[5920, 5940], 'valid'], - [[5941, 5942], 'valid', [], 'NV8'], - [[5943, 5951], 'disallowed'], - [[5952, 5971], 'valid'], - [[5972, 5983], 'disallowed'], - [[5984, 5996], 'valid'], - [[5997, 5997], 'disallowed'], - [[5998, 6e3], 'valid'], - [[6001, 6001], 'disallowed'], - [[6002, 6003], 'valid'], - [[6004, 6015], 'disallowed'], - [[6016, 6067], 'valid'], - [[6068, 6069], 'disallowed'], - [[6070, 6099], 'valid'], - [[6100, 6102], 'valid', [], 'NV8'], - [[6103, 6103], 'valid'], - [[6104, 6107], 'valid', [], 'NV8'], - [[6108, 6108], 'valid'], - [[6109, 6109], 'valid'], - [[6110, 6111], 'disallowed'], - [[6112, 6121], 'valid'], - [[6122, 6127], 'disallowed'], - [[6128, 6137], 'valid', [], 'NV8'], - [[6138, 6143], 'disallowed'], - [[6144, 6149], 'valid', [], 'NV8'], - [[6150, 6150], 'disallowed'], - [[6151, 6154], 'valid', [], 'NV8'], - [[6155, 6157], 'ignored'], - [[6158, 6158], 'disallowed'], - [[6159, 6159], 'disallowed'], - [[6160, 6169], 'valid'], - [[6170, 6175], 'disallowed'], - [[6176, 6263], 'valid'], - [[6264, 6271], 'disallowed'], - [[6272, 6313], 'valid'], - [[6314, 6314], 'valid'], - [[6315, 6319], 'disallowed'], - [[6320, 6389], 'valid'], - [[6390, 6399], 'disallowed'], - [[6400, 6428], 'valid'], - [[6429, 6430], 'valid'], - [[6431, 6431], 'disallowed'], - [[6432, 6443], 'valid'], - [[6444, 6447], 'disallowed'], - [[6448, 6459], 'valid'], - [[6460, 6463], 'disallowed'], - [[6464, 6464], 'valid', [], 'NV8'], - [[6465, 6467], 'disallowed'], - [[6468, 6469], 'valid', [], 'NV8'], - [[6470, 6509], 'valid'], - [[6510, 6511], 'disallowed'], - [[6512, 6516], 'valid'], - [[6517, 6527], 'disallowed'], - [[6528, 6569], 'valid'], - [[6570, 6571], 'valid'], - [[6572, 6575], 'disallowed'], - [[6576, 6601], 'valid'], - [[6602, 6607], 'disallowed'], - [[6608, 6617], 'valid'], - [[6618, 6618], 'valid', [], 'XV8'], - [[6619, 6621], 'disallowed'], - [[6622, 6623], 'valid', [], 'NV8'], - [[6624, 6655], 'valid', [], 'NV8'], - [[6656, 6683], 'valid'], - [[6684, 6685], 'disallowed'], - [[6686, 6687], 'valid', [], 'NV8'], - [[6688, 6750], 'valid'], - [[6751, 6751], 'disallowed'], - [[6752, 6780], 'valid'], - [[6781, 6782], 'disallowed'], - [[6783, 6793], 'valid'], - [[6794, 6799], 'disallowed'], - [[6800, 6809], 'valid'], - [[6810, 6815], 'disallowed'], - [[6816, 6822], 'valid', [], 'NV8'], - [[6823, 6823], 'valid'], - [[6824, 6829], 'valid', [], 'NV8'], - [[6830, 6831], 'disallowed'], - [[6832, 6845], 'valid'], - [[6846, 6846], 'valid', [], 'NV8'], - [[6847, 6911], 'disallowed'], - [[6912, 6987], 'valid'], - [[6988, 6991], 'disallowed'], - [[6992, 7001], 'valid'], - [[7002, 7018], 'valid', [], 'NV8'], - [[7019, 7027], 'valid'], - [[7028, 7036], 'valid', [], 'NV8'], - [[7037, 7039], 'disallowed'], - [[7040, 7082], 'valid'], - [[7083, 7085], 'valid'], - [[7086, 7097], 'valid'], - [[7098, 7103], 'valid'], - [[7104, 7155], 'valid'], - [[7156, 7163], 'disallowed'], - [[7164, 7167], 'valid', [], 'NV8'], - [[7168, 7223], 'valid'], - [[7224, 7226], 'disallowed'], - [[7227, 7231], 'valid', [], 'NV8'], - [[7232, 7241], 'valid'], - [[7242, 7244], 'disallowed'], - [[7245, 7293], 'valid'], - [[7294, 7295], 'valid', [], 'NV8'], - [[7296, 7359], 'disallowed'], - [[7360, 7367], 'valid', [], 'NV8'], - [[7368, 7375], 'disallowed'], - [[7376, 7378], 'valid'], - [[7379, 7379], 'valid', [], 'NV8'], - [[7380, 7410], 'valid'], - [[7411, 7414], 'valid'], - [[7415, 7415], 'disallowed'], - [[7416, 7417], 'valid'], - [[7418, 7423], 'disallowed'], - [[7424, 7467], 'valid'], - [[7468, 7468], 'mapped', [97]], - [[7469, 7469], 'mapped', [230]], - [[7470, 7470], 'mapped', [98]], - [[7471, 7471], 'valid'], - [[7472, 7472], 'mapped', [100]], - [[7473, 7473], 'mapped', [101]], - [[7474, 7474], 'mapped', [477]], - [[7475, 7475], 'mapped', [103]], - [[7476, 7476], 'mapped', [104]], - [[7477, 7477], 'mapped', [105]], - [[7478, 7478], 'mapped', [106]], - [[7479, 7479], 'mapped', [107]], - [[7480, 7480], 'mapped', [108]], - [[7481, 7481], 'mapped', [109]], - [[7482, 7482], 'mapped', [110]], - [[7483, 7483], 'valid'], - [[7484, 7484], 'mapped', [111]], - [[7485, 7485], 'mapped', [547]], - [[7486, 7486], 'mapped', [112]], - [[7487, 7487], 'mapped', [114]], - [[7488, 7488], 'mapped', [116]], - [[7489, 7489], 'mapped', [117]], - [[7490, 7490], 'mapped', [119]], - [[7491, 7491], 'mapped', [97]], - [[7492, 7492], 'mapped', [592]], - [[7493, 7493], 'mapped', [593]], - [[7494, 7494], 'mapped', [7426]], - [[7495, 7495], 'mapped', [98]], - [[7496, 7496], 'mapped', [100]], - [[7497, 7497], 'mapped', [101]], - [[7498, 7498], 'mapped', [601]], - [[7499, 7499], 'mapped', [603]], - [[7500, 7500], 'mapped', [604]], - [[7501, 7501], 'mapped', [103]], - [[7502, 7502], 'valid'], - [[7503, 7503], 'mapped', [107]], - [[7504, 7504], 'mapped', [109]], - [[7505, 7505], 'mapped', [331]], - [[7506, 7506], 'mapped', [111]], - [[7507, 7507], 'mapped', [596]], - [[7508, 7508], 'mapped', [7446]], - [[7509, 7509], 'mapped', [7447]], - [[7510, 7510], 'mapped', [112]], - [[7511, 7511], 'mapped', [116]], - [[7512, 7512], 'mapped', [117]], - [[7513, 7513], 'mapped', [7453]], - [[7514, 7514], 'mapped', [623]], - [[7515, 7515], 'mapped', [118]], - [[7516, 7516], 'mapped', [7461]], - [[7517, 7517], 'mapped', [946]], - [[7518, 7518], 'mapped', [947]], - [[7519, 7519], 'mapped', [948]], - [[7520, 7520], 'mapped', [966]], - [[7521, 7521], 'mapped', [967]], - [[7522, 7522], 'mapped', [105]], - [[7523, 7523], 'mapped', [114]], - [[7524, 7524], 'mapped', [117]], - [[7525, 7525], 'mapped', [118]], - [[7526, 7526], 'mapped', [946]], - [[7527, 7527], 'mapped', [947]], - [[7528, 7528], 'mapped', [961]], - [[7529, 7529], 'mapped', [966]], - [[7530, 7530], 'mapped', [967]], - [[7531, 7531], 'valid'], - [[7532, 7543], 'valid'], - [[7544, 7544], 'mapped', [1085]], - [[7545, 7578], 'valid'], - [[7579, 7579], 'mapped', [594]], - [[7580, 7580], 'mapped', [99]], - [[7581, 7581], 'mapped', [597]], - [[7582, 7582], 'mapped', [240]], - [[7583, 7583], 'mapped', [604]], - [[7584, 7584], 'mapped', [102]], - [[7585, 7585], 'mapped', [607]], - [[7586, 7586], 'mapped', [609]], - [[7587, 7587], 'mapped', [613]], - [[7588, 7588], 'mapped', [616]], - [[7589, 7589], 'mapped', [617]], - [[7590, 7590], 'mapped', [618]], - [[7591, 7591], 'mapped', [7547]], - [[7592, 7592], 'mapped', [669]], - [[7593, 7593], 'mapped', [621]], - [[7594, 7594], 'mapped', [7557]], - [[7595, 7595], 'mapped', [671]], - [[7596, 7596], 'mapped', [625]], - [[7597, 7597], 'mapped', [624]], - [[7598, 7598], 'mapped', [626]], - [[7599, 7599], 'mapped', [627]], - [[7600, 7600], 'mapped', [628]], - [[7601, 7601], 'mapped', [629]], - [[7602, 7602], 'mapped', [632]], - [[7603, 7603], 'mapped', [642]], - [[7604, 7604], 'mapped', [643]], - [[7605, 7605], 'mapped', [427]], - [[7606, 7606], 'mapped', [649]], - [[7607, 7607], 'mapped', [650]], - [[7608, 7608], 'mapped', [7452]], - [[7609, 7609], 'mapped', [651]], - [[7610, 7610], 'mapped', [652]], - [[7611, 7611], 'mapped', [122]], - [[7612, 7612], 'mapped', [656]], - [[7613, 7613], 'mapped', [657]], - [[7614, 7614], 'mapped', [658]], - [[7615, 7615], 'mapped', [952]], - [[7616, 7619], 'valid'], - [[7620, 7626], 'valid'], - [[7627, 7654], 'valid'], - [[7655, 7669], 'valid'], - [[7670, 7675], 'disallowed'], - [[7676, 7676], 'valid'], - [[7677, 7677], 'valid'], - [[7678, 7679], 'valid'], - [[7680, 7680], 'mapped', [7681]], - [[7681, 7681], 'valid'], - [[7682, 7682], 'mapped', [7683]], - [[7683, 7683], 'valid'], - [[7684, 7684], 'mapped', [7685]], - [[7685, 7685], 'valid'], - [[7686, 7686], 'mapped', [7687]], - [[7687, 7687], 'valid'], - [[7688, 7688], 'mapped', [7689]], - [[7689, 7689], 'valid'], - [[7690, 7690], 'mapped', [7691]], - [[7691, 7691], 'valid'], - [[7692, 7692], 'mapped', [7693]], - [[7693, 7693], 'valid'], - [[7694, 7694], 'mapped', [7695]], - [[7695, 7695], 'valid'], - [[7696, 7696], 'mapped', [7697]], - [[7697, 7697], 'valid'], - [[7698, 7698], 'mapped', [7699]], - [[7699, 7699], 'valid'], - [[7700, 7700], 'mapped', [7701]], - [[7701, 7701], 'valid'], - [[7702, 7702], 'mapped', [7703]], - [[7703, 7703], 'valid'], - [[7704, 7704], 'mapped', [7705]], - [[7705, 7705], 'valid'], - [[7706, 7706], 'mapped', [7707]], - [[7707, 7707], 'valid'], - [[7708, 7708], 'mapped', [7709]], - [[7709, 7709], 'valid'], - [[7710, 7710], 'mapped', [7711]], - [[7711, 7711], 'valid'], - [[7712, 7712], 'mapped', [7713]], - [[7713, 7713], 'valid'], - [[7714, 7714], 'mapped', [7715]], - [[7715, 7715], 'valid'], - [[7716, 7716], 'mapped', [7717]], - [[7717, 7717], 'valid'], - [[7718, 7718], 'mapped', [7719]], - [[7719, 7719], 'valid'], - [[7720, 7720], 'mapped', [7721]], - [[7721, 7721], 'valid'], - [[7722, 7722], 'mapped', [7723]], - [[7723, 7723], 'valid'], - [[7724, 7724], 'mapped', [7725]], - [[7725, 7725], 'valid'], - [[7726, 7726], 'mapped', [7727]], - [[7727, 7727], 'valid'], - [[7728, 7728], 'mapped', [7729]], - [[7729, 7729], 'valid'], - [[7730, 7730], 'mapped', [7731]], - [[7731, 7731], 'valid'], - [[7732, 7732], 'mapped', [7733]], - [[7733, 7733], 'valid'], - [[7734, 7734], 'mapped', [7735]], - [[7735, 7735], 'valid'], - [[7736, 7736], 'mapped', [7737]], - [[7737, 7737], 'valid'], - [[7738, 7738], 'mapped', [7739]], - [[7739, 7739], 'valid'], - [[7740, 7740], 'mapped', [7741]], - [[7741, 7741], 'valid'], - [[7742, 7742], 'mapped', [7743]], - [[7743, 7743], 'valid'], - [[7744, 7744], 'mapped', [7745]], - [[7745, 7745], 'valid'], - [[7746, 7746], 'mapped', [7747]], - [[7747, 7747], 'valid'], - [[7748, 7748], 'mapped', [7749]], - [[7749, 7749], 'valid'], - [[7750, 7750], 'mapped', [7751]], - [[7751, 7751], 'valid'], - [[7752, 7752], 'mapped', [7753]], - [[7753, 7753], 'valid'], - [[7754, 7754], 'mapped', [7755]], - [[7755, 7755], 'valid'], - [[7756, 7756], 'mapped', [7757]], - [[7757, 7757], 'valid'], - [[7758, 7758], 'mapped', [7759]], - [[7759, 7759], 'valid'], - [[7760, 7760], 'mapped', [7761]], - [[7761, 7761], 'valid'], - [[7762, 7762], 'mapped', [7763]], - [[7763, 7763], 'valid'], - [[7764, 7764], 'mapped', [7765]], - [[7765, 7765], 'valid'], - [[7766, 7766], 'mapped', [7767]], - [[7767, 7767], 'valid'], - [[7768, 7768], 'mapped', [7769]], - [[7769, 7769], 'valid'], - [[7770, 7770], 'mapped', [7771]], - [[7771, 7771], 'valid'], - [[7772, 7772], 'mapped', [7773]], - [[7773, 7773], 'valid'], - [[7774, 7774], 'mapped', [7775]], - [[7775, 7775], 'valid'], - [[7776, 7776], 'mapped', [7777]], - [[7777, 7777], 'valid'], - [[7778, 7778], 'mapped', [7779]], - [[7779, 7779], 'valid'], - [[7780, 7780], 'mapped', [7781]], - [[7781, 7781], 'valid'], - [[7782, 7782], 'mapped', [7783]], - [[7783, 7783], 'valid'], - [[7784, 7784], 'mapped', [7785]], - [[7785, 7785], 'valid'], - [[7786, 7786], 'mapped', [7787]], - [[7787, 7787], 'valid'], - [[7788, 7788], 'mapped', [7789]], - [[7789, 7789], 'valid'], - [[7790, 7790], 'mapped', [7791]], - [[7791, 7791], 'valid'], - [[7792, 7792], 'mapped', [7793]], - [[7793, 7793], 'valid'], - [[7794, 7794], 'mapped', [7795]], - [[7795, 7795], 'valid'], - [[7796, 7796], 'mapped', [7797]], - [[7797, 7797], 'valid'], - [[7798, 7798], 'mapped', [7799]], - [[7799, 7799], 'valid'], - [[7800, 7800], 'mapped', [7801]], - [[7801, 7801], 'valid'], - [[7802, 7802], 'mapped', [7803]], - [[7803, 7803], 'valid'], - [[7804, 7804], 'mapped', [7805]], - [[7805, 7805], 'valid'], - [[7806, 7806], 'mapped', [7807]], - [[7807, 7807], 'valid'], - [[7808, 7808], 'mapped', [7809]], - [[7809, 7809], 'valid'], - [[7810, 7810], 'mapped', [7811]], - [[7811, 7811], 'valid'], - [[7812, 7812], 'mapped', [7813]], - [[7813, 7813], 'valid'], - [[7814, 7814], 'mapped', [7815]], - [[7815, 7815], 'valid'], - [[7816, 7816], 'mapped', [7817]], - [[7817, 7817], 'valid'], - [[7818, 7818], 'mapped', [7819]], - [[7819, 7819], 'valid'], - [[7820, 7820], 'mapped', [7821]], - [[7821, 7821], 'valid'], - [[7822, 7822], 'mapped', [7823]], - [[7823, 7823], 'valid'], - [[7824, 7824], 'mapped', [7825]], - [[7825, 7825], 'valid'], - [[7826, 7826], 'mapped', [7827]], - [[7827, 7827], 'valid'], - [[7828, 7828], 'mapped', [7829]], - [[7829, 7833], 'valid'], - [[7834, 7834], 'mapped', [97, 702]], - [[7835, 7835], 'mapped', [7777]], - [[7836, 7837], 'valid'], - [[7838, 7838], 'mapped', [115, 115]], - [[7839, 7839], 'valid'], - [[7840, 7840], 'mapped', [7841]], - [[7841, 7841], 'valid'], - [[7842, 7842], 'mapped', [7843]], - [[7843, 7843], 'valid'], - [[7844, 7844], 'mapped', [7845]], - [[7845, 7845], 'valid'], - [[7846, 7846], 'mapped', [7847]], - [[7847, 7847], 'valid'], - [[7848, 7848], 'mapped', [7849]], - [[7849, 7849], 'valid'], - [[7850, 7850], 'mapped', [7851]], - [[7851, 7851], 'valid'], - [[7852, 7852], 'mapped', [7853]], - [[7853, 7853], 'valid'], - [[7854, 7854], 'mapped', [7855]], - [[7855, 7855], 'valid'], - [[7856, 7856], 'mapped', [7857]], - [[7857, 7857], 'valid'], - [[7858, 7858], 'mapped', [7859]], - [[7859, 7859], 'valid'], - [[7860, 7860], 'mapped', [7861]], - [[7861, 7861], 'valid'], - [[7862, 7862], 'mapped', [7863]], - [[7863, 7863], 'valid'], - [[7864, 7864], 'mapped', [7865]], - [[7865, 7865], 'valid'], - [[7866, 7866], 'mapped', [7867]], - [[7867, 7867], 'valid'], - [[7868, 7868], 'mapped', [7869]], - [[7869, 7869], 'valid'], - [[7870, 7870], 'mapped', [7871]], - [[7871, 7871], 'valid'], - [[7872, 7872], 'mapped', [7873]], - [[7873, 7873], 'valid'], - [[7874, 7874], 'mapped', [7875]], - [[7875, 7875], 'valid'], - [[7876, 7876], 'mapped', [7877]], - [[7877, 7877], 'valid'], - [[7878, 7878], 'mapped', [7879]], - [[7879, 7879], 'valid'], - [[7880, 7880], 'mapped', [7881]], - [[7881, 7881], 'valid'], - [[7882, 7882], 'mapped', [7883]], - [[7883, 7883], 'valid'], - [[7884, 7884], 'mapped', [7885]], - [[7885, 7885], 'valid'], - [[7886, 7886], 'mapped', [7887]], - [[7887, 7887], 'valid'], - [[7888, 7888], 'mapped', [7889]], - [[7889, 7889], 'valid'], - [[7890, 7890], 'mapped', [7891]], - [[7891, 7891], 'valid'], - [[7892, 7892], 'mapped', [7893]], - [[7893, 7893], 'valid'], - [[7894, 7894], 'mapped', [7895]], - [[7895, 7895], 'valid'], - [[7896, 7896], 'mapped', [7897]], - [[7897, 7897], 'valid'], - [[7898, 7898], 'mapped', [7899]], - [[7899, 7899], 'valid'], - [[7900, 7900], 'mapped', [7901]], - [[7901, 7901], 'valid'], - [[7902, 7902], 'mapped', [7903]], - [[7903, 7903], 'valid'], - [[7904, 7904], 'mapped', [7905]], - [[7905, 7905], 'valid'], - [[7906, 7906], 'mapped', [7907]], - [[7907, 7907], 'valid'], - [[7908, 7908], 'mapped', [7909]], - [[7909, 7909], 'valid'], - [[7910, 7910], 'mapped', [7911]], - [[7911, 7911], 'valid'], - [[7912, 7912], 'mapped', [7913]], - [[7913, 7913], 'valid'], - [[7914, 7914], 'mapped', [7915]], - [[7915, 7915], 'valid'], - [[7916, 7916], 'mapped', [7917]], - [[7917, 7917], 'valid'], - [[7918, 7918], 'mapped', [7919]], - [[7919, 7919], 'valid'], - [[7920, 7920], 'mapped', [7921]], - [[7921, 7921], 'valid'], - [[7922, 7922], 'mapped', [7923]], - [[7923, 7923], 'valid'], - [[7924, 7924], 'mapped', [7925]], - [[7925, 7925], 'valid'], - [[7926, 7926], 'mapped', [7927]], - [[7927, 7927], 'valid'], - [[7928, 7928], 'mapped', [7929]], - [[7929, 7929], 'valid'], - [[7930, 7930], 'mapped', [7931]], - [[7931, 7931], 'valid'], - [[7932, 7932], 'mapped', [7933]], - [[7933, 7933], 'valid'], - [[7934, 7934], 'mapped', [7935]], - [[7935, 7935], 'valid'], - [[7936, 7943], 'valid'], - [[7944, 7944], 'mapped', [7936]], - [[7945, 7945], 'mapped', [7937]], - [[7946, 7946], 'mapped', [7938]], - [[7947, 7947], 'mapped', [7939]], - [[7948, 7948], 'mapped', [7940]], - [[7949, 7949], 'mapped', [7941]], - [[7950, 7950], 'mapped', [7942]], - [[7951, 7951], 'mapped', [7943]], - [[7952, 7957], 'valid'], - [[7958, 7959], 'disallowed'], - [[7960, 7960], 'mapped', [7952]], - [[7961, 7961], 'mapped', [7953]], - [[7962, 7962], 'mapped', [7954]], - [[7963, 7963], 'mapped', [7955]], - [[7964, 7964], 'mapped', [7956]], - [[7965, 7965], 'mapped', [7957]], - [[7966, 7967], 'disallowed'], - [[7968, 7975], 'valid'], - [[7976, 7976], 'mapped', [7968]], - [[7977, 7977], 'mapped', [7969]], - [[7978, 7978], 'mapped', [7970]], - [[7979, 7979], 'mapped', [7971]], - [[7980, 7980], 'mapped', [7972]], - [[7981, 7981], 'mapped', [7973]], - [[7982, 7982], 'mapped', [7974]], - [[7983, 7983], 'mapped', [7975]], - [[7984, 7991], 'valid'], - [[7992, 7992], 'mapped', [7984]], - [[7993, 7993], 'mapped', [7985]], - [[7994, 7994], 'mapped', [7986]], - [[7995, 7995], 'mapped', [7987]], - [[7996, 7996], 'mapped', [7988]], - [[7997, 7997], 'mapped', [7989]], - [[7998, 7998], 'mapped', [7990]], - [[7999, 7999], 'mapped', [7991]], - [[8e3, 8005], 'valid'], - [[8006, 8007], 'disallowed'], - [[8008, 8008], 'mapped', [8e3]], - [[8009, 8009], 'mapped', [8001]], - [[8010, 8010], 'mapped', [8002]], - [[8011, 8011], 'mapped', [8003]], - [[8012, 8012], 'mapped', [8004]], - [[8013, 8013], 'mapped', [8005]], - [[8014, 8015], 'disallowed'], - [[8016, 8023], 'valid'], - [[8024, 8024], 'disallowed'], - [[8025, 8025], 'mapped', [8017]], - [[8026, 8026], 'disallowed'], - [[8027, 8027], 'mapped', [8019]], - [[8028, 8028], 'disallowed'], - [[8029, 8029], 'mapped', [8021]], - [[8030, 8030], 'disallowed'], - [[8031, 8031], 'mapped', [8023]], - [[8032, 8039], 'valid'], - [[8040, 8040], 'mapped', [8032]], - [[8041, 8041], 'mapped', [8033]], - [[8042, 8042], 'mapped', [8034]], - [[8043, 8043], 'mapped', [8035]], - [[8044, 8044], 'mapped', [8036]], - [[8045, 8045], 'mapped', [8037]], - [[8046, 8046], 'mapped', [8038]], - [[8047, 8047], 'mapped', [8039]], - [[8048, 8048], 'valid'], - [[8049, 8049], 'mapped', [940]], - [[8050, 8050], 'valid'], - [[8051, 8051], 'mapped', [941]], - [[8052, 8052], 'valid'], - [[8053, 8053], 'mapped', [942]], - [[8054, 8054], 'valid'], - [[8055, 8055], 'mapped', [943]], - [[8056, 8056], 'valid'], - [[8057, 8057], 'mapped', [972]], - [[8058, 8058], 'valid'], - [[8059, 8059], 'mapped', [973]], - [[8060, 8060], 'valid'], - [[8061, 8061], 'mapped', [974]], - [[8062, 8063], 'disallowed'], - [[8064, 8064], 'mapped', [7936, 953]], - [[8065, 8065], 'mapped', [7937, 953]], - [[8066, 8066], 'mapped', [7938, 953]], - [[8067, 8067], 'mapped', [7939, 953]], - [[8068, 8068], 'mapped', [7940, 953]], - [[8069, 8069], 'mapped', [7941, 953]], - [[8070, 8070], 'mapped', [7942, 953]], - [[8071, 8071], 'mapped', [7943, 953]], - [[8072, 8072], 'mapped', [7936, 953]], - [[8073, 8073], 'mapped', [7937, 953]], - [[8074, 8074], 'mapped', [7938, 953]], - [[8075, 8075], 'mapped', [7939, 953]], - [[8076, 8076], 'mapped', [7940, 953]], - [[8077, 8077], 'mapped', [7941, 953]], - [[8078, 8078], 'mapped', [7942, 953]], - [[8079, 8079], 'mapped', [7943, 953]], - [[8080, 8080], 'mapped', [7968, 953]], - [[8081, 8081], 'mapped', [7969, 953]], - [[8082, 8082], 'mapped', [7970, 953]], - [[8083, 8083], 'mapped', [7971, 953]], - [[8084, 8084], 'mapped', [7972, 953]], - [[8085, 8085], 'mapped', [7973, 953]], - [[8086, 8086], 'mapped', [7974, 953]], - [[8087, 8087], 'mapped', [7975, 953]], - [[8088, 8088], 'mapped', [7968, 953]], - [[8089, 8089], 'mapped', [7969, 953]], - [[8090, 8090], 'mapped', [7970, 953]], - [[8091, 8091], 'mapped', [7971, 953]], - [[8092, 8092], 'mapped', [7972, 953]], - [[8093, 8093], 'mapped', [7973, 953]], - [[8094, 8094], 'mapped', [7974, 953]], - [[8095, 8095], 'mapped', [7975, 953]], - [[8096, 8096], 'mapped', [8032, 953]], - [[8097, 8097], 'mapped', [8033, 953]], - [[8098, 8098], 'mapped', [8034, 953]], - [[8099, 8099], 'mapped', [8035, 953]], - [[8100, 8100], 'mapped', [8036, 953]], - [[8101, 8101], 'mapped', [8037, 953]], - [[8102, 8102], 'mapped', [8038, 953]], - [[8103, 8103], 'mapped', [8039, 953]], - [[8104, 8104], 'mapped', [8032, 953]], - [[8105, 8105], 'mapped', [8033, 953]], - [[8106, 8106], 'mapped', [8034, 953]], - [[8107, 8107], 'mapped', [8035, 953]], - [[8108, 8108], 'mapped', [8036, 953]], - [[8109, 8109], 'mapped', [8037, 953]], - [[8110, 8110], 'mapped', [8038, 953]], - [[8111, 8111], 'mapped', [8039, 953]], - [[8112, 8113], 'valid'], - [[8114, 8114], 'mapped', [8048, 953]], - [[8115, 8115], 'mapped', [945, 953]], - [[8116, 8116], 'mapped', [940, 953]], - [[8117, 8117], 'disallowed'], - [[8118, 8118], 'valid'], - [[8119, 8119], 'mapped', [8118, 953]], - [[8120, 8120], 'mapped', [8112]], - [[8121, 8121], 'mapped', [8113]], - [[8122, 8122], 'mapped', [8048]], - [[8123, 8123], 'mapped', [940]], - [[8124, 8124], 'mapped', [945, 953]], - [[8125, 8125], 'disallowed_STD3_mapped', [32, 787]], - [[8126, 8126], 'mapped', [953]], - [[8127, 8127], 'disallowed_STD3_mapped', [32, 787]], - [[8128, 8128], 'disallowed_STD3_mapped', [32, 834]], - [[8129, 8129], 'disallowed_STD3_mapped', [32, 776, 834]], - [[8130, 8130], 'mapped', [8052, 953]], - [[8131, 8131], 'mapped', [951, 953]], - [[8132, 8132], 'mapped', [942, 953]], - [[8133, 8133], 'disallowed'], - [[8134, 8134], 'valid'], - [[8135, 8135], 'mapped', [8134, 953]], - [[8136, 8136], 'mapped', [8050]], - [[8137, 8137], 'mapped', [941]], - [[8138, 8138], 'mapped', [8052]], - [[8139, 8139], 'mapped', [942]], - [[8140, 8140], 'mapped', [951, 953]], - [[8141, 8141], 'disallowed_STD3_mapped', [32, 787, 768]], - [[8142, 8142], 'disallowed_STD3_mapped', [32, 787, 769]], - [[8143, 8143], 'disallowed_STD3_mapped', [32, 787, 834]], - [[8144, 8146], 'valid'], - [[8147, 8147], 'mapped', [912]], - [[8148, 8149], 'disallowed'], - [[8150, 8151], 'valid'], - [[8152, 8152], 'mapped', [8144]], - [[8153, 8153], 'mapped', [8145]], - [[8154, 8154], 'mapped', [8054]], - [[8155, 8155], 'mapped', [943]], - [[8156, 8156], 'disallowed'], - [[8157, 8157], 'disallowed_STD3_mapped', [32, 788, 768]], - [[8158, 8158], 'disallowed_STD3_mapped', [32, 788, 769]], - [[8159, 8159], 'disallowed_STD3_mapped', [32, 788, 834]], - [[8160, 8162], 'valid'], - [[8163, 8163], 'mapped', [944]], - [[8164, 8167], 'valid'], - [[8168, 8168], 'mapped', [8160]], - [[8169, 8169], 'mapped', [8161]], - [[8170, 8170], 'mapped', [8058]], - [[8171, 8171], 'mapped', [973]], - [[8172, 8172], 'mapped', [8165]], - [[8173, 8173], 'disallowed_STD3_mapped', [32, 776, 768]], - [[8174, 8174], 'disallowed_STD3_mapped', [32, 776, 769]], - [[8175, 8175], 'disallowed_STD3_mapped', [96]], - [[8176, 8177], 'disallowed'], - [[8178, 8178], 'mapped', [8060, 953]], - [[8179, 8179], 'mapped', [969, 953]], - [[8180, 8180], 'mapped', [974, 953]], - [[8181, 8181], 'disallowed'], - [[8182, 8182], 'valid'], - [[8183, 8183], 'mapped', [8182, 953]], - [[8184, 8184], 'mapped', [8056]], - [[8185, 8185], 'mapped', [972]], - [[8186, 8186], 'mapped', [8060]], - [[8187, 8187], 'mapped', [974]], - [[8188, 8188], 'mapped', [969, 953]], - [[8189, 8189], 'disallowed_STD3_mapped', [32, 769]], - [[8190, 8190], 'disallowed_STD3_mapped', [32, 788]], - [[8191, 8191], 'disallowed'], - [[8192, 8202], 'disallowed_STD3_mapped', [32]], - [[8203, 8203], 'ignored'], - [[8204, 8205], 'deviation', []], - [[8206, 8207], 'disallowed'], - [[8208, 8208], 'valid', [], 'NV8'], - [[8209, 8209], 'mapped', [8208]], - [[8210, 8214], 'valid', [], 'NV8'], - [[8215, 8215], 'disallowed_STD3_mapped', [32, 819]], - [[8216, 8227], 'valid', [], 'NV8'], - [[8228, 8230], 'disallowed'], - [[8231, 8231], 'valid', [], 'NV8'], - [[8232, 8238], 'disallowed'], - [[8239, 8239], 'disallowed_STD3_mapped', [32]], - [[8240, 8242], 'valid', [], 'NV8'], - [[8243, 8243], 'mapped', [8242, 8242]], - [[8244, 8244], 'mapped', [8242, 8242, 8242]], - [[8245, 8245], 'valid', [], 'NV8'], - [[8246, 8246], 'mapped', [8245, 8245]], - [[8247, 8247], 'mapped', [8245, 8245, 8245]], - [[8248, 8251], 'valid', [], 'NV8'], - [[8252, 8252], 'disallowed_STD3_mapped', [33, 33]], - [[8253, 8253], 'valid', [], 'NV8'], - [[8254, 8254], 'disallowed_STD3_mapped', [32, 773]], - [[8255, 8262], 'valid', [], 'NV8'], - [[8263, 8263], 'disallowed_STD3_mapped', [63, 63]], - [[8264, 8264], 'disallowed_STD3_mapped', [63, 33]], - [[8265, 8265], 'disallowed_STD3_mapped', [33, 63]], - [[8266, 8269], 'valid', [], 'NV8'], - [[8270, 8274], 'valid', [], 'NV8'], - [[8275, 8276], 'valid', [], 'NV8'], - [[8277, 8278], 'valid', [], 'NV8'], - [[8279, 8279], 'mapped', [8242, 8242, 8242, 8242]], - [[8280, 8286], 'valid', [], 'NV8'], - [[8287, 8287], 'disallowed_STD3_mapped', [32]], - [[8288, 8288], 'ignored'], - [[8289, 8291], 'disallowed'], - [[8292, 8292], 'ignored'], - [[8293, 8293], 'disallowed'], - [[8294, 8297], 'disallowed'], - [[8298, 8303], 'disallowed'], - [[8304, 8304], 'mapped', [48]], - [[8305, 8305], 'mapped', [105]], - [[8306, 8307], 'disallowed'], - [[8308, 8308], 'mapped', [52]], - [[8309, 8309], 'mapped', [53]], - [[8310, 8310], 'mapped', [54]], - [[8311, 8311], 'mapped', [55]], - [[8312, 8312], 'mapped', [56]], - [[8313, 8313], 'mapped', [57]], - [[8314, 8314], 'disallowed_STD3_mapped', [43]], - [[8315, 8315], 'mapped', [8722]], - [[8316, 8316], 'disallowed_STD3_mapped', [61]], - [[8317, 8317], 'disallowed_STD3_mapped', [40]], - [[8318, 8318], 'disallowed_STD3_mapped', [41]], - [[8319, 8319], 'mapped', [110]], - [[8320, 8320], 'mapped', [48]], - [[8321, 8321], 'mapped', [49]], - [[8322, 8322], 'mapped', [50]], - [[8323, 8323], 'mapped', [51]], - [[8324, 8324], 'mapped', [52]], - [[8325, 8325], 'mapped', [53]], - [[8326, 8326], 'mapped', [54]], - [[8327, 8327], 'mapped', [55]], - [[8328, 8328], 'mapped', [56]], - [[8329, 8329], 'mapped', [57]], - [[8330, 8330], 'disallowed_STD3_mapped', [43]], - [[8331, 8331], 'mapped', [8722]], - [[8332, 8332], 'disallowed_STD3_mapped', [61]], - [[8333, 8333], 'disallowed_STD3_mapped', [40]], - [[8334, 8334], 'disallowed_STD3_mapped', [41]], - [[8335, 8335], 'disallowed'], - [[8336, 8336], 'mapped', [97]], - [[8337, 8337], 'mapped', [101]], - [[8338, 8338], 'mapped', [111]], - [[8339, 8339], 'mapped', [120]], - [[8340, 8340], 'mapped', [601]], - [[8341, 8341], 'mapped', [104]], - [[8342, 8342], 'mapped', [107]], - [[8343, 8343], 'mapped', [108]], - [[8344, 8344], 'mapped', [109]], - [[8345, 8345], 'mapped', [110]], - [[8346, 8346], 'mapped', [112]], - [[8347, 8347], 'mapped', [115]], - [[8348, 8348], 'mapped', [116]], - [[8349, 8351], 'disallowed'], - [[8352, 8359], 'valid', [], 'NV8'], - [[8360, 8360], 'mapped', [114, 115]], - [[8361, 8362], 'valid', [], 'NV8'], - [[8363, 8363], 'valid', [], 'NV8'], - [[8364, 8364], 'valid', [], 'NV8'], - [[8365, 8367], 'valid', [], 'NV8'], - [[8368, 8369], 'valid', [], 'NV8'], - [[8370, 8373], 'valid', [], 'NV8'], - [[8374, 8376], 'valid', [], 'NV8'], - [[8377, 8377], 'valid', [], 'NV8'], - [[8378, 8378], 'valid', [], 'NV8'], - [[8379, 8381], 'valid', [], 'NV8'], - [[8382, 8382], 'valid', [], 'NV8'], - [[8383, 8399], 'disallowed'], - [[8400, 8417], 'valid', [], 'NV8'], - [[8418, 8419], 'valid', [], 'NV8'], - [[8420, 8426], 'valid', [], 'NV8'], - [[8427, 8427], 'valid', [], 'NV8'], - [[8428, 8431], 'valid', [], 'NV8'], - [[8432, 8432], 'valid', [], 'NV8'], - [[8433, 8447], 'disallowed'], - [[8448, 8448], 'disallowed_STD3_mapped', [97, 47, 99]], - [[8449, 8449], 'disallowed_STD3_mapped', [97, 47, 115]], - [[8450, 8450], 'mapped', [99]], - [[8451, 8451], 'mapped', [176, 99]], - [[8452, 8452], 'valid', [], 'NV8'], - [[8453, 8453], 'disallowed_STD3_mapped', [99, 47, 111]], - [[8454, 8454], 'disallowed_STD3_mapped', [99, 47, 117]], - [[8455, 8455], 'mapped', [603]], - [[8456, 8456], 'valid', [], 'NV8'], - [[8457, 8457], 'mapped', [176, 102]], - [[8458, 8458], 'mapped', [103]], - [[8459, 8462], 'mapped', [104]], - [[8463, 8463], 'mapped', [295]], - [[8464, 8465], 'mapped', [105]], - [[8466, 8467], 'mapped', [108]], - [[8468, 8468], 'valid', [], 'NV8'], - [[8469, 8469], 'mapped', [110]], - [[8470, 8470], 'mapped', [110, 111]], - [[8471, 8472], 'valid', [], 'NV8'], - [[8473, 8473], 'mapped', [112]], - [[8474, 8474], 'mapped', [113]], - [[8475, 8477], 'mapped', [114]], - [[8478, 8479], 'valid', [], 'NV8'], - [[8480, 8480], 'mapped', [115, 109]], - [[8481, 8481], 'mapped', [116, 101, 108]], - [[8482, 8482], 'mapped', [116, 109]], - [[8483, 8483], 'valid', [], 'NV8'], - [[8484, 8484], 'mapped', [122]], - [[8485, 8485], 'valid', [], 'NV8'], - [[8486, 8486], 'mapped', [969]], - [[8487, 8487], 'valid', [], 'NV8'], - [[8488, 8488], 'mapped', [122]], - [[8489, 8489], 'valid', [], 'NV8'], - [[8490, 8490], 'mapped', [107]], - [[8491, 8491], 'mapped', [229]], - [[8492, 8492], 'mapped', [98]], - [[8493, 8493], 'mapped', [99]], - [[8494, 8494], 'valid', [], 'NV8'], - [[8495, 8496], 'mapped', [101]], - [[8497, 8497], 'mapped', [102]], - [[8498, 8498], 'disallowed'], - [[8499, 8499], 'mapped', [109]], - [[8500, 8500], 'mapped', [111]], - [[8501, 8501], 'mapped', [1488]], - [[8502, 8502], 'mapped', [1489]], - [[8503, 8503], 'mapped', [1490]], - [[8504, 8504], 'mapped', [1491]], - [[8505, 8505], 'mapped', [105]], - [[8506, 8506], 'valid', [], 'NV8'], - [[8507, 8507], 'mapped', [102, 97, 120]], - [[8508, 8508], 'mapped', [960]], - [[8509, 8510], 'mapped', [947]], - [[8511, 8511], 'mapped', [960]], - [[8512, 8512], 'mapped', [8721]], - [[8513, 8516], 'valid', [], 'NV8'], - [[8517, 8518], 'mapped', [100]], - [[8519, 8519], 'mapped', [101]], - [[8520, 8520], 'mapped', [105]], - [[8521, 8521], 'mapped', [106]], - [[8522, 8523], 'valid', [], 'NV8'], - [[8524, 8524], 'valid', [], 'NV8'], - [[8525, 8525], 'valid', [], 'NV8'], - [[8526, 8526], 'valid'], - [[8527, 8527], 'valid', [], 'NV8'], - [[8528, 8528], 'mapped', [49, 8260, 55]], - [[8529, 8529], 'mapped', [49, 8260, 57]], - [[8530, 8530], 'mapped', [49, 8260, 49, 48]], - [[8531, 8531], 'mapped', [49, 8260, 51]], - [[8532, 8532], 'mapped', [50, 8260, 51]], - [[8533, 8533], 'mapped', [49, 8260, 53]], - [[8534, 8534], 'mapped', [50, 8260, 53]], - [[8535, 8535], 'mapped', [51, 8260, 53]], - [[8536, 8536], 'mapped', [52, 8260, 53]], - [[8537, 8537], 'mapped', [49, 8260, 54]], - [[8538, 8538], 'mapped', [53, 8260, 54]], - [[8539, 8539], 'mapped', [49, 8260, 56]], - [[8540, 8540], 'mapped', [51, 8260, 56]], - [[8541, 8541], 'mapped', [53, 8260, 56]], - [[8542, 8542], 'mapped', [55, 8260, 56]], - [[8543, 8543], 'mapped', [49, 8260]], - [[8544, 8544], 'mapped', [105]], - [[8545, 8545], 'mapped', [105, 105]], - [[8546, 8546], 'mapped', [105, 105, 105]], - [[8547, 8547], 'mapped', [105, 118]], - [[8548, 8548], 'mapped', [118]], - [[8549, 8549], 'mapped', [118, 105]], - [[8550, 8550], 'mapped', [118, 105, 105]], - [[8551, 8551], 'mapped', [118, 105, 105, 105]], - [[8552, 8552], 'mapped', [105, 120]], - [[8553, 8553], 'mapped', [120]], - [[8554, 8554], 'mapped', [120, 105]], - [[8555, 8555], 'mapped', [120, 105, 105]], - [[8556, 8556], 'mapped', [108]], - [[8557, 8557], 'mapped', [99]], - [[8558, 8558], 'mapped', [100]], - [[8559, 8559], 'mapped', [109]], - [[8560, 8560], 'mapped', [105]], - [[8561, 8561], 'mapped', [105, 105]], - [[8562, 8562], 'mapped', [105, 105, 105]], - [[8563, 8563], 'mapped', [105, 118]], - [[8564, 8564], 'mapped', [118]], - [[8565, 8565], 'mapped', [118, 105]], - [[8566, 8566], 'mapped', [118, 105, 105]], - [[8567, 8567], 'mapped', [118, 105, 105, 105]], - [[8568, 8568], 'mapped', [105, 120]], - [[8569, 8569], 'mapped', [120]], - [[8570, 8570], 'mapped', [120, 105]], - [[8571, 8571], 'mapped', [120, 105, 105]], - [[8572, 8572], 'mapped', [108]], - [[8573, 8573], 'mapped', [99]], - [[8574, 8574], 'mapped', [100]], - [[8575, 8575], 'mapped', [109]], - [[8576, 8578], 'valid', [], 'NV8'], - [[8579, 8579], 'disallowed'], - [[8580, 8580], 'valid'], - [[8581, 8584], 'valid', [], 'NV8'], - [[8585, 8585], 'mapped', [48, 8260, 51]], - [[8586, 8587], 'valid', [], 'NV8'], - [[8588, 8591], 'disallowed'], - [[8592, 8682], 'valid', [], 'NV8'], - [[8683, 8691], 'valid', [], 'NV8'], - [[8692, 8703], 'valid', [], 'NV8'], - [[8704, 8747], 'valid', [], 'NV8'], - [[8748, 8748], 'mapped', [8747, 8747]], - [[8749, 8749], 'mapped', [8747, 8747, 8747]], - [[8750, 8750], 'valid', [], 'NV8'], - [[8751, 8751], 'mapped', [8750, 8750]], - [[8752, 8752], 'mapped', [8750, 8750, 8750]], - [[8753, 8799], 'valid', [], 'NV8'], - [[8800, 8800], 'disallowed_STD3_valid'], - [[8801, 8813], 'valid', [], 'NV8'], - [[8814, 8815], 'disallowed_STD3_valid'], - [[8816, 8945], 'valid', [], 'NV8'], - [[8946, 8959], 'valid', [], 'NV8'], - [[8960, 8960], 'valid', [], 'NV8'], - [[8961, 8961], 'valid', [], 'NV8'], - [[8962, 9e3], 'valid', [], 'NV8'], - [[9001, 9001], 'mapped', [12296]], - [[9002, 9002], 'mapped', [12297]], - [[9003, 9082], 'valid', [], 'NV8'], - [[9083, 9083], 'valid', [], 'NV8'], - [[9084, 9084], 'valid', [], 'NV8'], - [[9085, 9114], 'valid', [], 'NV8'], - [[9115, 9166], 'valid', [], 'NV8'], - [[9167, 9168], 'valid', [], 'NV8'], - [[9169, 9179], 'valid', [], 'NV8'], - [[9180, 9191], 'valid', [], 'NV8'], - [[9192, 9192], 'valid', [], 'NV8'], - [[9193, 9203], 'valid', [], 'NV8'], - [[9204, 9210], 'valid', [], 'NV8'], - [[9211, 9215], 'disallowed'], - [[9216, 9252], 'valid', [], 'NV8'], - [[9253, 9254], 'valid', [], 'NV8'], - [[9255, 9279], 'disallowed'], - [[9280, 9290], 'valid', [], 'NV8'], - [[9291, 9311], 'disallowed'], - [[9312, 9312], 'mapped', [49]], - [[9313, 9313], 'mapped', [50]], - [[9314, 9314], 'mapped', [51]], - [[9315, 9315], 'mapped', [52]], - [[9316, 9316], 'mapped', [53]], - [[9317, 9317], 'mapped', [54]], - [[9318, 9318], 'mapped', [55]], - [[9319, 9319], 'mapped', [56]], - [[9320, 9320], 'mapped', [57]], - [[9321, 9321], 'mapped', [49, 48]], - [[9322, 9322], 'mapped', [49, 49]], - [[9323, 9323], 'mapped', [49, 50]], - [[9324, 9324], 'mapped', [49, 51]], - [[9325, 9325], 'mapped', [49, 52]], - [[9326, 9326], 'mapped', [49, 53]], - [[9327, 9327], 'mapped', [49, 54]], - [[9328, 9328], 'mapped', [49, 55]], - [[9329, 9329], 'mapped', [49, 56]], - [[9330, 9330], 'mapped', [49, 57]], - [[9331, 9331], 'mapped', [50, 48]], - [[9332, 9332], 'disallowed_STD3_mapped', [40, 49, 41]], - [[9333, 9333], 'disallowed_STD3_mapped', [40, 50, 41]], - [[9334, 9334], 'disallowed_STD3_mapped', [40, 51, 41]], - [[9335, 9335], 'disallowed_STD3_mapped', [40, 52, 41]], - [[9336, 9336], 'disallowed_STD3_mapped', [40, 53, 41]], - [[9337, 9337], 'disallowed_STD3_mapped', [40, 54, 41]], - [[9338, 9338], 'disallowed_STD3_mapped', [40, 55, 41]], - [[9339, 9339], 'disallowed_STD3_mapped', [40, 56, 41]], - [[9340, 9340], 'disallowed_STD3_mapped', [40, 57, 41]], - [[9341, 9341], 'disallowed_STD3_mapped', [40, 49, 48, 41]], - [[9342, 9342], 'disallowed_STD3_mapped', [40, 49, 49, 41]], - [[9343, 9343], 'disallowed_STD3_mapped', [40, 49, 50, 41]], - [[9344, 9344], 'disallowed_STD3_mapped', [40, 49, 51, 41]], - [[9345, 9345], 'disallowed_STD3_mapped', [40, 49, 52, 41]], - [[9346, 9346], 'disallowed_STD3_mapped', [40, 49, 53, 41]], - [[9347, 9347], 'disallowed_STD3_mapped', [40, 49, 54, 41]], - [[9348, 9348], 'disallowed_STD3_mapped', [40, 49, 55, 41]], - [[9349, 9349], 'disallowed_STD3_mapped', [40, 49, 56, 41]], - [[9350, 9350], 'disallowed_STD3_mapped', [40, 49, 57, 41]], - [[9351, 9351], 'disallowed_STD3_mapped', [40, 50, 48, 41]], - [[9352, 9371], 'disallowed'], - [[9372, 9372], 'disallowed_STD3_mapped', [40, 97, 41]], - [[9373, 9373], 'disallowed_STD3_mapped', [40, 98, 41]], - [[9374, 9374], 'disallowed_STD3_mapped', [40, 99, 41]], - [[9375, 9375], 'disallowed_STD3_mapped', [40, 100, 41]], - [[9376, 9376], 'disallowed_STD3_mapped', [40, 101, 41]], - [[9377, 9377], 'disallowed_STD3_mapped', [40, 102, 41]], - [[9378, 9378], 'disallowed_STD3_mapped', [40, 103, 41]], - [[9379, 9379], 'disallowed_STD3_mapped', [40, 104, 41]], - [[9380, 9380], 'disallowed_STD3_mapped', [40, 105, 41]], - [[9381, 9381], 'disallowed_STD3_mapped', [40, 106, 41]], - [[9382, 9382], 'disallowed_STD3_mapped', [40, 107, 41]], - [[9383, 9383], 'disallowed_STD3_mapped', [40, 108, 41]], - [[9384, 9384], 'disallowed_STD3_mapped', [40, 109, 41]], - [[9385, 9385], 'disallowed_STD3_mapped', [40, 110, 41]], - [[9386, 9386], 'disallowed_STD3_mapped', [40, 111, 41]], - [[9387, 9387], 'disallowed_STD3_mapped', [40, 112, 41]], - [[9388, 9388], 'disallowed_STD3_mapped', [40, 113, 41]], - [[9389, 9389], 'disallowed_STD3_mapped', [40, 114, 41]], - [[9390, 9390], 'disallowed_STD3_mapped', [40, 115, 41]], - [[9391, 9391], 'disallowed_STD3_mapped', [40, 116, 41]], - [[9392, 9392], 'disallowed_STD3_mapped', [40, 117, 41]], - [[9393, 9393], 'disallowed_STD3_mapped', [40, 118, 41]], - [[9394, 9394], 'disallowed_STD3_mapped', [40, 119, 41]], - [[9395, 9395], 'disallowed_STD3_mapped', [40, 120, 41]], - [[9396, 9396], 'disallowed_STD3_mapped', [40, 121, 41]], - [[9397, 9397], 'disallowed_STD3_mapped', [40, 122, 41]], - [[9398, 9398], 'mapped', [97]], - [[9399, 9399], 'mapped', [98]], - [[9400, 9400], 'mapped', [99]], - [[9401, 9401], 'mapped', [100]], - [[9402, 9402], 'mapped', [101]], - [[9403, 9403], 'mapped', [102]], - [[9404, 9404], 'mapped', [103]], - [[9405, 9405], 'mapped', [104]], - [[9406, 9406], 'mapped', [105]], - [[9407, 9407], 'mapped', [106]], - [[9408, 9408], 'mapped', [107]], - [[9409, 9409], 'mapped', [108]], - [[9410, 9410], 'mapped', [109]], - [[9411, 9411], 'mapped', [110]], - [[9412, 9412], 'mapped', [111]], - [[9413, 9413], 'mapped', [112]], - [[9414, 9414], 'mapped', [113]], - [[9415, 9415], 'mapped', [114]], - [[9416, 9416], 'mapped', [115]], - [[9417, 9417], 'mapped', [116]], - [[9418, 9418], 'mapped', [117]], - [[9419, 9419], 'mapped', [118]], - [[9420, 9420], 'mapped', [119]], - [[9421, 9421], 'mapped', [120]], - [[9422, 9422], 'mapped', [121]], - [[9423, 9423], 'mapped', [122]], - [[9424, 9424], 'mapped', [97]], - [[9425, 9425], 'mapped', [98]], - [[9426, 9426], 'mapped', [99]], - [[9427, 9427], 'mapped', [100]], - [[9428, 9428], 'mapped', [101]], - [[9429, 9429], 'mapped', [102]], - [[9430, 9430], 'mapped', [103]], - [[9431, 9431], 'mapped', [104]], - [[9432, 9432], 'mapped', [105]], - [[9433, 9433], 'mapped', [106]], - [[9434, 9434], 'mapped', [107]], - [[9435, 9435], 'mapped', [108]], - [[9436, 9436], 'mapped', [109]], - [[9437, 9437], 'mapped', [110]], - [[9438, 9438], 'mapped', [111]], - [[9439, 9439], 'mapped', [112]], - [[9440, 9440], 'mapped', [113]], - [[9441, 9441], 'mapped', [114]], - [[9442, 9442], 'mapped', [115]], - [[9443, 9443], 'mapped', [116]], - [[9444, 9444], 'mapped', [117]], - [[9445, 9445], 'mapped', [118]], - [[9446, 9446], 'mapped', [119]], - [[9447, 9447], 'mapped', [120]], - [[9448, 9448], 'mapped', [121]], - [[9449, 9449], 'mapped', [122]], - [[9450, 9450], 'mapped', [48]], - [[9451, 9470], 'valid', [], 'NV8'], - [[9471, 9471], 'valid', [], 'NV8'], - [[9472, 9621], 'valid', [], 'NV8'], - [[9622, 9631], 'valid', [], 'NV8'], - [[9632, 9711], 'valid', [], 'NV8'], - [[9712, 9719], 'valid', [], 'NV8'], - [[9720, 9727], 'valid', [], 'NV8'], - [[9728, 9747], 'valid', [], 'NV8'], - [[9748, 9749], 'valid', [], 'NV8'], - [[9750, 9751], 'valid', [], 'NV8'], - [[9752, 9752], 'valid', [], 'NV8'], - [[9753, 9753], 'valid', [], 'NV8'], - [[9754, 9839], 'valid', [], 'NV8'], - [[9840, 9841], 'valid', [], 'NV8'], - [[9842, 9853], 'valid', [], 'NV8'], - [[9854, 9855], 'valid', [], 'NV8'], - [[9856, 9865], 'valid', [], 'NV8'], - [[9866, 9873], 'valid', [], 'NV8'], - [[9874, 9884], 'valid', [], 'NV8'], - [[9885, 9885], 'valid', [], 'NV8'], - [[9886, 9887], 'valid', [], 'NV8'], - [[9888, 9889], 'valid', [], 'NV8'], - [[9890, 9905], 'valid', [], 'NV8'], - [[9906, 9906], 'valid', [], 'NV8'], - [[9907, 9916], 'valid', [], 'NV8'], - [[9917, 9919], 'valid', [], 'NV8'], - [[9920, 9923], 'valid', [], 'NV8'], - [[9924, 9933], 'valid', [], 'NV8'], - [[9934, 9934], 'valid', [], 'NV8'], - [[9935, 9953], 'valid', [], 'NV8'], - [[9954, 9954], 'valid', [], 'NV8'], - [[9955, 9955], 'valid', [], 'NV8'], - [[9956, 9959], 'valid', [], 'NV8'], - [[9960, 9983], 'valid', [], 'NV8'], - [[9984, 9984], 'valid', [], 'NV8'], - [[9985, 9988], 'valid', [], 'NV8'], - [[9989, 9989], 'valid', [], 'NV8'], - [[9990, 9993], 'valid', [], 'NV8'], - [[9994, 9995], 'valid', [], 'NV8'], - [[9996, 10023], 'valid', [], 'NV8'], - [[10024, 10024], 'valid', [], 'NV8'], - [[10025, 10059], 'valid', [], 'NV8'], - [[10060, 10060], 'valid', [], 'NV8'], - [[10061, 10061], 'valid', [], 'NV8'], - [[10062, 10062], 'valid', [], 'NV8'], - [[10063, 10066], 'valid', [], 'NV8'], - [[10067, 10069], 'valid', [], 'NV8'], - [[10070, 10070], 'valid', [], 'NV8'], - [[10071, 10071], 'valid', [], 'NV8'], - [[10072, 10078], 'valid', [], 'NV8'], - [[10079, 10080], 'valid', [], 'NV8'], - [[10081, 10087], 'valid', [], 'NV8'], - [[10088, 10101], 'valid', [], 'NV8'], - [[10102, 10132], 'valid', [], 'NV8'], - [[10133, 10135], 'valid', [], 'NV8'], - [[10136, 10159], 'valid', [], 'NV8'], - [[10160, 10160], 'valid', [], 'NV8'], - [[10161, 10174], 'valid', [], 'NV8'], - [[10175, 10175], 'valid', [], 'NV8'], - [[10176, 10182], 'valid', [], 'NV8'], - [[10183, 10186], 'valid', [], 'NV8'], - [[10187, 10187], 'valid', [], 'NV8'], - [[10188, 10188], 'valid', [], 'NV8'], - [[10189, 10189], 'valid', [], 'NV8'], - [[10190, 10191], 'valid', [], 'NV8'], - [[10192, 10219], 'valid', [], 'NV8'], - [[10220, 10223], 'valid', [], 'NV8'], - [[10224, 10239], 'valid', [], 'NV8'], - [[10240, 10495], 'valid', [], 'NV8'], - [[10496, 10763], 'valid', [], 'NV8'], - [[10764, 10764], 'mapped', [8747, 8747, 8747, 8747]], - [[10765, 10867], 'valid', [], 'NV8'], - [[10868, 10868], 'disallowed_STD3_mapped', [58, 58, 61]], - [[10869, 10869], 'disallowed_STD3_mapped', [61, 61]], - [[10870, 10870], 'disallowed_STD3_mapped', [61, 61, 61]], - [[10871, 10971], 'valid', [], 'NV8'], - [[10972, 10972], 'mapped', [10973, 824]], - [[10973, 11007], 'valid', [], 'NV8'], - [[11008, 11021], 'valid', [], 'NV8'], - [[11022, 11027], 'valid', [], 'NV8'], - [[11028, 11034], 'valid', [], 'NV8'], - [[11035, 11039], 'valid', [], 'NV8'], - [[11040, 11043], 'valid', [], 'NV8'], - [[11044, 11084], 'valid', [], 'NV8'], - [[11085, 11087], 'valid', [], 'NV8'], - [[11088, 11092], 'valid', [], 'NV8'], - [[11093, 11097], 'valid', [], 'NV8'], - [[11098, 11123], 'valid', [], 'NV8'], - [[11124, 11125], 'disallowed'], - [[11126, 11157], 'valid', [], 'NV8'], - [[11158, 11159], 'disallowed'], - [[11160, 11193], 'valid', [], 'NV8'], - [[11194, 11196], 'disallowed'], - [[11197, 11208], 'valid', [], 'NV8'], - [[11209, 11209], 'disallowed'], - [[11210, 11217], 'valid', [], 'NV8'], - [[11218, 11243], 'disallowed'], - [[11244, 11247], 'valid', [], 'NV8'], - [[11248, 11263], 'disallowed'], - [[11264, 11264], 'mapped', [11312]], - [[11265, 11265], 'mapped', [11313]], - [[11266, 11266], 'mapped', [11314]], - [[11267, 11267], 'mapped', [11315]], - [[11268, 11268], 'mapped', [11316]], - [[11269, 11269], 'mapped', [11317]], - [[11270, 11270], 'mapped', [11318]], - [[11271, 11271], 'mapped', [11319]], - [[11272, 11272], 'mapped', [11320]], - [[11273, 11273], 'mapped', [11321]], - [[11274, 11274], 'mapped', [11322]], - [[11275, 11275], 'mapped', [11323]], - [[11276, 11276], 'mapped', [11324]], - [[11277, 11277], 'mapped', [11325]], - [[11278, 11278], 'mapped', [11326]], - [[11279, 11279], 'mapped', [11327]], - [[11280, 11280], 'mapped', [11328]], - [[11281, 11281], 'mapped', [11329]], - [[11282, 11282], 'mapped', [11330]], - [[11283, 11283], 'mapped', [11331]], - [[11284, 11284], 'mapped', [11332]], - [[11285, 11285], 'mapped', [11333]], - [[11286, 11286], 'mapped', [11334]], - [[11287, 11287], 'mapped', [11335]], - [[11288, 11288], 'mapped', [11336]], - [[11289, 11289], 'mapped', [11337]], - [[11290, 11290], 'mapped', [11338]], - [[11291, 11291], 'mapped', [11339]], - [[11292, 11292], 'mapped', [11340]], - [[11293, 11293], 'mapped', [11341]], - [[11294, 11294], 'mapped', [11342]], - [[11295, 11295], 'mapped', [11343]], - [[11296, 11296], 'mapped', [11344]], - [[11297, 11297], 'mapped', [11345]], - [[11298, 11298], 'mapped', [11346]], - [[11299, 11299], 'mapped', [11347]], - [[11300, 11300], 'mapped', [11348]], - [[11301, 11301], 'mapped', [11349]], - [[11302, 11302], 'mapped', [11350]], - [[11303, 11303], 'mapped', [11351]], - [[11304, 11304], 'mapped', [11352]], - [[11305, 11305], 'mapped', [11353]], - [[11306, 11306], 'mapped', [11354]], - [[11307, 11307], 'mapped', [11355]], - [[11308, 11308], 'mapped', [11356]], - [[11309, 11309], 'mapped', [11357]], - [[11310, 11310], 'mapped', [11358]], - [[11311, 11311], 'disallowed'], - [[11312, 11358], 'valid'], - [[11359, 11359], 'disallowed'], - [[11360, 11360], 'mapped', [11361]], - [[11361, 11361], 'valid'], - [[11362, 11362], 'mapped', [619]], - [[11363, 11363], 'mapped', [7549]], - [[11364, 11364], 'mapped', [637]], - [[11365, 11366], 'valid'], - [[11367, 11367], 'mapped', [11368]], - [[11368, 11368], 'valid'], - [[11369, 11369], 'mapped', [11370]], - [[11370, 11370], 'valid'], - [[11371, 11371], 'mapped', [11372]], - [[11372, 11372], 'valid'], - [[11373, 11373], 'mapped', [593]], - [[11374, 11374], 'mapped', [625]], - [[11375, 11375], 'mapped', [592]], - [[11376, 11376], 'mapped', [594]], - [[11377, 11377], 'valid'], - [[11378, 11378], 'mapped', [11379]], - [[11379, 11379], 'valid'], - [[11380, 11380], 'valid'], - [[11381, 11381], 'mapped', [11382]], - [[11382, 11383], 'valid'], - [[11384, 11387], 'valid'], - [[11388, 11388], 'mapped', [106]], - [[11389, 11389], 'mapped', [118]], - [[11390, 11390], 'mapped', [575]], - [[11391, 11391], 'mapped', [576]], - [[11392, 11392], 'mapped', [11393]], - [[11393, 11393], 'valid'], - [[11394, 11394], 'mapped', [11395]], - [[11395, 11395], 'valid'], - [[11396, 11396], 'mapped', [11397]], - [[11397, 11397], 'valid'], - [[11398, 11398], 'mapped', [11399]], - [[11399, 11399], 'valid'], - [[11400, 11400], 'mapped', [11401]], - [[11401, 11401], 'valid'], - [[11402, 11402], 'mapped', [11403]], - [[11403, 11403], 'valid'], - [[11404, 11404], 'mapped', [11405]], - [[11405, 11405], 'valid'], - [[11406, 11406], 'mapped', [11407]], - [[11407, 11407], 'valid'], - [[11408, 11408], 'mapped', [11409]], - [[11409, 11409], 'valid'], - [[11410, 11410], 'mapped', [11411]], - [[11411, 11411], 'valid'], - [[11412, 11412], 'mapped', [11413]], - [[11413, 11413], 'valid'], - [[11414, 11414], 'mapped', [11415]], - [[11415, 11415], 'valid'], - [[11416, 11416], 'mapped', [11417]], - [[11417, 11417], 'valid'], - [[11418, 11418], 'mapped', [11419]], - [[11419, 11419], 'valid'], - [[11420, 11420], 'mapped', [11421]], - [[11421, 11421], 'valid'], - [[11422, 11422], 'mapped', [11423]], - [[11423, 11423], 'valid'], - [[11424, 11424], 'mapped', [11425]], - [[11425, 11425], 'valid'], - [[11426, 11426], 'mapped', [11427]], - [[11427, 11427], 'valid'], - [[11428, 11428], 'mapped', [11429]], - [[11429, 11429], 'valid'], - [[11430, 11430], 'mapped', [11431]], - [[11431, 11431], 'valid'], - [[11432, 11432], 'mapped', [11433]], - [[11433, 11433], 'valid'], - [[11434, 11434], 'mapped', [11435]], - [[11435, 11435], 'valid'], - [[11436, 11436], 'mapped', [11437]], - [[11437, 11437], 'valid'], - [[11438, 11438], 'mapped', [11439]], - [[11439, 11439], 'valid'], - [[11440, 11440], 'mapped', [11441]], - [[11441, 11441], 'valid'], - [[11442, 11442], 'mapped', [11443]], - [[11443, 11443], 'valid'], - [[11444, 11444], 'mapped', [11445]], - [[11445, 11445], 'valid'], - [[11446, 11446], 'mapped', [11447]], - [[11447, 11447], 'valid'], - [[11448, 11448], 'mapped', [11449]], - [[11449, 11449], 'valid'], - [[11450, 11450], 'mapped', [11451]], - [[11451, 11451], 'valid'], - [[11452, 11452], 'mapped', [11453]], - [[11453, 11453], 'valid'], - [[11454, 11454], 'mapped', [11455]], - [[11455, 11455], 'valid'], - [[11456, 11456], 'mapped', [11457]], - [[11457, 11457], 'valid'], - [[11458, 11458], 'mapped', [11459]], - [[11459, 11459], 'valid'], - [[11460, 11460], 'mapped', [11461]], - [[11461, 11461], 'valid'], - [[11462, 11462], 'mapped', [11463]], - [[11463, 11463], 'valid'], - [[11464, 11464], 'mapped', [11465]], - [[11465, 11465], 'valid'], - [[11466, 11466], 'mapped', [11467]], - [[11467, 11467], 'valid'], - [[11468, 11468], 'mapped', [11469]], - [[11469, 11469], 'valid'], - [[11470, 11470], 'mapped', [11471]], - [[11471, 11471], 'valid'], - [[11472, 11472], 'mapped', [11473]], - [[11473, 11473], 'valid'], - [[11474, 11474], 'mapped', [11475]], - [[11475, 11475], 'valid'], - [[11476, 11476], 'mapped', [11477]], - [[11477, 11477], 'valid'], - [[11478, 11478], 'mapped', [11479]], - [[11479, 11479], 'valid'], - [[11480, 11480], 'mapped', [11481]], - [[11481, 11481], 'valid'], - [[11482, 11482], 'mapped', [11483]], - [[11483, 11483], 'valid'], - [[11484, 11484], 'mapped', [11485]], - [[11485, 11485], 'valid'], - [[11486, 11486], 'mapped', [11487]], - [[11487, 11487], 'valid'], - [[11488, 11488], 'mapped', [11489]], - [[11489, 11489], 'valid'], - [[11490, 11490], 'mapped', [11491]], - [[11491, 11492], 'valid'], - [[11493, 11498], 'valid', [], 'NV8'], - [[11499, 11499], 'mapped', [11500]], - [[11500, 11500], 'valid'], - [[11501, 11501], 'mapped', [11502]], - [[11502, 11505], 'valid'], - [[11506, 11506], 'mapped', [11507]], - [[11507, 11507], 'valid'], - [[11508, 11512], 'disallowed'], - [[11513, 11519], 'valid', [], 'NV8'], - [[11520, 11557], 'valid'], - [[11558, 11558], 'disallowed'], - [[11559, 11559], 'valid'], - [[11560, 11564], 'disallowed'], - [[11565, 11565], 'valid'], - [[11566, 11567], 'disallowed'], - [[11568, 11621], 'valid'], - [[11622, 11623], 'valid'], - [[11624, 11630], 'disallowed'], - [[11631, 11631], 'mapped', [11617]], - [[11632, 11632], 'valid', [], 'NV8'], - [[11633, 11646], 'disallowed'], - [[11647, 11647], 'valid'], - [[11648, 11670], 'valid'], - [[11671, 11679], 'disallowed'], - [[11680, 11686], 'valid'], - [[11687, 11687], 'disallowed'], - [[11688, 11694], 'valid'], - [[11695, 11695], 'disallowed'], - [[11696, 11702], 'valid'], - [[11703, 11703], 'disallowed'], - [[11704, 11710], 'valid'], - [[11711, 11711], 'disallowed'], - [[11712, 11718], 'valid'], - [[11719, 11719], 'disallowed'], - [[11720, 11726], 'valid'], - [[11727, 11727], 'disallowed'], - [[11728, 11734], 'valid'], - [[11735, 11735], 'disallowed'], - [[11736, 11742], 'valid'], - [[11743, 11743], 'disallowed'], - [[11744, 11775], 'valid'], - [[11776, 11799], 'valid', [], 'NV8'], - [[11800, 11803], 'valid', [], 'NV8'], - [[11804, 11805], 'valid', [], 'NV8'], - [[11806, 11822], 'valid', [], 'NV8'], - [[11823, 11823], 'valid'], - [[11824, 11824], 'valid', [], 'NV8'], - [[11825, 11825], 'valid', [], 'NV8'], - [[11826, 11835], 'valid', [], 'NV8'], - [[11836, 11842], 'valid', [], 'NV8'], - [[11843, 11903], 'disallowed'], - [[11904, 11929], 'valid', [], 'NV8'], - [[11930, 11930], 'disallowed'], - [[11931, 11934], 'valid', [], 'NV8'], - [[11935, 11935], 'mapped', [27597]], - [[11936, 12018], 'valid', [], 'NV8'], - [[12019, 12019], 'mapped', [40863]], - [[12020, 12031], 'disallowed'], - [[12032, 12032], 'mapped', [19968]], - [[12033, 12033], 'mapped', [20008]], - [[12034, 12034], 'mapped', [20022]], - [[12035, 12035], 'mapped', [20031]], - [[12036, 12036], 'mapped', [20057]], - [[12037, 12037], 'mapped', [20101]], - [[12038, 12038], 'mapped', [20108]], - [[12039, 12039], 'mapped', [20128]], - [[12040, 12040], 'mapped', [20154]], - [[12041, 12041], 'mapped', [20799]], - [[12042, 12042], 'mapped', [20837]], - [[12043, 12043], 'mapped', [20843]], - [[12044, 12044], 'mapped', [20866]], - [[12045, 12045], 'mapped', [20886]], - [[12046, 12046], 'mapped', [20907]], - [[12047, 12047], 'mapped', [20960]], - [[12048, 12048], 'mapped', [20981]], - [[12049, 12049], 'mapped', [20992]], - [[12050, 12050], 'mapped', [21147]], - [[12051, 12051], 'mapped', [21241]], - [[12052, 12052], 'mapped', [21269]], - [[12053, 12053], 'mapped', [21274]], - [[12054, 12054], 'mapped', [21304]], - [[12055, 12055], 'mapped', [21313]], - [[12056, 12056], 'mapped', [21340]], - [[12057, 12057], 'mapped', [21353]], - [[12058, 12058], 'mapped', [21378]], - [[12059, 12059], 'mapped', [21430]], - [[12060, 12060], 'mapped', [21448]], - [[12061, 12061], 'mapped', [21475]], - [[12062, 12062], 'mapped', [22231]], - [[12063, 12063], 'mapped', [22303]], - [[12064, 12064], 'mapped', [22763]], - [[12065, 12065], 'mapped', [22786]], - [[12066, 12066], 'mapped', [22794]], - [[12067, 12067], 'mapped', [22805]], - [[12068, 12068], 'mapped', [22823]], - [[12069, 12069], 'mapped', [22899]], - [[12070, 12070], 'mapped', [23376]], - [[12071, 12071], 'mapped', [23424]], - [[12072, 12072], 'mapped', [23544]], - [[12073, 12073], 'mapped', [23567]], - [[12074, 12074], 'mapped', [23586]], - [[12075, 12075], 'mapped', [23608]], - [[12076, 12076], 'mapped', [23662]], - [[12077, 12077], 'mapped', [23665]], - [[12078, 12078], 'mapped', [24027]], - [[12079, 12079], 'mapped', [24037]], - [[12080, 12080], 'mapped', [24049]], - [[12081, 12081], 'mapped', [24062]], - [[12082, 12082], 'mapped', [24178]], - [[12083, 12083], 'mapped', [24186]], - [[12084, 12084], 'mapped', [24191]], - [[12085, 12085], 'mapped', [24308]], - [[12086, 12086], 'mapped', [24318]], - [[12087, 12087], 'mapped', [24331]], - [[12088, 12088], 'mapped', [24339]], - [[12089, 12089], 'mapped', [24400]], - [[12090, 12090], 'mapped', [24417]], - [[12091, 12091], 'mapped', [24435]], - [[12092, 12092], 'mapped', [24515]], - [[12093, 12093], 'mapped', [25096]], - [[12094, 12094], 'mapped', [25142]], - [[12095, 12095], 'mapped', [25163]], - [[12096, 12096], 'mapped', [25903]], - [[12097, 12097], 'mapped', [25908]], - [[12098, 12098], 'mapped', [25991]], - [[12099, 12099], 'mapped', [26007]], - [[12100, 12100], 'mapped', [26020]], - [[12101, 12101], 'mapped', [26041]], - [[12102, 12102], 'mapped', [26080]], - [[12103, 12103], 'mapped', [26085]], - [[12104, 12104], 'mapped', [26352]], - [[12105, 12105], 'mapped', [26376]], - [[12106, 12106], 'mapped', [26408]], - [[12107, 12107], 'mapped', [27424]], - [[12108, 12108], 'mapped', [27490]], - [[12109, 12109], 'mapped', [27513]], - [[12110, 12110], 'mapped', [27571]], - [[12111, 12111], 'mapped', [27595]], - [[12112, 12112], 'mapped', [27604]], - [[12113, 12113], 'mapped', [27611]], - [[12114, 12114], 'mapped', [27663]], - [[12115, 12115], 'mapped', [27668]], - [[12116, 12116], 'mapped', [27700]], - [[12117, 12117], 'mapped', [28779]], - [[12118, 12118], 'mapped', [29226]], - [[12119, 12119], 'mapped', [29238]], - [[12120, 12120], 'mapped', [29243]], - [[12121, 12121], 'mapped', [29247]], - [[12122, 12122], 'mapped', [29255]], - [[12123, 12123], 'mapped', [29273]], - [[12124, 12124], 'mapped', [29275]], - [[12125, 12125], 'mapped', [29356]], - [[12126, 12126], 'mapped', [29572]], - [[12127, 12127], 'mapped', [29577]], - [[12128, 12128], 'mapped', [29916]], - [[12129, 12129], 'mapped', [29926]], - [[12130, 12130], 'mapped', [29976]], - [[12131, 12131], 'mapped', [29983]], - [[12132, 12132], 'mapped', [29992]], - [[12133, 12133], 'mapped', [3e4]], - [[12134, 12134], 'mapped', [30091]], - [[12135, 12135], 'mapped', [30098]], - [[12136, 12136], 'mapped', [30326]], - [[12137, 12137], 'mapped', [30333]], - [[12138, 12138], 'mapped', [30382]], - [[12139, 12139], 'mapped', [30399]], - [[12140, 12140], 'mapped', [30446]], - [[12141, 12141], 'mapped', [30683]], - [[12142, 12142], 'mapped', [30690]], - [[12143, 12143], 'mapped', [30707]], - [[12144, 12144], 'mapped', [31034]], - [[12145, 12145], 'mapped', [31160]], - [[12146, 12146], 'mapped', [31166]], - [[12147, 12147], 'mapped', [31348]], - [[12148, 12148], 'mapped', [31435]], - [[12149, 12149], 'mapped', [31481]], - [[12150, 12150], 'mapped', [31859]], - [[12151, 12151], 'mapped', [31992]], - [[12152, 12152], 'mapped', [32566]], - [[12153, 12153], 'mapped', [32593]], - [[12154, 12154], 'mapped', [32650]], - [[12155, 12155], 'mapped', [32701]], - [[12156, 12156], 'mapped', [32769]], - [[12157, 12157], 'mapped', [32780]], - [[12158, 12158], 'mapped', [32786]], - [[12159, 12159], 'mapped', [32819]], - [[12160, 12160], 'mapped', [32895]], - [[12161, 12161], 'mapped', [32905]], - [[12162, 12162], 'mapped', [33251]], - [[12163, 12163], 'mapped', [33258]], - [[12164, 12164], 'mapped', [33267]], - [[12165, 12165], 'mapped', [33276]], - [[12166, 12166], 'mapped', [33292]], - [[12167, 12167], 'mapped', [33307]], - [[12168, 12168], 'mapped', [33311]], - [[12169, 12169], 'mapped', [33390]], - [[12170, 12170], 'mapped', [33394]], - [[12171, 12171], 'mapped', [33400]], - [[12172, 12172], 'mapped', [34381]], - [[12173, 12173], 'mapped', [34411]], - [[12174, 12174], 'mapped', [34880]], - [[12175, 12175], 'mapped', [34892]], - [[12176, 12176], 'mapped', [34915]], - [[12177, 12177], 'mapped', [35198]], - [[12178, 12178], 'mapped', [35211]], - [[12179, 12179], 'mapped', [35282]], - [[12180, 12180], 'mapped', [35328]], - [[12181, 12181], 'mapped', [35895]], - [[12182, 12182], 'mapped', [35910]], - [[12183, 12183], 'mapped', [35925]], - [[12184, 12184], 'mapped', [35960]], - [[12185, 12185], 'mapped', [35997]], - [[12186, 12186], 'mapped', [36196]], - [[12187, 12187], 'mapped', [36208]], - [[12188, 12188], 'mapped', [36275]], - [[12189, 12189], 'mapped', [36523]], - [[12190, 12190], 'mapped', [36554]], - [[12191, 12191], 'mapped', [36763]], - [[12192, 12192], 'mapped', [36784]], - [[12193, 12193], 'mapped', [36789]], - [[12194, 12194], 'mapped', [37009]], - [[12195, 12195], 'mapped', [37193]], - [[12196, 12196], 'mapped', [37318]], - [[12197, 12197], 'mapped', [37324]], - [[12198, 12198], 'mapped', [37329]], - [[12199, 12199], 'mapped', [38263]], - [[12200, 12200], 'mapped', [38272]], - [[12201, 12201], 'mapped', [38428]], - [[12202, 12202], 'mapped', [38582]], - [[12203, 12203], 'mapped', [38585]], - [[12204, 12204], 'mapped', [38632]], - [[12205, 12205], 'mapped', [38737]], - [[12206, 12206], 'mapped', [38750]], - [[12207, 12207], 'mapped', [38754]], - [[12208, 12208], 'mapped', [38761]], - [[12209, 12209], 'mapped', [38859]], - [[12210, 12210], 'mapped', [38893]], - [[12211, 12211], 'mapped', [38899]], - [[12212, 12212], 'mapped', [38913]], - [[12213, 12213], 'mapped', [39080]], - [[12214, 12214], 'mapped', [39131]], - [[12215, 12215], 'mapped', [39135]], - [[12216, 12216], 'mapped', [39318]], - [[12217, 12217], 'mapped', [39321]], - [[12218, 12218], 'mapped', [39340]], - [[12219, 12219], 'mapped', [39592]], - [[12220, 12220], 'mapped', [39640]], - [[12221, 12221], 'mapped', [39647]], - [[12222, 12222], 'mapped', [39717]], - [[12223, 12223], 'mapped', [39727]], - [[12224, 12224], 'mapped', [39730]], - [[12225, 12225], 'mapped', [39740]], - [[12226, 12226], 'mapped', [39770]], - [[12227, 12227], 'mapped', [40165]], - [[12228, 12228], 'mapped', [40565]], - [[12229, 12229], 'mapped', [40575]], - [[12230, 12230], 'mapped', [40613]], - [[12231, 12231], 'mapped', [40635]], - [[12232, 12232], 'mapped', [40643]], - [[12233, 12233], 'mapped', [40653]], - [[12234, 12234], 'mapped', [40657]], - [[12235, 12235], 'mapped', [40697]], - [[12236, 12236], 'mapped', [40701]], - [[12237, 12237], 'mapped', [40718]], - [[12238, 12238], 'mapped', [40723]], - [[12239, 12239], 'mapped', [40736]], - [[12240, 12240], 'mapped', [40763]], - [[12241, 12241], 'mapped', [40778]], - [[12242, 12242], 'mapped', [40786]], - [[12243, 12243], 'mapped', [40845]], - [[12244, 12244], 'mapped', [40860]], - [[12245, 12245], 'mapped', [40864]], - [[12246, 12271], 'disallowed'], - [[12272, 12283], 'disallowed'], - [[12284, 12287], 'disallowed'], - [[12288, 12288], 'disallowed_STD3_mapped', [32]], - [[12289, 12289], 'valid', [], 'NV8'], - [[12290, 12290], 'mapped', [46]], - [[12291, 12292], 'valid', [], 'NV8'], - [[12293, 12295], 'valid'], - [[12296, 12329], 'valid', [], 'NV8'], - [[12330, 12333], 'valid'], - [[12334, 12341], 'valid', [], 'NV8'], - [[12342, 12342], 'mapped', [12306]], - [[12343, 12343], 'valid', [], 'NV8'], - [[12344, 12344], 'mapped', [21313]], - [[12345, 12345], 'mapped', [21316]], - [[12346, 12346], 'mapped', [21317]], - [[12347, 12347], 'valid', [], 'NV8'], - [[12348, 12348], 'valid'], - [[12349, 12349], 'valid', [], 'NV8'], - [[12350, 12350], 'valid', [], 'NV8'], - [[12351, 12351], 'valid', [], 'NV8'], - [[12352, 12352], 'disallowed'], - [[12353, 12436], 'valid'], - [[12437, 12438], 'valid'], - [[12439, 12440], 'disallowed'], - [[12441, 12442], 'valid'], - [[12443, 12443], 'disallowed_STD3_mapped', [32, 12441]], - [[12444, 12444], 'disallowed_STD3_mapped', [32, 12442]], - [[12445, 12446], 'valid'], - [[12447, 12447], 'mapped', [12424, 12426]], - [[12448, 12448], 'valid', [], 'NV8'], - [[12449, 12542], 'valid'], - [[12543, 12543], 'mapped', [12467, 12488]], - [[12544, 12548], 'disallowed'], - [[12549, 12588], 'valid'], - [[12589, 12589], 'valid'], - [[12590, 12592], 'disallowed'], - [[12593, 12593], 'mapped', [4352]], - [[12594, 12594], 'mapped', [4353]], - [[12595, 12595], 'mapped', [4522]], - [[12596, 12596], 'mapped', [4354]], - [[12597, 12597], 'mapped', [4524]], - [[12598, 12598], 'mapped', [4525]], - [[12599, 12599], 'mapped', [4355]], - [[12600, 12600], 'mapped', [4356]], - [[12601, 12601], 'mapped', [4357]], - [[12602, 12602], 'mapped', [4528]], - [[12603, 12603], 'mapped', [4529]], - [[12604, 12604], 'mapped', [4530]], - [[12605, 12605], 'mapped', [4531]], - [[12606, 12606], 'mapped', [4532]], - [[12607, 12607], 'mapped', [4533]], - [[12608, 12608], 'mapped', [4378]], - [[12609, 12609], 'mapped', [4358]], - [[12610, 12610], 'mapped', [4359]], - [[12611, 12611], 'mapped', [4360]], - [[12612, 12612], 'mapped', [4385]], - [[12613, 12613], 'mapped', [4361]], - [[12614, 12614], 'mapped', [4362]], - [[12615, 12615], 'mapped', [4363]], - [[12616, 12616], 'mapped', [4364]], - [[12617, 12617], 'mapped', [4365]], - [[12618, 12618], 'mapped', [4366]], - [[12619, 12619], 'mapped', [4367]], - [[12620, 12620], 'mapped', [4368]], - [[12621, 12621], 'mapped', [4369]], - [[12622, 12622], 'mapped', [4370]], - [[12623, 12623], 'mapped', [4449]], - [[12624, 12624], 'mapped', [4450]], - [[12625, 12625], 'mapped', [4451]], - [[12626, 12626], 'mapped', [4452]], - [[12627, 12627], 'mapped', [4453]], - [[12628, 12628], 'mapped', [4454]], - [[12629, 12629], 'mapped', [4455]], - [[12630, 12630], 'mapped', [4456]], - [[12631, 12631], 'mapped', [4457]], - [[12632, 12632], 'mapped', [4458]], - [[12633, 12633], 'mapped', [4459]], - [[12634, 12634], 'mapped', [4460]], - [[12635, 12635], 'mapped', [4461]], - [[12636, 12636], 'mapped', [4462]], - [[12637, 12637], 'mapped', [4463]], - [[12638, 12638], 'mapped', [4464]], - [[12639, 12639], 'mapped', [4465]], - [[12640, 12640], 'mapped', [4466]], - [[12641, 12641], 'mapped', [4467]], - [[12642, 12642], 'mapped', [4468]], - [[12643, 12643], 'mapped', [4469]], - [[12644, 12644], 'disallowed'], - [[12645, 12645], 'mapped', [4372]], - [[12646, 12646], 'mapped', [4373]], - [[12647, 12647], 'mapped', [4551]], - [[12648, 12648], 'mapped', [4552]], - [[12649, 12649], 'mapped', [4556]], - [[12650, 12650], 'mapped', [4558]], - [[12651, 12651], 'mapped', [4563]], - [[12652, 12652], 'mapped', [4567]], - [[12653, 12653], 'mapped', [4569]], - [[12654, 12654], 'mapped', [4380]], - [[12655, 12655], 'mapped', [4573]], - [[12656, 12656], 'mapped', [4575]], - [[12657, 12657], 'mapped', [4381]], - [[12658, 12658], 'mapped', [4382]], - [[12659, 12659], 'mapped', [4384]], - [[12660, 12660], 'mapped', [4386]], - [[12661, 12661], 'mapped', [4387]], - [[12662, 12662], 'mapped', [4391]], - [[12663, 12663], 'mapped', [4393]], - [[12664, 12664], 'mapped', [4395]], - [[12665, 12665], 'mapped', [4396]], - [[12666, 12666], 'mapped', [4397]], - [[12667, 12667], 'mapped', [4398]], - [[12668, 12668], 'mapped', [4399]], - [[12669, 12669], 'mapped', [4402]], - [[12670, 12670], 'mapped', [4406]], - [[12671, 12671], 'mapped', [4416]], - [[12672, 12672], 'mapped', [4423]], - [[12673, 12673], 'mapped', [4428]], - [[12674, 12674], 'mapped', [4593]], - [[12675, 12675], 'mapped', [4594]], - [[12676, 12676], 'mapped', [4439]], - [[12677, 12677], 'mapped', [4440]], - [[12678, 12678], 'mapped', [4441]], - [[12679, 12679], 'mapped', [4484]], - [[12680, 12680], 'mapped', [4485]], - [[12681, 12681], 'mapped', [4488]], - [[12682, 12682], 'mapped', [4497]], - [[12683, 12683], 'mapped', [4498]], - [[12684, 12684], 'mapped', [4500]], - [[12685, 12685], 'mapped', [4510]], - [[12686, 12686], 'mapped', [4513]], - [[12687, 12687], 'disallowed'], - [[12688, 12689], 'valid', [], 'NV8'], - [[12690, 12690], 'mapped', [19968]], - [[12691, 12691], 'mapped', [20108]], - [[12692, 12692], 'mapped', [19977]], - [[12693, 12693], 'mapped', [22235]], - [[12694, 12694], 'mapped', [19978]], - [[12695, 12695], 'mapped', [20013]], - [[12696, 12696], 'mapped', [19979]], - [[12697, 12697], 'mapped', [30002]], - [[12698, 12698], 'mapped', [20057]], - [[12699, 12699], 'mapped', [19993]], - [[12700, 12700], 'mapped', [19969]], - [[12701, 12701], 'mapped', [22825]], - [[12702, 12702], 'mapped', [22320]], - [[12703, 12703], 'mapped', [20154]], - [[12704, 12727], 'valid'], - [[12728, 12730], 'valid'], - [[12731, 12735], 'disallowed'], - [[12736, 12751], 'valid', [], 'NV8'], - [[12752, 12771], 'valid', [], 'NV8'], - [[12772, 12783], 'disallowed'], - [[12784, 12799], 'valid'], - [[12800, 12800], 'disallowed_STD3_mapped', [40, 4352, 41]], - [[12801, 12801], 'disallowed_STD3_mapped', [40, 4354, 41]], - [[12802, 12802], 'disallowed_STD3_mapped', [40, 4355, 41]], - [[12803, 12803], 'disallowed_STD3_mapped', [40, 4357, 41]], - [[12804, 12804], 'disallowed_STD3_mapped', [40, 4358, 41]], - [[12805, 12805], 'disallowed_STD3_mapped', [40, 4359, 41]], - [[12806, 12806], 'disallowed_STD3_mapped', [40, 4361, 41]], - [[12807, 12807], 'disallowed_STD3_mapped', [40, 4363, 41]], - [[12808, 12808], 'disallowed_STD3_mapped', [40, 4364, 41]], - [[12809, 12809], 'disallowed_STD3_mapped', [40, 4366, 41]], - [[12810, 12810], 'disallowed_STD3_mapped', [40, 4367, 41]], - [[12811, 12811], 'disallowed_STD3_mapped', [40, 4368, 41]], - [[12812, 12812], 'disallowed_STD3_mapped', [40, 4369, 41]], - [[12813, 12813], 'disallowed_STD3_mapped', [40, 4370, 41]], - [[12814, 12814], 'disallowed_STD3_mapped', [40, 44032, 41]], - [[12815, 12815], 'disallowed_STD3_mapped', [40, 45208, 41]], - [[12816, 12816], 'disallowed_STD3_mapped', [40, 45796, 41]], - [[12817, 12817], 'disallowed_STD3_mapped', [40, 46972, 41]], - [[12818, 12818], 'disallowed_STD3_mapped', [40, 47560, 41]], - [[12819, 12819], 'disallowed_STD3_mapped', [40, 48148, 41]], - [[12820, 12820], 'disallowed_STD3_mapped', [40, 49324, 41]], - [[12821, 12821], 'disallowed_STD3_mapped', [40, 50500, 41]], - [[12822, 12822], 'disallowed_STD3_mapped', [40, 51088, 41]], - [[12823, 12823], 'disallowed_STD3_mapped', [40, 52264, 41]], - [[12824, 12824], 'disallowed_STD3_mapped', [40, 52852, 41]], - [[12825, 12825], 'disallowed_STD3_mapped', [40, 53440, 41]], - [[12826, 12826], 'disallowed_STD3_mapped', [40, 54028, 41]], - [[12827, 12827], 'disallowed_STD3_mapped', [40, 54616, 41]], - [[12828, 12828], 'disallowed_STD3_mapped', [40, 51452, 41]], - [[12829, 12829], 'disallowed_STD3_mapped', [40, 50724, 51204, 41]], - [[12830, 12830], 'disallowed_STD3_mapped', [40, 50724, 54980, 41]], - [[12831, 12831], 'disallowed'], - [[12832, 12832], 'disallowed_STD3_mapped', [40, 19968, 41]], - [[12833, 12833], 'disallowed_STD3_mapped', [40, 20108, 41]], - [[12834, 12834], 'disallowed_STD3_mapped', [40, 19977, 41]], - [[12835, 12835], 'disallowed_STD3_mapped', [40, 22235, 41]], - [[12836, 12836], 'disallowed_STD3_mapped', [40, 20116, 41]], - [[12837, 12837], 'disallowed_STD3_mapped', [40, 20845, 41]], - [[12838, 12838], 'disallowed_STD3_mapped', [40, 19971, 41]], - [[12839, 12839], 'disallowed_STD3_mapped', [40, 20843, 41]], - [[12840, 12840], 'disallowed_STD3_mapped', [40, 20061, 41]], - [[12841, 12841], 'disallowed_STD3_mapped', [40, 21313, 41]], - [[12842, 12842], 'disallowed_STD3_mapped', [40, 26376, 41]], - [[12843, 12843], 'disallowed_STD3_mapped', [40, 28779, 41]], - [[12844, 12844], 'disallowed_STD3_mapped', [40, 27700, 41]], - [[12845, 12845], 'disallowed_STD3_mapped', [40, 26408, 41]], - [[12846, 12846], 'disallowed_STD3_mapped', [40, 37329, 41]], - [[12847, 12847], 'disallowed_STD3_mapped', [40, 22303, 41]], - [[12848, 12848], 'disallowed_STD3_mapped', [40, 26085, 41]], - [[12849, 12849], 'disallowed_STD3_mapped', [40, 26666, 41]], - [[12850, 12850], 'disallowed_STD3_mapped', [40, 26377, 41]], - [[12851, 12851], 'disallowed_STD3_mapped', [40, 31038, 41]], - [[12852, 12852], 'disallowed_STD3_mapped', [40, 21517, 41]], - [[12853, 12853], 'disallowed_STD3_mapped', [40, 29305, 41]], - [[12854, 12854], 'disallowed_STD3_mapped', [40, 36001, 41]], - [[12855, 12855], 'disallowed_STD3_mapped', [40, 31069, 41]], - [[12856, 12856], 'disallowed_STD3_mapped', [40, 21172, 41]], - [[12857, 12857], 'disallowed_STD3_mapped', [40, 20195, 41]], - [[12858, 12858], 'disallowed_STD3_mapped', [40, 21628, 41]], - [[12859, 12859], 'disallowed_STD3_mapped', [40, 23398, 41]], - [[12860, 12860], 'disallowed_STD3_mapped', [40, 30435, 41]], - [[12861, 12861], 'disallowed_STD3_mapped', [40, 20225, 41]], - [[12862, 12862], 'disallowed_STD3_mapped', [40, 36039, 41]], - [[12863, 12863], 'disallowed_STD3_mapped', [40, 21332, 41]], - [[12864, 12864], 'disallowed_STD3_mapped', [40, 31085, 41]], - [[12865, 12865], 'disallowed_STD3_mapped', [40, 20241, 41]], - [[12866, 12866], 'disallowed_STD3_mapped', [40, 33258, 41]], - [[12867, 12867], 'disallowed_STD3_mapped', [40, 33267, 41]], - [[12868, 12868], 'mapped', [21839]], - [[12869, 12869], 'mapped', [24188]], - [[12870, 12870], 'mapped', [25991]], - [[12871, 12871], 'mapped', [31631]], - [[12872, 12879], 'valid', [], 'NV8'], - [[12880, 12880], 'mapped', [112, 116, 101]], - [[12881, 12881], 'mapped', [50, 49]], - [[12882, 12882], 'mapped', [50, 50]], - [[12883, 12883], 'mapped', [50, 51]], - [[12884, 12884], 'mapped', [50, 52]], - [[12885, 12885], 'mapped', [50, 53]], - [[12886, 12886], 'mapped', [50, 54]], - [[12887, 12887], 'mapped', [50, 55]], - [[12888, 12888], 'mapped', [50, 56]], - [[12889, 12889], 'mapped', [50, 57]], - [[12890, 12890], 'mapped', [51, 48]], - [[12891, 12891], 'mapped', [51, 49]], - [[12892, 12892], 'mapped', [51, 50]], - [[12893, 12893], 'mapped', [51, 51]], - [[12894, 12894], 'mapped', [51, 52]], - [[12895, 12895], 'mapped', [51, 53]], - [[12896, 12896], 'mapped', [4352]], - [[12897, 12897], 'mapped', [4354]], - [[12898, 12898], 'mapped', [4355]], - [[12899, 12899], 'mapped', [4357]], - [[12900, 12900], 'mapped', [4358]], - [[12901, 12901], 'mapped', [4359]], - [[12902, 12902], 'mapped', [4361]], - [[12903, 12903], 'mapped', [4363]], - [[12904, 12904], 'mapped', [4364]], - [[12905, 12905], 'mapped', [4366]], - [[12906, 12906], 'mapped', [4367]], - [[12907, 12907], 'mapped', [4368]], - [[12908, 12908], 'mapped', [4369]], - [[12909, 12909], 'mapped', [4370]], - [[12910, 12910], 'mapped', [44032]], - [[12911, 12911], 'mapped', [45208]], - [[12912, 12912], 'mapped', [45796]], - [[12913, 12913], 'mapped', [46972]], - [[12914, 12914], 'mapped', [47560]], - [[12915, 12915], 'mapped', [48148]], - [[12916, 12916], 'mapped', [49324]], - [[12917, 12917], 'mapped', [50500]], - [[12918, 12918], 'mapped', [51088]], - [[12919, 12919], 'mapped', [52264]], - [[12920, 12920], 'mapped', [52852]], - [[12921, 12921], 'mapped', [53440]], - [[12922, 12922], 'mapped', [54028]], - [[12923, 12923], 'mapped', [54616]], - [[12924, 12924], 'mapped', [52280, 44256]], - [[12925, 12925], 'mapped', [51452, 51032]], - [[12926, 12926], 'mapped', [50864]], - [[12927, 12927], 'valid', [], 'NV8'], - [[12928, 12928], 'mapped', [19968]], - [[12929, 12929], 'mapped', [20108]], - [[12930, 12930], 'mapped', [19977]], - [[12931, 12931], 'mapped', [22235]], - [[12932, 12932], 'mapped', [20116]], - [[12933, 12933], 'mapped', [20845]], - [[12934, 12934], 'mapped', [19971]], - [[12935, 12935], 'mapped', [20843]], - [[12936, 12936], 'mapped', [20061]], - [[12937, 12937], 'mapped', [21313]], - [[12938, 12938], 'mapped', [26376]], - [[12939, 12939], 'mapped', [28779]], - [[12940, 12940], 'mapped', [27700]], - [[12941, 12941], 'mapped', [26408]], - [[12942, 12942], 'mapped', [37329]], - [[12943, 12943], 'mapped', [22303]], - [[12944, 12944], 'mapped', [26085]], - [[12945, 12945], 'mapped', [26666]], - [[12946, 12946], 'mapped', [26377]], - [[12947, 12947], 'mapped', [31038]], - [[12948, 12948], 'mapped', [21517]], - [[12949, 12949], 'mapped', [29305]], - [[12950, 12950], 'mapped', [36001]], - [[12951, 12951], 'mapped', [31069]], - [[12952, 12952], 'mapped', [21172]], - [[12953, 12953], 'mapped', [31192]], - [[12954, 12954], 'mapped', [30007]], - [[12955, 12955], 'mapped', [22899]], - [[12956, 12956], 'mapped', [36969]], - [[12957, 12957], 'mapped', [20778]], - [[12958, 12958], 'mapped', [21360]], - [[12959, 12959], 'mapped', [27880]], - [[12960, 12960], 'mapped', [38917]], - [[12961, 12961], 'mapped', [20241]], - [[12962, 12962], 'mapped', [20889]], - [[12963, 12963], 'mapped', [27491]], - [[12964, 12964], 'mapped', [19978]], - [[12965, 12965], 'mapped', [20013]], - [[12966, 12966], 'mapped', [19979]], - [[12967, 12967], 'mapped', [24038]], - [[12968, 12968], 'mapped', [21491]], - [[12969, 12969], 'mapped', [21307]], - [[12970, 12970], 'mapped', [23447]], - [[12971, 12971], 'mapped', [23398]], - [[12972, 12972], 'mapped', [30435]], - [[12973, 12973], 'mapped', [20225]], - [[12974, 12974], 'mapped', [36039]], - [[12975, 12975], 'mapped', [21332]], - [[12976, 12976], 'mapped', [22812]], - [[12977, 12977], 'mapped', [51, 54]], - [[12978, 12978], 'mapped', [51, 55]], - [[12979, 12979], 'mapped', [51, 56]], - [[12980, 12980], 'mapped', [51, 57]], - [[12981, 12981], 'mapped', [52, 48]], - [[12982, 12982], 'mapped', [52, 49]], - [[12983, 12983], 'mapped', [52, 50]], - [[12984, 12984], 'mapped', [52, 51]], - [[12985, 12985], 'mapped', [52, 52]], - [[12986, 12986], 'mapped', [52, 53]], - [[12987, 12987], 'mapped', [52, 54]], - [[12988, 12988], 'mapped', [52, 55]], - [[12989, 12989], 'mapped', [52, 56]], - [[12990, 12990], 'mapped', [52, 57]], - [[12991, 12991], 'mapped', [53, 48]], - [[12992, 12992], 'mapped', [49, 26376]], - [[12993, 12993], 'mapped', [50, 26376]], - [[12994, 12994], 'mapped', [51, 26376]], - [[12995, 12995], 'mapped', [52, 26376]], - [[12996, 12996], 'mapped', [53, 26376]], - [[12997, 12997], 'mapped', [54, 26376]], - [[12998, 12998], 'mapped', [55, 26376]], - [[12999, 12999], 'mapped', [56, 26376]], - [[13e3, 13e3], 'mapped', [57, 26376]], - [[13001, 13001], 'mapped', [49, 48, 26376]], - [[13002, 13002], 'mapped', [49, 49, 26376]], - [[13003, 13003], 'mapped', [49, 50, 26376]], - [[13004, 13004], 'mapped', [104, 103]], - [[13005, 13005], 'mapped', [101, 114, 103]], - [[13006, 13006], 'mapped', [101, 118]], - [[13007, 13007], 'mapped', [108, 116, 100]], - [[13008, 13008], 'mapped', [12450]], - [[13009, 13009], 'mapped', [12452]], - [[13010, 13010], 'mapped', [12454]], - [[13011, 13011], 'mapped', [12456]], - [[13012, 13012], 'mapped', [12458]], - [[13013, 13013], 'mapped', [12459]], - [[13014, 13014], 'mapped', [12461]], - [[13015, 13015], 'mapped', [12463]], - [[13016, 13016], 'mapped', [12465]], - [[13017, 13017], 'mapped', [12467]], - [[13018, 13018], 'mapped', [12469]], - [[13019, 13019], 'mapped', [12471]], - [[13020, 13020], 'mapped', [12473]], - [[13021, 13021], 'mapped', [12475]], - [[13022, 13022], 'mapped', [12477]], - [[13023, 13023], 'mapped', [12479]], - [[13024, 13024], 'mapped', [12481]], - [[13025, 13025], 'mapped', [12484]], - [[13026, 13026], 'mapped', [12486]], - [[13027, 13027], 'mapped', [12488]], - [[13028, 13028], 'mapped', [12490]], - [[13029, 13029], 'mapped', [12491]], - [[13030, 13030], 'mapped', [12492]], - [[13031, 13031], 'mapped', [12493]], - [[13032, 13032], 'mapped', [12494]], - [[13033, 13033], 'mapped', [12495]], - [[13034, 13034], 'mapped', [12498]], - [[13035, 13035], 'mapped', [12501]], - [[13036, 13036], 'mapped', [12504]], - [[13037, 13037], 'mapped', [12507]], - [[13038, 13038], 'mapped', [12510]], - [[13039, 13039], 'mapped', [12511]], - [[13040, 13040], 'mapped', [12512]], - [[13041, 13041], 'mapped', [12513]], - [[13042, 13042], 'mapped', [12514]], - [[13043, 13043], 'mapped', [12516]], - [[13044, 13044], 'mapped', [12518]], - [[13045, 13045], 'mapped', [12520]], - [[13046, 13046], 'mapped', [12521]], - [[13047, 13047], 'mapped', [12522]], - [[13048, 13048], 'mapped', [12523]], - [[13049, 13049], 'mapped', [12524]], - [[13050, 13050], 'mapped', [12525]], - [[13051, 13051], 'mapped', [12527]], - [[13052, 13052], 'mapped', [12528]], - [[13053, 13053], 'mapped', [12529]], - [[13054, 13054], 'mapped', [12530]], - [[13055, 13055], 'disallowed'], - [[13056, 13056], 'mapped', [12450, 12497, 12540, 12488]], - [[13057, 13057], 'mapped', [12450, 12523, 12501, 12449]], - [[13058, 13058], 'mapped', [12450, 12531, 12506, 12450]], - [[13059, 13059], 'mapped', [12450, 12540, 12523]], - [[13060, 13060], 'mapped', [12452, 12491, 12531, 12464]], - [[13061, 13061], 'mapped', [12452, 12531, 12481]], - [[13062, 13062], 'mapped', [12454, 12457, 12531]], - [[13063, 13063], 'mapped', [12456, 12473, 12463, 12540, 12489]], - [[13064, 13064], 'mapped', [12456, 12540, 12459, 12540]], - [[13065, 13065], 'mapped', [12458, 12531, 12473]], - [[13066, 13066], 'mapped', [12458, 12540, 12512]], - [[13067, 13067], 'mapped', [12459, 12452, 12522]], - [[13068, 13068], 'mapped', [12459, 12521, 12483, 12488]], - [[13069, 13069], 'mapped', [12459, 12525, 12522, 12540]], - [[13070, 13070], 'mapped', [12460, 12525, 12531]], - [[13071, 13071], 'mapped', [12460, 12531, 12510]], - [[13072, 13072], 'mapped', [12462, 12460]], - [[13073, 13073], 'mapped', [12462, 12491, 12540]], - [[13074, 13074], 'mapped', [12461, 12517, 12522, 12540]], - [[13075, 13075], 'mapped', [12462, 12523, 12480, 12540]], - [[13076, 13076], 'mapped', [12461, 12525]], - [[13077, 13077], 'mapped', [12461, 12525, 12464, 12521, 12512]], - [[13078, 13078], 'mapped', [12461, 12525, 12513, 12540, 12488, 12523]], - [[13079, 13079], 'mapped', [12461, 12525, 12527, 12483, 12488]], - [[13080, 13080], 'mapped', [12464, 12521, 12512]], - [[13081, 13081], 'mapped', [12464, 12521, 12512, 12488, 12531]], - [[13082, 13082], 'mapped', [12463, 12523, 12476, 12452, 12525]], - [[13083, 13083], 'mapped', [12463, 12525, 12540, 12493]], - [[13084, 13084], 'mapped', [12465, 12540, 12473]], - [[13085, 13085], 'mapped', [12467, 12523, 12490]], - [[13086, 13086], 'mapped', [12467, 12540, 12509]], - [[13087, 13087], 'mapped', [12469, 12452, 12463, 12523]], - [[13088, 13088], 'mapped', [12469, 12531, 12481, 12540, 12512]], - [[13089, 13089], 'mapped', [12471, 12522, 12531, 12464]], - [[13090, 13090], 'mapped', [12475, 12531, 12481]], - [[13091, 13091], 'mapped', [12475, 12531, 12488]], - [[13092, 13092], 'mapped', [12480, 12540, 12473]], - [[13093, 13093], 'mapped', [12487, 12471]], - [[13094, 13094], 'mapped', [12489, 12523]], - [[13095, 13095], 'mapped', [12488, 12531]], - [[13096, 13096], 'mapped', [12490, 12494]], - [[13097, 13097], 'mapped', [12494, 12483, 12488]], - [[13098, 13098], 'mapped', [12495, 12452, 12484]], - [[13099, 13099], 'mapped', [12497, 12540, 12475, 12531, 12488]], - [[13100, 13100], 'mapped', [12497, 12540, 12484]], - [[13101, 13101], 'mapped', [12496, 12540, 12524, 12523]], - [[13102, 13102], 'mapped', [12500, 12450, 12473, 12488, 12523]], - [[13103, 13103], 'mapped', [12500, 12463, 12523]], - [[13104, 13104], 'mapped', [12500, 12467]], - [[13105, 13105], 'mapped', [12499, 12523]], - [[13106, 13106], 'mapped', [12501, 12449, 12521, 12483, 12489]], - [[13107, 13107], 'mapped', [12501, 12451, 12540, 12488]], - [[13108, 13108], 'mapped', [12502, 12483, 12471, 12455, 12523]], - [[13109, 13109], 'mapped', [12501, 12521, 12531]], - [[13110, 13110], 'mapped', [12504, 12463, 12479, 12540, 12523]], - [[13111, 13111], 'mapped', [12506, 12477]], - [[13112, 13112], 'mapped', [12506, 12491, 12498]], - [[13113, 13113], 'mapped', [12504, 12523, 12484]], - [[13114, 13114], 'mapped', [12506, 12531, 12473]], - [[13115, 13115], 'mapped', [12506, 12540, 12472]], - [[13116, 13116], 'mapped', [12505, 12540, 12479]], - [[13117, 13117], 'mapped', [12509, 12452, 12531, 12488]], - [[13118, 13118], 'mapped', [12508, 12523, 12488]], - [[13119, 13119], 'mapped', [12507, 12531]], - [[13120, 13120], 'mapped', [12509, 12531, 12489]], - [[13121, 13121], 'mapped', [12507, 12540, 12523]], - [[13122, 13122], 'mapped', [12507, 12540, 12531]], - [[13123, 13123], 'mapped', [12510, 12452, 12463, 12525]], - [[13124, 13124], 'mapped', [12510, 12452, 12523]], - [[13125, 13125], 'mapped', [12510, 12483, 12495]], - [[13126, 13126], 'mapped', [12510, 12523, 12463]], - [[13127, 13127], 'mapped', [12510, 12531, 12471, 12519, 12531]], - [[13128, 13128], 'mapped', [12511, 12463, 12525, 12531]], - [[13129, 13129], 'mapped', [12511, 12522]], - [[13130, 13130], 'mapped', [12511, 12522, 12496, 12540, 12523]], - [[13131, 13131], 'mapped', [12513, 12460]], - [[13132, 13132], 'mapped', [12513, 12460, 12488, 12531]], - [[13133, 13133], 'mapped', [12513, 12540, 12488, 12523]], - [[13134, 13134], 'mapped', [12516, 12540, 12489]], - [[13135, 13135], 'mapped', [12516, 12540, 12523]], - [[13136, 13136], 'mapped', [12518, 12450, 12531]], - [[13137, 13137], 'mapped', [12522, 12483, 12488, 12523]], - [[13138, 13138], 'mapped', [12522, 12521]], - [[13139, 13139], 'mapped', [12523, 12500, 12540]], - [[13140, 13140], 'mapped', [12523, 12540, 12502, 12523]], - [[13141, 13141], 'mapped', [12524, 12512]], - [[13142, 13142], 'mapped', [12524, 12531, 12488, 12466, 12531]], - [[13143, 13143], 'mapped', [12527, 12483, 12488]], - [[13144, 13144], 'mapped', [48, 28857]], - [[13145, 13145], 'mapped', [49, 28857]], - [[13146, 13146], 'mapped', [50, 28857]], - [[13147, 13147], 'mapped', [51, 28857]], - [[13148, 13148], 'mapped', [52, 28857]], - [[13149, 13149], 'mapped', [53, 28857]], - [[13150, 13150], 'mapped', [54, 28857]], - [[13151, 13151], 'mapped', [55, 28857]], - [[13152, 13152], 'mapped', [56, 28857]], - [[13153, 13153], 'mapped', [57, 28857]], - [[13154, 13154], 'mapped', [49, 48, 28857]], - [[13155, 13155], 'mapped', [49, 49, 28857]], - [[13156, 13156], 'mapped', [49, 50, 28857]], - [[13157, 13157], 'mapped', [49, 51, 28857]], - [[13158, 13158], 'mapped', [49, 52, 28857]], - [[13159, 13159], 'mapped', [49, 53, 28857]], - [[13160, 13160], 'mapped', [49, 54, 28857]], - [[13161, 13161], 'mapped', [49, 55, 28857]], - [[13162, 13162], 'mapped', [49, 56, 28857]], - [[13163, 13163], 'mapped', [49, 57, 28857]], - [[13164, 13164], 'mapped', [50, 48, 28857]], - [[13165, 13165], 'mapped', [50, 49, 28857]], - [[13166, 13166], 'mapped', [50, 50, 28857]], - [[13167, 13167], 'mapped', [50, 51, 28857]], - [[13168, 13168], 'mapped', [50, 52, 28857]], - [[13169, 13169], 'mapped', [104, 112, 97]], - [[13170, 13170], 'mapped', [100, 97]], - [[13171, 13171], 'mapped', [97, 117]], - [[13172, 13172], 'mapped', [98, 97, 114]], - [[13173, 13173], 'mapped', [111, 118]], - [[13174, 13174], 'mapped', [112, 99]], - [[13175, 13175], 'mapped', [100, 109]], - [[13176, 13176], 'mapped', [100, 109, 50]], - [[13177, 13177], 'mapped', [100, 109, 51]], - [[13178, 13178], 'mapped', [105, 117]], - [[13179, 13179], 'mapped', [24179, 25104]], - [[13180, 13180], 'mapped', [26157, 21644]], - [[13181, 13181], 'mapped', [22823, 27491]], - [[13182, 13182], 'mapped', [26126, 27835]], - [[13183, 13183], 'mapped', [26666, 24335, 20250, 31038]], - [[13184, 13184], 'mapped', [112, 97]], - [[13185, 13185], 'mapped', [110, 97]], - [[13186, 13186], 'mapped', [956, 97]], - [[13187, 13187], 'mapped', [109, 97]], - [[13188, 13188], 'mapped', [107, 97]], - [[13189, 13189], 'mapped', [107, 98]], - [[13190, 13190], 'mapped', [109, 98]], - [[13191, 13191], 'mapped', [103, 98]], - [[13192, 13192], 'mapped', [99, 97, 108]], - [[13193, 13193], 'mapped', [107, 99, 97, 108]], - [[13194, 13194], 'mapped', [112, 102]], - [[13195, 13195], 'mapped', [110, 102]], - [[13196, 13196], 'mapped', [956, 102]], - [[13197, 13197], 'mapped', [956, 103]], - [[13198, 13198], 'mapped', [109, 103]], - [[13199, 13199], 'mapped', [107, 103]], - [[13200, 13200], 'mapped', [104, 122]], - [[13201, 13201], 'mapped', [107, 104, 122]], - [[13202, 13202], 'mapped', [109, 104, 122]], - [[13203, 13203], 'mapped', [103, 104, 122]], - [[13204, 13204], 'mapped', [116, 104, 122]], - [[13205, 13205], 'mapped', [956, 108]], - [[13206, 13206], 'mapped', [109, 108]], - [[13207, 13207], 'mapped', [100, 108]], - [[13208, 13208], 'mapped', [107, 108]], - [[13209, 13209], 'mapped', [102, 109]], - [[13210, 13210], 'mapped', [110, 109]], - [[13211, 13211], 'mapped', [956, 109]], - [[13212, 13212], 'mapped', [109, 109]], - [[13213, 13213], 'mapped', [99, 109]], - [[13214, 13214], 'mapped', [107, 109]], - [[13215, 13215], 'mapped', [109, 109, 50]], - [[13216, 13216], 'mapped', [99, 109, 50]], - [[13217, 13217], 'mapped', [109, 50]], - [[13218, 13218], 'mapped', [107, 109, 50]], - [[13219, 13219], 'mapped', [109, 109, 51]], - [[13220, 13220], 'mapped', [99, 109, 51]], - [[13221, 13221], 'mapped', [109, 51]], - [[13222, 13222], 'mapped', [107, 109, 51]], - [[13223, 13223], 'mapped', [109, 8725, 115]], - [[13224, 13224], 'mapped', [109, 8725, 115, 50]], - [[13225, 13225], 'mapped', [112, 97]], - [[13226, 13226], 'mapped', [107, 112, 97]], - [[13227, 13227], 'mapped', [109, 112, 97]], - [[13228, 13228], 'mapped', [103, 112, 97]], - [[13229, 13229], 'mapped', [114, 97, 100]], - [[13230, 13230], 'mapped', [114, 97, 100, 8725, 115]], - [[13231, 13231], 'mapped', [114, 97, 100, 8725, 115, 50]], - [[13232, 13232], 'mapped', [112, 115]], - [[13233, 13233], 'mapped', [110, 115]], - [[13234, 13234], 'mapped', [956, 115]], - [[13235, 13235], 'mapped', [109, 115]], - [[13236, 13236], 'mapped', [112, 118]], - [[13237, 13237], 'mapped', [110, 118]], - [[13238, 13238], 'mapped', [956, 118]], - [[13239, 13239], 'mapped', [109, 118]], - [[13240, 13240], 'mapped', [107, 118]], - [[13241, 13241], 'mapped', [109, 118]], - [[13242, 13242], 'mapped', [112, 119]], - [[13243, 13243], 'mapped', [110, 119]], - [[13244, 13244], 'mapped', [956, 119]], - [[13245, 13245], 'mapped', [109, 119]], - [[13246, 13246], 'mapped', [107, 119]], - [[13247, 13247], 'mapped', [109, 119]], - [[13248, 13248], 'mapped', [107, 969]], - [[13249, 13249], 'mapped', [109, 969]], - [[13250, 13250], 'disallowed'], - [[13251, 13251], 'mapped', [98, 113]], - [[13252, 13252], 'mapped', [99, 99]], - [[13253, 13253], 'mapped', [99, 100]], - [[13254, 13254], 'mapped', [99, 8725, 107, 103]], - [[13255, 13255], 'disallowed'], - [[13256, 13256], 'mapped', [100, 98]], - [[13257, 13257], 'mapped', [103, 121]], - [[13258, 13258], 'mapped', [104, 97]], - [[13259, 13259], 'mapped', [104, 112]], - [[13260, 13260], 'mapped', [105, 110]], - [[13261, 13261], 'mapped', [107, 107]], - [[13262, 13262], 'mapped', [107, 109]], - [[13263, 13263], 'mapped', [107, 116]], - [[13264, 13264], 'mapped', [108, 109]], - [[13265, 13265], 'mapped', [108, 110]], - [[13266, 13266], 'mapped', [108, 111, 103]], - [[13267, 13267], 'mapped', [108, 120]], - [[13268, 13268], 'mapped', [109, 98]], - [[13269, 13269], 'mapped', [109, 105, 108]], - [[13270, 13270], 'mapped', [109, 111, 108]], - [[13271, 13271], 'mapped', [112, 104]], - [[13272, 13272], 'disallowed'], - [[13273, 13273], 'mapped', [112, 112, 109]], - [[13274, 13274], 'mapped', [112, 114]], - [[13275, 13275], 'mapped', [115, 114]], - [[13276, 13276], 'mapped', [115, 118]], - [[13277, 13277], 'mapped', [119, 98]], - [[13278, 13278], 'mapped', [118, 8725, 109]], - [[13279, 13279], 'mapped', [97, 8725, 109]], - [[13280, 13280], 'mapped', [49, 26085]], - [[13281, 13281], 'mapped', [50, 26085]], - [[13282, 13282], 'mapped', [51, 26085]], - [[13283, 13283], 'mapped', [52, 26085]], - [[13284, 13284], 'mapped', [53, 26085]], - [[13285, 13285], 'mapped', [54, 26085]], - [[13286, 13286], 'mapped', [55, 26085]], - [[13287, 13287], 'mapped', [56, 26085]], - [[13288, 13288], 'mapped', [57, 26085]], - [[13289, 13289], 'mapped', [49, 48, 26085]], - [[13290, 13290], 'mapped', [49, 49, 26085]], - [[13291, 13291], 'mapped', [49, 50, 26085]], - [[13292, 13292], 'mapped', [49, 51, 26085]], - [[13293, 13293], 'mapped', [49, 52, 26085]], - [[13294, 13294], 'mapped', [49, 53, 26085]], - [[13295, 13295], 'mapped', [49, 54, 26085]], - [[13296, 13296], 'mapped', [49, 55, 26085]], - [[13297, 13297], 'mapped', [49, 56, 26085]], - [[13298, 13298], 'mapped', [49, 57, 26085]], - [[13299, 13299], 'mapped', [50, 48, 26085]], - [[13300, 13300], 'mapped', [50, 49, 26085]], - [[13301, 13301], 'mapped', [50, 50, 26085]], - [[13302, 13302], 'mapped', [50, 51, 26085]], - [[13303, 13303], 'mapped', [50, 52, 26085]], - [[13304, 13304], 'mapped', [50, 53, 26085]], - [[13305, 13305], 'mapped', [50, 54, 26085]], - [[13306, 13306], 'mapped', [50, 55, 26085]], - [[13307, 13307], 'mapped', [50, 56, 26085]], - [[13308, 13308], 'mapped', [50, 57, 26085]], - [[13309, 13309], 'mapped', [51, 48, 26085]], - [[13310, 13310], 'mapped', [51, 49, 26085]], - [[13311, 13311], 'mapped', [103, 97, 108]], - [[13312, 19893], 'valid'], - [[19894, 19903], 'disallowed'], - [[19904, 19967], 'valid', [], 'NV8'], - [[19968, 40869], 'valid'], - [[40870, 40891], 'valid'], - [[40892, 40899], 'valid'], - [[40900, 40907], 'valid'], - [[40908, 40908], 'valid'], - [[40909, 40917], 'valid'], - [[40918, 40959], 'disallowed'], - [[40960, 42124], 'valid'], - [[42125, 42127], 'disallowed'], - [[42128, 42145], 'valid', [], 'NV8'], - [[42146, 42147], 'valid', [], 'NV8'], - [[42148, 42163], 'valid', [], 'NV8'], - [[42164, 42164], 'valid', [], 'NV8'], - [[42165, 42176], 'valid', [], 'NV8'], - [[42177, 42177], 'valid', [], 'NV8'], - [[42178, 42180], 'valid', [], 'NV8'], - [[42181, 42181], 'valid', [], 'NV8'], - [[42182, 42182], 'valid', [], 'NV8'], - [[42183, 42191], 'disallowed'], - [[42192, 42237], 'valid'], - [[42238, 42239], 'valid', [], 'NV8'], - [[42240, 42508], 'valid'], - [[42509, 42511], 'valid', [], 'NV8'], - [[42512, 42539], 'valid'], - [[42540, 42559], 'disallowed'], - [[42560, 42560], 'mapped', [42561]], - [[42561, 42561], 'valid'], - [[42562, 42562], 'mapped', [42563]], - [[42563, 42563], 'valid'], - [[42564, 42564], 'mapped', [42565]], - [[42565, 42565], 'valid'], - [[42566, 42566], 'mapped', [42567]], - [[42567, 42567], 'valid'], - [[42568, 42568], 'mapped', [42569]], - [[42569, 42569], 'valid'], - [[42570, 42570], 'mapped', [42571]], - [[42571, 42571], 'valid'], - [[42572, 42572], 'mapped', [42573]], - [[42573, 42573], 'valid'], - [[42574, 42574], 'mapped', [42575]], - [[42575, 42575], 'valid'], - [[42576, 42576], 'mapped', [42577]], - [[42577, 42577], 'valid'], - [[42578, 42578], 'mapped', [42579]], - [[42579, 42579], 'valid'], - [[42580, 42580], 'mapped', [42581]], - [[42581, 42581], 'valid'], - [[42582, 42582], 'mapped', [42583]], - [[42583, 42583], 'valid'], - [[42584, 42584], 'mapped', [42585]], - [[42585, 42585], 'valid'], - [[42586, 42586], 'mapped', [42587]], - [[42587, 42587], 'valid'], - [[42588, 42588], 'mapped', [42589]], - [[42589, 42589], 'valid'], - [[42590, 42590], 'mapped', [42591]], - [[42591, 42591], 'valid'], - [[42592, 42592], 'mapped', [42593]], - [[42593, 42593], 'valid'], - [[42594, 42594], 'mapped', [42595]], - [[42595, 42595], 'valid'], - [[42596, 42596], 'mapped', [42597]], - [[42597, 42597], 'valid'], - [[42598, 42598], 'mapped', [42599]], - [[42599, 42599], 'valid'], - [[42600, 42600], 'mapped', [42601]], - [[42601, 42601], 'valid'], - [[42602, 42602], 'mapped', [42603]], - [[42603, 42603], 'valid'], - [[42604, 42604], 'mapped', [42605]], - [[42605, 42607], 'valid'], - [[42608, 42611], 'valid', [], 'NV8'], - [[42612, 42619], 'valid'], - [[42620, 42621], 'valid'], - [[42622, 42622], 'valid', [], 'NV8'], - [[42623, 42623], 'valid'], - [[42624, 42624], 'mapped', [42625]], - [[42625, 42625], 'valid'], - [[42626, 42626], 'mapped', [42627]], - [[42627, 42627], 'valid'], - [[42628, 42628], 'mapped', [42629]], - [[42629, 42629], 'valid'], - [[42630, 42630], 'mapped', [42631]], - [[42631, 42631], 'valid'], - [[42632, 42632], 'mapped', [42633]], - [[42633, 42633], 'valid'], - [[42634, 42634], 'mapped', [42635]], - [[42635, 42635], 'valid'], - [[42636, 42636], 'mapped', [42637]], - [[42637, 42637], 'valid'], - [[42638, 42638], 'mapped', [42639]], - [[42639, 42639], 'valid'], - [[42640, 42640], 'mapped', [42641]], - [[42641, 42641], 'valid'], - [[42642, 42642], 'mapped', [42643]], - [[42643, 42643], 'valid'], - [[42644, 42644], 'mapped', [42645]], - [[42645, 42645], 'valid'], - [[42646, 42646], 'mapped', [42647]], - [[42647, 42647], 'valid'], - [[42648, 42648], 'mapped', [42649]], - [[42649, 42649], 'valid'], - [[42650, 42650], 'mapped', [42651]], - [[42651, 42651], 'valid'], - [[42652, 42652], 'mapped', [1098]], - [[42653, 42653], 'mapped', [1100]], - [[42654, 42654], 'valid'], - [[42655, 42655], 'valid'], - [[42656, 42725], 'valid'], - [[42726, 42735], 'valid', [], 'NV8'], - [[42736, 42737], 'valid'], - [[42738, 42743], 'valid', [], 'NV8'], - [[42744, 42751], 'disallowed'], - [[42752, 42774], 'valid', [], 'NV8'], - [[42775, 42778], 'valid'], - [[42779, 42783], 'valid'], - [[42784, 42785], 'valid', [], 'NV8'], - [[42786, 42786], 'mapped', [42787]], - [[42787, 42787], 'valid'], - [[42788, 42788], 'mapped', [42789]], - [[42789, 42789], 'valid'], - [[42790, 42790], 'mapped', [42791]], - [[42791, 42791], 'valid'], - [[42792, 42792], 'mapped', [42793]], - [[42793, 42793], 'valid'], - [[42794, 42794], 'mapped', [42795]], - [[42795, 42795], 'valid'], - [[42796, 42796], 'mapped', [42797]], - [[42797, 42797], 'valid'], - [[42798, 42798], 'mapped', [42799]], - [[42799, 42801], 'valid'], - [[42802, 42802], 'mapped', [42803]], - [[42803, 42803], 'valid'], - [[42804, 42804], 'mapped', [42805]], - [[42805, 42805], 'valid'], - [[42806, 42806], 'mapped', [42807]], - [[42807, 42807], 'valid'], - [[42808, 42808], 'mapped', [42809]], - [[42809, 42809], 'valid'], - [[42810, 42810], 'mapped', [42811]], - [[42811, 42811], 'valid'], - [[42812, 42812], 'mapped', [42813]], - [[42813, 42813], 'valid'], - [[42814, 42814], 'mapped', [42815]], - [[42815, 42815], 'valid'], - [[42816, 42816], 'mapped', [42817]], - [[42817, 42817], 'valid'], - [[42818, 42818], 'mapped', [42819]], - [[42819, 42819], 'valid'], - [[42820, 42820], 'mapped', [42821]], - [[42821, 42821], 'valid'], - [[42822, 42822], 'mapped', [42823]], - [[42823, 42823], 'valid'], - [[42824, 42824], 'mapped', [42825]], - [[42825, 42825], 'valid'], - [[42826, 42826], 'mapped', [42827]], - [[42827, 42827], 'valid'], - [[42828, 42828], 'mapped', [42829]], - [[42829, 42829], 'valid'], - [[42830, 42830], 'mapped', [42831]], - [[42831, 42831], 'valid'], - [[42832, 42832], 'mapped', [42833]], - [[42833, 42833], 'valid'], - [[42834, 42834], 'mapped', [42835]], - [[42835, 42835], 'valid'], - [[42836, 42836], 'mapped', [42837]], - [[42837, 42837], 'valid'], - [[42838, 42838], 'mapped', [42839]], - [[42839, 42839], 'valid'], - [[42840, 42840], 'mapped', [42841]], - [[42841, 42841], 'valid'], - [[42842, 42842], 'mapped', [42843]], - [[42843, 42843], 'valid'], - [[42844, 42844], 'mapped', [42845]], - [[42845, 42845], 'valid'], - [[42846, 42846], 'mapped', [42847]], - [[42847, 42847], 'valid'], - [[42848, 42848], 'mapped', [42849]], - [[42849, 42849], 'valid'], - [[42850, 42850], 'mapped', [42851]], - [[42851, 42851], 'valid'], - [[42852, 42852], 'mapped', [42853]], - [[42853, 42853], 'valid'], - [[42854, 42854], 'mapped', [42855]], - [[42855, 42855], 'valid'], - [[42856, 42856], 'mapped', [42857]], - [[42857, 42857], 'valid'], - [[42858, 42858], 'mapped', [42859]], - [[42859, 42859], 'valid'], - [[42860, 42860], 'mapped', [42861]], - [[42861, 42861], 'valid'], - [[42862, 42862], 'mapped', [42863]], - [[42863, 42863], 'valid'], - [[42864, 42864], 'mapped', [42863]], - [[42865, 42872], 'valid'], - [[42873, 42873], 'mapped', [42874]], - [[42874, 42874], 'valid'], - [[42875, 42875], 'mapped', [42876]], - [[42876, 42876], 'valid'], - [[42877, 42877], 'mapped', [7545]], - [[42878, 42878], 'mapped', [42879]], - [[42879, 42879], 'valid'], - [[42880, 42880], 'mapped', [42881]], - [[42881, 42881], 'valid'], - [[42882, 42882], 'mapped', [42883]], - [[42883, 42883], 'valid'], - [[42884, 42884], 'mapped', [42885]], - [[42885, 42885], 'valid'], - [[42886, 42886], 'mapped', [42887]], - [[42887, 42888], 'valid'], - [[42889, 42890], 'valid', [], 'NV8'], - [[42891, 42891], 'mapped', [42892]], - [[42892, 42892], 'valid'], - [[42893, 42893], 'mapped', [613]], - [[42894, 42894], 'valid'], - [[42895, 42895], 'valid'], - [[42896, 42896], 'mapped', [42897]], - [[42897, 42897], 'valid'], - [[42898, 42898], 'mapped', [42899]], - [[42899, 42899], 'valid'], - [[42900, 42901], 'valid'], - [[42902, 42902], 'mapped', [42903]], - [[42903, 42903], 'valid'], - [[42904, 42904], 'mapped', [42905]], - [[42905, 42905], 'valid'], - [[42906, 42906], 'mapped', [42907]], - [[42907, 42907], 'valid'], - [[42908, 42908], 'mapped', [42909]], - [[42909, 42909], 'valid'], - [[42910, 42910], 'mapped', [42911]], - [[42911, 42911], 'valid'], - [[42912, 42912], 'mapped', [42913]], - [[42913, 42913], 'valid'], - [[42914, 42914], 'mapped', [42915]], - [[42915, 42915], 'valid'], - [[42916, 42916], 'mapped', [42917]], - [[42917, 42917], 'valid'], - [[42918, 42918], 'mapped', [42919]], - [[42919, 42919], 'valid'], - [[42920, 42920], 'mapped', [42921]], - [[42921, 42921], 'valid'], - [[42922, 42922], 'mapped', [614]], - [[42923, 42923], 'mapped', [604]], - [[42924, 42924], 'mapped', [609]], - [[42925, 42925], 'mapped', [620]], - [[42926, 42927], 'disallowed'], - [[42928, 42928], 'mapped', [670]], - [[42929, 42929], 'mapped', [647]], - [[42930, 42930], 'mapped', [669]], - [[42931, 42931], 'mapped', [43859]], - [[42932, 42932], 'mapped', [42933]], - [[42933, 42933], 'valid'], - [[42934, 42934], 'mapped', [42935]], - [[42935, 42935], 'valid'], - [[42936, 42998], 'disallowed'], - [[42999, 42999], 'valid'], - [[43e3, 43e3], 'mapped', [295]], - [[43001, 43001], 'mapped', [339]], - [[43002, 43002], 'valid'], - [[43003, 43007], 'valid'], - [[43008, 43047], 'valid'], - [[43048, 43051], 'valid', [], 'NV8'], - [[43052, 43055], 'disallowed'], - [[43056, 43065], 'valid', [], 'NV8'], - [[43066, 43071], 'disallowed'], - [[43072, 43123], 'valid'], - [[43124, 43127], 'valid', [], 'NV8'], - [[43128, 43135], 'disallowed'], - [[43136, 43204], 'valid'], - [[43205, 43213], 'disallowed'], - [[43214, 43215], 'valid', [], 'NV8'], - [[43216, 43225], 'valid'], - [[43226, 43231], 'disallowed'], - [[43232, 43255], 'valid'], - [[43256, 43258], 'valid', [], 'NV8'], - [[43259, 43259], 'valid'], - [[43260, 43260], 'valid', [], 'NV8'], - [[43261, 43261], 'valid'], - [[43262, 43263], 'disallowed'], - [[43264, 43309], 'valid'], - [[43310, 43311], 'valid', [], 'NV8'], - [[43312, 43347], 'valid'], - [[43348, 43358], 'disallowed'], - [[43359, 43359], 'valid', [], 'NV8'], - [[43360, 43388], 'valid', [], 'NV8'], - [[43389, 43391], 'disallowed'], - [[43392, 43456], 'valid'], - [[43457, 43469], 'valid', [], 'NV8'], - [[43470, 43470], 'disallowed'], - [[43471, 43481], 'valid'], - [[43482, 43485], 'disallowed'], - [[43486, 43487], 'valid', [], 'NV8'], - [[43488, 43518], 'valid'], - [[43519, 43519], 'disallowed'], - [[43520, 43574], 'valid'], - [[43575, 43583], 'disallowed'], - [[43584, 43597], 'valid'], - [[43598, 43599], 'disallowed'], - [[43600, 43609], 'valid'], - [[43610, 43611], 'disallowed'], - [[43612, 43615], 'valid', [], 'NV8'], - [[43616, 43638], 'valid'], - [[43639, 43641], 'valid', [], 'NV8'], - [[43642, 43643], 'valid'], - [[43644, 43647], 'valid'], - [[43648, 43714], 'valid'], - [[43715, 43738], 'disallowed'], - [[43739, 43741], 'valid'], - [[43742, 43743], 'valid', [], 'NV8'], - [[43744, 43759], 'valid'], - [[43760, 43761], 'valid', [], 'NV8'], - [[43762, 43766], 'valid'], - [[43767, 43776], 'disallowed'], - [[43777, 43782], 'valid'], - [[43783, 43784], 'disallowed'], - [[43785, 43790], 'valid'], - [[43791, 43792], 'disallowed'], - [[43793, 43798], 'valid'], - [[43799, 43807], 'disallowed'], - [[43808, 43814], 'valid'], - [[43815, 43815], 'disallowed'], - [[43816, 43822], 'valid'], - [[43823, 43823], 'disallowed'], - [[43824, 43866], 'valid'], - [[43867, 43867], 'valid', [], 'NV8'], - [[43868, 43868], 'mapped', [42791]], - [[43869, 43869], 'mapped', [43831]], - [[43870, 43870], 'mapped', [619]], - [[43871, 43871], 'mapped', [43858]], - [[43872, 43875], 'valid'], - [[43876, 43877], 'valid'], - [[43878, 43887], 'disallowed'], - [[43888, 43888], 'mapped', [5024]], - [[43889, 43889], 'mapped', [5025]], - [[43890, 43890], 'mapped', [5026]], - [[43891, 43891], 'mapped', [5027]], - [[43892, 43892], 'mapped', [5028]], - [[43893, 43893], 'mapped', [5029]], - [[43894, 43894], 'mapped', [5030]], - [[43895, 43895], 'mapped', [5031]], - [[43896, 43896], 'mapped', [5032]], - [[43897, 43897], 'mapped', [5033]], - [[43898, 43898], 'mapped', [5034]], - [[43899, 43899], 'mapped', [5035]], - [[43900, 43900], 'mapped', [5036]], - [[43901, 43901], 'mapped', [5037]], - [[43902, 43902], 'mapped', [5038]], - [[43903, 43903], 'mapped', [5039]], - [[43904, 43904], 'mapped', [5040]], - [[43905, 43905], 'mapped', [5041]], - [[43906, 43906], 'mapped', [5042]], - [[43907, 43907], 'mapped', [5043]], - [[43908, 43908], 'mapped', [5044]], - [[43909, 43909], 'mapped', [5045]], - [[43910, 43910], 'mapped', [5046]], - [[43911, 43911], 'mapped', [5047]], - [[43912, 43912], 'mapped', [5048]], - [[43913, 43913], 'mapped', [5049]], - [[43914, 43914], 'mapped', [5050]], - [[43915, 43915], 'mapped', [5051]], - [[43916, 43916], 'mapped', [5052]], - [[43917, 43917], 'mapped', [5053]], - [[43918, 43918], 'mapped', [5054]], - [[43919, 43919], 'mapped', [5055]], - [[43920, 43920], 'mapped', [5056]], - [[43921, 43921], 'mapped', [5057]], - [[43922, 43922], 'mapped', [5058]], - [[43923, 43923], 'mapped', [5059]], - [[43924, 43924], 'mapped', [5060]], - [[43925, 43925], 'mapped', [5061]], - [[43926, 43926], 'mapped', [5062]], - [[43927, 43927], 'mapped', [5063]], - [[43928, 43928], 'mapped', [5064]], - [[43929, 43929], 'mapped', [5065]], - [[43930, 43930], 'mapped', [5066]], - [[43931, 43931], 'mapped', [5067]], - [[43932, 43932], 'mapped', [5068]], - [[43933, 43933], 'mapped', [5069]], - [[43934, 43934], 'mapped', [5070]], - [[43935, 43935], 'mapped', [5071]], - [[43936, 43936], 'mapped', [5072]], - [[43937, 43937], 'mapped', [5073]], - [[43938, 43938], 'mapped', [5074]], - [[43939, 43939], 'mapped', [5075]], - [[43940, 43940], 'mapped', [5076]], - [[43941, 43941], 'mapped', [5077]], - [[43942, 43942], 'mapped', [5078]], - [[43943, 43943], 'mapped', [5079]], - [[43944, 43944], 'mapped', [5080]], - [[43945, 43945], 'mapped', [5081]], - [[43946, 43946], 'mapped', [5082]], - [[43947, 43947], 'mapped', [5083]], - [[43948, 43948], 'mapped', [5084]], - [[43949, 43949], 'mapped', [5085]], - [[43950, 43950], 'mapped', [5086]], - [[43951, 43951], 'mapped', [5087]], - [[43952, 43952], 'mapped', [5088]], - [[43953, 43953], 'mapped', [5089]], - [[43954, 43954], 'mapped', [5090]], - [[43955, 43955], 'mapped', [5091]], - [[43956, 43956], 'mapped', [5092]], - [[43957, 43957], 'mapped', [5093]], - [[43958, 43958], 'mapped', [5094]], - [[43959, 43959], 'mapped', [5095]], - [[43960, 43960], 'mapped', [5096]], - [[43961, 43961], 'mapped', [5097]], - [[43962, 43962], 'mapped', [5098]], - [[43963, 43963], 'mapped', [5099]], - [[43964, 43964], 'mapped', [5100]], - [[43965, 43965], 'mapped', [5101]], - [[43966, 43966], 'mapped', [5102]], - [[43967, 43967], 'mapped', [5103]], - [[43968, 44010], 'valid'], - [[44011, 44011], 'valid', [], 'NV8'], - [[44012, 44013], 'valid'], - [[44014, 44015], 'disallowed'], - [[44016, 44025], 'valid'], - [[44026, 44031], 'disallowed'], - [[44032, 55203], 'valid'], - [[55204, 55215], 'disallowed'], - [[55216, 55238], 'valid', [], 'NV8'], - [[55239, 55242], 'disallowed'], - [[55243, 55291], 'valid', [], 'NV8'], - [[55292, 55295], 'disallowed'], - [[55296, 57343], 'disallowed'], - [[57344, 63743], 'disallowed'], - [[63744, 63744], 'mapped', [35912]], - [[63745, 63745], 'mapped', [26356]], - [[63746, 63746], 'mapped', [36554]], - [[63747, 63747], 'mapped', [36040]], - [[63748, 63748], 'mapped', [28369]], - [[63749, 63749], 'mapped', [20018]], - [[63750, 63750], 'mapped', [21477]], - [[63751, 63752], 'mapped', [40860]], - [[63753, 63753], 'mapped', [22865]], - [[63754, 63754], 'mapped', [37329]], - [[63755, 63755], 'mapped', [21895]], - [[63756, 63756], 'mapped', [22856]], - [[63757, 63757], 'mapped', [25078]], - [[63758, 63758], 'mapped', [30313]], - [[63759, 63759], 'mapped', [32645]], - [[63760, 63760], 'mapped', [34367]], - [[63761, 63761], 'mapped', [34746]], - [[63762, 63762], 'mapped', [35064]], - [[63763, 63763], 'mapped', [37007]], - [[63764, 63764], 'mapped', [27138]], - [[63765, 63765], 'mapped', [27931]], - [[63766, 63766], 'mapped', [28889]], - [[63767, 63767], 'mapped', [29662]], - [[63768, 63768], 'mapped', [33853]], - [[63769, 63769], 'mapped', [37226]], - [[63770, 63770], 'mapped', [39409]], - [[63771, 63771], 'mapped', [20098]], - [[63772, 63772], 'mapped', [21365]], - [[63773, 63773], 'mapped', [27396]], - [[63774, 63774], 'mapped', [29211]], - [[63775, 63775], 'mapped', [34349]], - [[63776, 63776], 'mapped', [40478]], - [[63777, 63777], 'mapped', [23888]], - [[63778, 63778], 'mapped', [28651]], - [[63779, 63779], 'mapped', [34253]], - [[63780, 63780], 'mapped', [35172]], - [[63781, 63781], 'mapped', [25289]], - [[63782, 63782], 'mapped', [33240]], - [[63783, 63783], 'mapped', [34847]], - [[63784, 63784], 'mapped', [24266]], - [[63785, 63785], 'mapped', [26391]], - [[63786, 63786], 'mapped', [28010]], - [[63787, 63787], 'mapped', [29436]], - [[63788, 63788], 'mapped', [37070]], - [[63789, 63789], 'mapped', [20358]], - [[63790, 63790], 'mapped', [20919]], - [[63791, 63791], 'mapped', [21214]], - [[63792, 63792], 'mapped', [25796]], - [[63793, 63793], 'mapped', [27347]], - [[63794, 63794], 'mapped', [29200]], - [[63795, 63795], 'mapped', [30439]], - [[63796, 63796], 'mapped', [32769]], - [[63797, 63797], 'mapped', [34310]], - [[63798, 63798], 'mapped', [34396]], - [[63799, 63799], 'mapped', [36335]], - [[63800, 63800], 'mapped', [38706]], - [[63801, 63801], 'mapped', [39791]], - [[63802, 63802], 'mapped', [40442]], - [[63803, 63803], 'mapped', [30860]], - [[63804, 63804], 'mapped', [31103]], - [[63805, 63805], 'mapped', [32160]], - [[63806, 63806], 'mapped', [33737]], - [[63807, 63807], 'mapped', [37636]], - [[63808, 63808], 'mapped', [40575]], - [[63809, 63809], 'mapped', [35542]], - [[63810, 63810], 'mapped', [22751]], - [[63811, 63811], 'mapped', [24324]], - [[63812, 63812], 'mapped', [31840]], - [[63813, 63813], 'mapped', [32894]], - [[63814, 63814], 'mapped', [29282]], - [[63815, 63815], 'mapped', [30922]], - [[63816, 63816], 'mapped', [36034]], - [[63817, 63817], 'mapped', [38647]], - [[63818, 63818], 'mapped', [22744]], - [[63819, 63819], 'mapped', [23650]], - [[63820, 63820], 'mapped', [27155]], - [[63821, 63821], 'mapped', [28122]], - [[63822, 63822], 'mapped', [28431]], - [[63823, 63823], 'mapped', [32047]], - [[63824, 63824], 'mapped', [32311]], - [[63825, 63825], 'mapped', [38475]], - [[63826, 63826], 'mapped', [21202]], - [[63827, 63827], 'mapped', [32907]], - [[63828, 63828], 'mapped', [20956]], - [[63829, 63829], 'mapped', [20940]], - [[63830, 63830], 'mapped', [31260]], - [[63831, 63831], 'mapped', [32190]], - [[63832, 63832], 'mapped', [33777]], - [[63833, 63833], 'mapped', [38517]], - [[63834, 63834], 'mapped', [35712]], - [[63835, 63835], 'mapped', [25295]], - [[63836, 63836], 'mapped', [27138]], - [[63837, 63837], 'mapped', [35582]], - [[63838, 63838], 'mapped', [20025]], - [[63839, 63839], 'mapped', [23527]], - [[63840, 63840], 'mapped', [24594]], - [[63841, 63841], 'mapped', [29575]], - [[63842, 63842], 'mapped', [30064]], - [[63843, 63843], 'mapped', [21271]], - [[63844, 63844], 'mapped', [30971]], - [[63845, 63845], 'mapped', [20415]], - [[63846, 63846], 'mapped', [24489]], - [[63847, 63847], 'mapped', [19981]], - [[63848, 63848], 'mapped', [27852]], - [[63849, 63849], 'mapped', [25976]], - [[63850, 63850], 'mapped', [32034]], - [[63851, 63851], 'mapped', [21443]], - [[63852, 63852], 'mapped', [22622]], - [[63853, 63853], 'mapped', [30465]], - [[63854, 63854], 'mapped', [33865]], - [[63855, 63855], 'mapped', [35498]], - [[63856, 63856], 'mapped', [27578]], - [[63857, 63857], 'mapped', [36784]], - [[63858, 63858], 'mapped', [27784]], - [[63859, 63859], 'mapped', [25342]], - [[63860, 63860], 'mapped', [33509]], - [[63861, 63861], 'mapped', [25504]], - [[63862, 63862], 'mapped', [30053]], - [[63863, 63863], 'mapped', [20142]], - [[63864, 63864], 'mapped', [20841]], - [[63865, 63865], 'mapped', [20937]], - [[63866, 63866], 'mapped', [26753]], - [[63867, 63867], 'mapped', [31975]], - [[63868, 63868], 'mapped', [33391]], - [[63869, 63869], 'mapped', [35538]], - [[63870, 63870], 'mapped', [37327]], - [[63871, 63871], 'mapped', [21237]], - [[63872, 63872], 'mapped', [21570]], - [[63873, 63873], 'mapped', [22899]], - [[63874, 63874], 'mapped', [24300]], - [[63875, 63875], 'mapped', [26053]], - [[63876, 63876], 'mapped', [28670]], - [[63877, 63877], 'mapped', [31018]], - [[63878, 63878], 'mapped', [38317]], - [[63879, 63879], 'mapped', [39530]], - [[63880, 63880], 'mapped', [40599]], - [[63881, 63881], 'mapped', [40654]], - [[63882, 63882], 'mapped', [21147]], - [[63883, 63883], 'mapped', [26310]], - [[63884, 63884], 'mapped', [27511]], - [[63885, 63885], 'mapped', [36706]], - [[63886, 63886], 'mapped', [24180]], - [[63887, 63887], 'mapped', [24976]], - [[63888, 63888], 'mapped', [25088]], - [[63889, 63889], 'mapped', [25754]], - [[63890, 63890], 'mapped', [28451]], - [[63891, 63891], 'mapped', [29001]], - [[63892, 63892], 'mapped', [29833]], - [[63893, 63893], 'mapped', [31178]], - [[63894, 63894], 'mapped', [32244]], - [[63895, 63895], 'mapped', [32879]], - [[63896, 63896], 'mapped', [36646]], - [[63897, 63897], 'mapped', [34030]], - [[63898, 63898], 'mapped', [36899]], - [[63899, 63899], 'mapped', [37706]], - [[63900, 63900], 'mapped', [21015]], - [[63901, 63901], 'mapped', [21155]], - [[63902, 63902], 'mapped', [21693]], - [[63903, 63903], 'mapped', [28872]], - [[63904, 63904], 'mapped', [35010]], - [[63905, 63905], 'mapped', [35498]], - [[63906, 63906], 'mapped', [24265]], - [[63907, 63907], 'mapped', [24565]], - [[63908, 63908], 'mapped', [25467]], - [[63909, 63909], 'mapped', [27566]], - [[63910, 63910], 'mapped', [31806]], - [[63911, 63911], 'mapped', [29557]], - [[63912, 63912], 'mapped', [20196]], - [[63913, 63913], 'mapped', [22265]], - [[63914, 63914], 'mapped', [23527]], - [[63915, 63915], 'mapped', [23994]], - [[63916, 63916], 'mapped', [24604]], - [[63917, 63917], 'mapped', [29618]], - [[63918, 63918], 'mapped', [29801]], - [[63919, 63919], 'mapped', [32666]], - [[63920, 63920], 'mapped', [32838]], - [[63921, 63921], 'mapped', [37428]], - [[63922, 63922], 'mapped', [38646]], - [[63923, 63923], 'mapped', [38728]], - [[63924, 63924], 'mapped', [38936]], - [[63925, 63925], 'mapped', [20363]], - [[63926, 63926], 'mapped', [31150]], - [[63927, 63927], 'mapped', [37300]], - [[63928, 63928], 'mapped', [38584]], - [[63929, 63929], 'mapped', [24801]], - [[63930, 63930], 'mapped', [20102]], - [[63931, 63931], 'mapped', [20698]], - [[63932, 63932], 'mapped', [23534]], - [[63933, 63933], 'mapped', [23615]], - [[63934, 63934], 'mapped', [26009]], - [[63935, 63935], 'mapped', [27138]], - [[63936, 63936], 'mapped', [29134]], - [[63937, 63937], 'mapped', [30274]], - [[63938, 63938], 'mapped', [34044]], - [[63939, 63939], 'mapped', [36988]], - [[63940, 63940], 'mapped', [40845]], - [[63941, 63941], 'mapped', [26248]], - [[63942, 63942], 'mapped', [38446]], - [[63943, 63943], 'mapped', [21129]], - [[63944, 63944], 'mapped', [26491]], - [[63945, 63945], 'mapped', [26611]], - [[63946, 63946], 'mapped', [27969]], - [[63947, 63947], 'mapped', [28316]], - [[63948, 63948], 'mapped', [29705]], - [[63949, 63949], 'mapped', [30041]], - [[63950, 63950], 'mapped', [30827]], - [[63951, 63951], 'mapped', [32016]], - [[63952, 63952], 'mapped', [39006]], - [[63953, 63953], 'mapped', [20845]], - [[63954, 63954], 'mapped', [25134]], - [[63955, 63955], 'mapped', [38520]], - [[63956, 63956], 'mapped', [20523]], - [[63957, 63957], 'mapped', [23833]], - [[63958, 63958], 'mapped', [28138]], - [[63959, 63959], 'mapped', [36650]], - [[63960, 63960], 'mapped', [24459]], - [[63961, 63961], 'mapped', [24900]], - [[63962, 63962], 'mapped', [26647]], - [[63963, 63963], 'mapped', [29575]], - [[63964, 63964], 'mapped', [38534]], - [[63965, 63965], 'mapped', [21033]], - [[63966, 63966], 'mapped', [21519]], - [[63967, 63967], 'mapped', [23653]], - [[63968, 63968], 'mapped', [26131]], - [[63969, 63969], 'mapped', [26446]], - [[63970, 63970], 'mapped', [26792]], - [[63971, 63971], 'mapped', [27877]], - [[63972, 63972], 'mapped', [29702]], - [[63973, 63973], 'mapped', [30178]], - [[63974, 63974], 'mapped', [32633]], - [[63975, 63975], 'mapped', [35023]], - [[63976, 63976], 'mapped', [35041]], - [[63977, 63977], 'mapped', [37324]], - [[63978, 63978], 'mapped', [38626]], - [[63979, 63979], 'mapped', [21311]], - [[63980, 63980], 'mapped', [28346]], - [[63981, 63981], 'mapped', [21533]], - [[63982, 63982], 'mapped', [29136]], - [[63983, 63983], 'mapped', [29848]], - [[63984, 63984], 'mapped', [34298]], - [[63985, 63985], 'mapped', [38563]], - [[63986, 63986], 'mapped', [40023]], - [[63987, 63987], 'mapped', [40607]], - [[63988, 63988], 'mapped', [26519]], - [[63989, 63989], 'mapped', [28107]], - [[63990, 63990], 'mapped', [33256]], - [[63991, 63991], 'mapped', [31435]], - [[63992, 63992], 'mapped', [31520]], - [[63993, 63993], 'mapped', [31890]], - [[63994, 63994], 'mapped', [29376]], - [[63995, 63995], 'mapped', [28825]], - [[63996, 63996], 'mapped', [35672]], - [[63997, 63997], 'mapped', [20160]], - [[63998, 63998], 'mapped', [33590]], - [[63999, 63999], 'mapped', [21050]], - [[64e3, 64e3], 'mapped', [20999]], - [[64001, 64001], 'mapped', [24230]], - [[64002, 64002], 'mapped', [25299]], - [[64003, 64003], 'mapped', [31958]], - [[64004, 64004], 'mapped', [23429]], - [[64005, 64005], 'mapped', [27934]], - [[64006, 64006], 'mapped', [26292]], - [[64007, 64007], 'mapped', [36667]], - [[64008, 64008], 'mapped', [34892]], - [[64009, 64009], 'mapped', [38477]], - [[64010, 64010], 'mapped', [35211]], - [[64011, 64011], 'mapped', [24275]], - [[64012, 64012], 'mapped', [20800]], - [[64013, 64013], 'mapped', [21952]], - [[64014, 64015], 'valid'], - [[64016, 64016], 'mapped', [22618]], - [[64017, 64017], 'valid'], - [[64018, 64018], 'mapped', [26228]], - [[64019, 64020], 'valid'], - [[64021, 64021], 'mapped', [20958]], - [[64022, 64022], 'mapped', [29482]], - [[64023, 64023], 'mapped', [30410]], - [[64024, 64024], 'mapped', [31036]], - [[64025, 64025], 'mapped', [31070]], - [[64026, 64026], 'mapped', [31077]], - [[64027, 64027], 'mapped', [31119]], - [[64028, 64028], 'mapped', [38742]], - [[64029, 64029], 'mapped', [31934]], - [[64030, 64030], 'mapped', [32701]], - [[64031, 64031], 'valid'], - [[64032, 64032], 'mapped', [34322]], - [[64033, 64033], 'valid'], - [[64034, 64034], 'mapped', [35576]], - [[64035, 64036], 'valid'], - [[64037, 64037], 'mapped', [36920]], - [[64038, 64038], 'mapped', [37117]], - [[64039, 64041], 'valid'], - [[64042, 64042], 'mapped', [39151]], - [[64043, 64043], 'mapped', [39164]], - [[64044, 64044], 'mapped', [39208]], - [[64045, 64045], 'mapped', [40372]], - [[64046, 64046], 'mapped', [37086]], - [[64047, 64047], 'mapped', [38583]], - [[64048, 64048], 'mapped', [20398]], - [[64049, 64049], 'mapped', [20711]], - [[64050, 64050], 'mapped', [20813]], - [[64051, 64051], 'mapped', [21193]], - [[64052, 64052], 'mapped', [21220]], - [[64053, 64053], 'mapped', [21329]], - [[64054, 64054], 'mapped', [21917]], - [[64055, 64055], 'mapped', [22022]], - [[64056, 64056], 'mapped', [22120]], - [[64057, 64057], 'mapped', [22592]], - [[64058, 64058], 'mapped', [22696]], - [[64059, 64059], 'mapped', [23652]], - [[64060, 64060], 'mapped', [23662]], - [[64061, 64061], 'mapped', [24724]], - [[64062, 64062], 'mapped', [24936]], - [[64063, 64063], 'mapped', [24974]], - [[64064, 64064], 'mapped', [25074]], - [[64065, 64065], 'mapped', [25935]], - [[64066, 64066], 'mapped', [26082]], - [[64067, 64067], 'mapped', [26257]], - [[64068, 64068], 'mapped', [26757]], - [[64069, 64069], 'mapped', [28023]], - [[64070, 64070], 'mapped', [28186]], - [[64071, 64071], 'mapped', [28450]], - [[64072, 64072], 'mapped', [29038]], - [[64073, 64073], 'mapped', [29227]], - [[64074, 64074], 'mapped', [29730]], - [[64075, 64075], 'mapped', [30865]], - [[64076, 64076], 'mapped', [31038]], - [[64077, 64077], 'mapped', [31049]], - [[64078, 64078], 'mapped', [31048]], - [[64079, 64079], 'mapped', [31056]], - [[64080, 64080], 'mapped', [31062]], - [[64081, 64081], 'mapped', [31069]], - [[64082, 64082], 'mapped', [31117]], - [[64083, 64083], 'mapped', [31118]], - [[64084, 64084], 'mapped', [31296]], - [[64085, 64085], 'mapped', [31361]], - [[64086, 64086], 'mapped', [31680]], - [[64087, 64087], 'mapped', [32244]], - [[64088, 64088], 'mapped', [32265]], - [[64089, 64089], 'mapped', [32321]], - [[64090, 64090], 'mapped', [32626]], - [[64091, 64091], 'mapped', [32773]], - [[64092, 64092], 'mapped', [33261]], - [[64093, 64094], 'mapped', [33401]], - [[64095, 64095], 'mapped', [33879]], - [[64096, 64096], 'mapped', [35088]], - [[64097, 64097], 'mapped', [35222]], - [[64098, 64098], 'mapped', [35585]], - [[64099, 64099], 'mapped', [35641]], - [[64100, 64100], 'mapped', [36051]], - [[64101, 64101], 'mapped', [36104]], - [[64102, 64102], 'mapped', [36790]], - [[64103, 64103], 'mapped', [36920]], - [[64104, 64104], 'mapped', [38627]], - [[64105, 64105], 'mapped', [38911]], - [[64106, 64106], 'mapped', [38971]], - [[64107, 64107], 'mapped', [24693]], - [[64108, 64108], 'mapped', [148206]], - [[64109, 64109], 'mapped', [33304]], - [[64110, 64111], 'disallowed'], - [[64112, 64112], 'mapped', [20006]], - [[64113, 64113], 'mapped', [20917]], - [[64114, 64114], 'mapped', [20840]], - [[64115, 64115], 'mapped', [20352]], - [[64116, 64116], 'mapped', [20805]], - [[64117, 64117], 'mapped', [20864]], - [[64118, 64118], 'mapped', [21191]], - [[64119, 64119], 'mapped', [21242]], - [[64120, 64120], 'mapped', [21917]], - [[64121, 64121], 'mapped', [21845]], - [[64122, 64122], 'mapped', [21913]], - [[64123, 64123], 'mapped', [21986]], - [[64124, 64124], 'mapped', [22618]], - [[64125, 64125], 'mapped', [22707]], - [[64126, 64126], 'mapped', [22852]], - [[64127, 64127], 'mapped', [22868]], - [[64128, 64128], 'mapped', [23138]], - [[64129, 64129], 'mapped', [23336]], - [[64130, 64130], 'mapped', [24274]], - [[64131, 64131], 'mapped', [24281]], - [[64132, 64132], 'mapped', [24425]], - [[64133, 64133], 'mapped', [24493]], - [[64134, 64134], 'mapped', [24792]], - [[64135, 64135], 'mapped', [24910]], - [[64136, 64136], 'mapped', [24840]], - [[64137, 64137], 'mapped', [24974]], - [[64138, 64138], 'mapped', [24928]], - [[64139, 64139], 'mapped', [25074]], - [[64140, 64140], 'mapped', [25140]], - [[64141, 64141], 'mapped', [25540]], - [[64142, 64142], 'mapped', [25628]], - [[64143, 64143], 'mapped', [25682]], - [[64144, 64144], 'mapped', [25942]], - [[64145, 64145], 'mapped', [26228]], - [[64146, 64146], 'mapped', [26391]], - [[64147, 64147], 'mapped', [26395]], - [[64148, 64148], 'mapped', [26454]], - [[64149, 64149], 'mapped', [27513]], - [[64150, 64150], 'mapped', [27578]], - [[64151, 64151], 'mapped', [27969]], - [[64152, 64152], 'mapped', [28379]], - [[64153, 64153], 'mapped', [28363]], - [[64154, 64154], 'mapped', [28450]], - [[64155, 64155], 'mapped', [28702]], - [[64156, 64156], 'mapped', [29038]], - [[64157, 64157], 'mapped', [30631]], - [[64158, 64158], 'mapped', [29237]], - [[64159, 64159], 'mapped', [29359]], - [[64160, 64160], 'mapped', [29482]], - [[64161, 64161], 'mapped', [29809]], - [[64162, 64162], 'mapped', [29958]], - [[64163, 64163], 'mapped', [30011]], - [[64164, 64164], 'mapped', [30237]], - [[64165, 64165], 'mapped', [30239]], - [[64166, 64166], 'mapped', [30410]], - [[64167, 64167], 'mapped', [30427]], - [[64168, 64168], 'mapped', [30452]], - [[64169, 64169], 'mapped', [30538]], - [[64170, 64170], 'mapped', [30528]], - [[64171, 64171], 'mapped', [30924]], - [[64172, 64172], 'mapped', [31409]], - [[64173, 64173], 'mapped', [31680]], - [[64174, 64174], 'mapped', [31867]], - [[64175, 64175], 'mapped', [32091]], - [[64176, 64176], 'mapped', [32244]], - [[64177, 64177], 'mapped', [32574]], - [[64178, 64178], 'mapped', [32773]], - [[64179, 64179], 'mapped', [33618]], - [[64180, 64180], 'mapped', [33775]], - [[64181, 64181], 'mapped', [34681]], - [[64182, 64182], 'mapped', [35137]], - [[64183, 64183], 'mapped', [35206]], - [[64184, 64184], 'mapped', [35222]], - [[64185, 64185], 'mapped', [35519]], - [[64186, 64186], 'mapped', [35576]], - [[64187, 64187], 'mapped', [35531]], - [[64188, 64188], 'mapped', [35585]], - [[64189, 64189], 'mapped', [35582]], - [[64190, 64190], 'mapped', [35565]], - [[64191, 64191], 'mapped', [35641]], - [[64192, 64192], 'mapped', [35722]], - [[64193, 64193], 'mapped', [36104]], - [[64194, 64194], 'mapped', [36664]], - [[64195, 64195], 'mapped', [36978]], - [[64196, 64196], 'mapped', [37273]], - [[64197, 64197], 'mapped', [37494]], - [[64198, 64198], 'mapped', [38524]], - [[64199, 64199], 'mapped', [38627]], - [[64200, 64200], 'mapped', [38742]], - [[64201, 64201], 'mapped', [38875]], - [[64202, 64202], 'mapped', [38911]], - [[64203, 64203], 'mapped', [38923]], - [[64204, 64204], 'mapped', [38971]], - [[64205, 64205], 'mapped', [39698]], - [[64206, 64206], 'mapped', [40860]], - [[64207, 64207], 'mapped', [141386]], - [[64208, 64208], 'mapped', [141380]], - [[64209, 64209], 'mapped', [144341]], - [[64210, 64210], 'mapped', [15261]], - [[64211, 64211], 'mapped', [16408]], - [[64212, 64212], 'mapped', [16441]], - [[64213, 64213], 'mapped', [152137]], - [[64214, 64214], 'mapped', [154832]], - [[64215, 64215], 'mapped', [163539]], - [[64216, 64216], 'mapped', [40771]], - [[64217, 64217], 'mapped', [40846]], - [[64218, 64255], 'disallowed'], - [[64256, 64256], 'mapped', [102, 102]], - [[64257, 64257], 'mapped', [102, 105]], - [[64258, 64258], 'mapped', [102, 108]], - [[64259, 64259], 'mapped', [102, 102, 105]], - [[64260, 64260], 'mapped', [102, 102, 108]], - [[64261, 64262], 'mapped', [115, 116]], - [[64263, 64274], 'disallowed'], - [[64275, 64275], 'mapped', [1396, 1398]], - [[64276, 64276], 'mapped', [1396, 1381]], - [[64277, 64277], 'mapped', [1396, 1387]], - [[64278, 64278], 'mapped', [1406, 1398]], - [[64279, 64279], 'mapped', [1396, 1389]], - [[64280, 64284], 'disallowed'], - [[64285, 64285], 'mapped', [1497, 1460]], - [[64286, 64286], 'valid'], - [[64287, 64287], 'mapped', [1522, 1463]], - [[64288, 64288], 'mapped', [1506]], - [[64289, 64289], 'mapped', [1488]], - [[64290, 64290], 'mapped', [1491]], - [[64291, 64291], 'mapped', [1492]], - [[64292, 64292], 'mapped', [1499]], - [[64293, 64293], 'mapped', [1500]], - [[64294, 64294], 'mapped', [1501]], - [[64295, 64295], 'mapped', [1512]], - [[64296, 64296], 'mapped', [1514]], - [[64297, 64297], 'disallowed_STD3_mapped', [43]], - [[64298, 64298], 'mapped', [1513, 1473]], - [[64299, 64299], 'mapped', [1513, 1474]], - [[64300, 64300], 'mapped', [1513, 1468, 1473]], - [[64301, 64301], 'mapped', [1513, 1468, 1474]], - [[64302, 64302], 'mapped', [1488, 1463]], - [[64303, 64303], 'mapped', [1488, 1464]], - [[64304, 64304], 'mapped', [1488, 1468]], - [[64305, 64305], 'mapped', [1489, 1468]], - [[64306, 64306], 'mapped', [1490, 1468]], - [[64307, 64307], 'mapped', [1491, 1468]], - [[64308, 64308], 'mapped', [1492, 1468]], - [[64309, 64309], 'mapped', [1493, 1468]], - [[64310, 64310], 'mapped', [1494, 1468]], - [[64311, 64311], 'disallowed'], - [[64312, 64312], 'mapped', [1496, 1468]], - [[64313, 64313], 'mapped', [1497, 1468]], - [[64314, 64314], 'mapped', [1498, 1468]], - [[64315, 64315], 'mapped', [1499, 1468]], - [[64316, 64316], 'mapped', [1500, 1468]], - [[64317, 64317], 'disallowed'], - [[64318, 64318], 'mapped', [1502, 1468]], - [[64319, 64319], 'disallowed'], - [[64320, 64320], 'mapped', [1504, 1468]], - [[64321, 64321], 'mapped', [1505, 1468]], - [[64322, 64322], 'disallowed'], - [[64323, 64323], 'mapped', [1507, 1468]], - [[64324, 64324], 'mapped', [1508, 1468]], - [[64325, 64325], 'disallowed'], - [[64326, 64326], 'mapped', [1510, 1468]], - [[64327, 64327], 'mapped', [1511, 1468]], - [[64328, 64328], 'mapped', [1512, 1468]], - [[64329, 64329], 'mapped', [1513, 1468]], - [[64330, 64330], 'mapped', [1514, 1468]], - [[64331, 64331], 'mapped', [1493, 1465]], - [[64332, 64332], 'mapped', [1489, 1471]], - [[64333, 64333], 'mapped', [1499, 1471]], - [[64334, 64334], 'mapped', [1508, 1471]], - [[64335, 64335], 'mapped', [1488, 1500]], - [[64336, 64337], 'mapped', [1649]], - [[64338, 64341], 'mapped', [1659]], - [[64342, 64345], 'mapped', [1662]], - [[64346, 64349], 'mapped', [1664]], - [[64350, 64353], 'mapped', [1658]], - [[64354, 64357], 'mapped', [1663]], - [[64358, 64361], 'mapped', [1657]], - [[64362, 64365], 'mapped', [1700]], - [[64366, 64369], 'mapped', [1702]], - [[64370, 64373], 'mapped', [1668]], - [[64374, 64377], 'mapped', [1667]], - [[64378, 64381], 'mapped', [1670]], - [[64382, 64385], 'mapped', [1671]], - [[64386, 64387], 'mapped', [1677]], - [[64388, 64389], 'mapped', [1676]], - [[64390, 64391], 'mapped', [1678]], - [[64392, 64393], 'mapped', [1672]], - [[64394, 64395], 'mapped', [1688]], - [[64396, 64397], 'mapped', [1681]], - [[64398, 64401], 'mapped', [1705]], - [[64402, 64405], 'mapped', [1711]], - [[64406, 64409], 'mapped', [1715]], - [[64410, 64413], 'mapped', [1713]], - [[64414, 64415], 'mapped', [1722]], - [[64416, 64419], 'mapped', [1723]], - [[64420, 64421], 'mapped', [1728]], - [[64422, 64425], 'mapped', [1729]], - [[64426, 64429], 'mapped', [1726]], - [[64430, 64431], 'mapped', [1746]], - [[64432, 64433], 'mapped', [1747]], - [[64434, 64449], 'valid', [], 'NV8'], - [[64450, 64466], 'disallowed'], - [[64467, 64470], 'mapped', [1709]], - [[64471, 64472], 'mapped', [1735]], - [[64473, 64474], 'mapped', [1734]], - [[64475, 64476], 'mapped', [1736]], - [[64477, 64477], 'mapped', [1735, 1652]], - [[64478, 64479], 'mapped', [1739]], - [[64480, 64481], 'mapped', [1733]], - [[64482, 64483], 'mapped', [1737]], - [[64484, 64487], 'mapped', [1744]], - [[64488, 64489], 'mapped', [1609]], - [[64490, 64491], 'mapped', [1574, 1575]], - [[64492, 64493], 'mapped', [1574, 1749]], - [[64494, 64495], 'mapped', [1574, 1608]], - [[64496, 64497], 'mapped', [1574, 1735]], - [[64498, 64499], 'mapped', [1574, 1734]], - [[64500, 64501], 'mapped', [1574, 1736]], - [[64502, 64504], 'mapped', [1574, 1744]], - [[64505, 64507], 'mapped', [1574, 1609]], - [[64508, 64511], 'mapped', [1740]], - [[64512, 64512], 'mapped', [1574, 1580]], - [[64513, 64513], 'mapped', [1574, 1581]], - [[64514, 64514], 'mapped', [1574, 1605]], - [[64515, 64515], 'mapped', [1574, 1609]], - [[64516, 64516], 'mapped', [1574, 1610]], - [[64517, 64517], 'mapped', [1576, 1580]], - [[64518, 64518], 'mapped', [1576, 1581]], - [[64519, 64519], 'mapped', [1576, 1582]], - [[64520, 64520], 'mapped', [1576, 1605]], - [[64521, 64521], 'mapped', [1576, 1609]], - [[64522, 64522], 'mapped', [1576, 1610]], - [[64523, 64523], 'mapped', [1578, 1580]], - [[64524, 64524], 'mapped', [1578, 1581]], - [[64525, 64525], 'mapped', [1578, 1582]], - [[64526, 64526], 'mapped', [1578, 1605]], - [[64527, 64527], 'mapped', [1578, 1609]], - [[64528, 64528], 'mapped', [1578, 1610]], - [[64529, 64529], 'mapped', [1579, 1580]], - [[64530, 64530], 'mapped', [1579, 1605]], - [[64531, 64531], 'mapped', [1579, 1609]], - [[64532, 64532], 'mapped', [1579, 1610]], - [[64533, 64533], 'mapped', [1580, 1581]], - [[64534, 64534], 'mapped', [1580, 1605]], - [[64535, 64535], 'mapped', [1581, 1580]], - [[64536, 64536], 'mapped', [1581, 1605]], - [[64537, 64537], 'mapped', [1582, 1580]], - [[64538, 64538], 'mapped', [1582, 1581]], - [[64539, 64539], 'mapped', [1582, 1605]], - [[64540, 64540], 'mapped', [1587, 1580]], - [[64541, 64541], 'mapped', [1587, 1581]], - [[64542, 64542], 'mapped', [1587, 1582]], - [[64543, 64543], 'mapped', [1587, 1605]], - [[64544, 64544], 'mapped', [1589, 1581]], - [[64545, 64545], 'mapped', [1589, 1605]], - [[64546, 64546], 'mapped', [1590, 1580]], - [[64547, 64547], 'mapped', [1590, 1581]], - [[64548, 64548], 'mapped', [1590, 1582]], - [[64549, 64549], 'mapped', [1590, 1605]], - [[64550, 64550], 'mapped', [1591, 1581]], - [[64551, 64551], 'mapped', [1591, 1605]], - [[64552, 64552], 'mapped', [1592, 1605]], - [[64553, 64553], 'mapped', [1593, 1580]], - [[64554, 64554], 'mapped', [1593, 1605]], - [[64555, 64555], 'mapped', [1594, 1580]], - [[64556, 64556], 'mapped', [1594, 1605]], - [[64557, 64557], 'mapped', [1601, 1580]], - [[64558, 64558], 'mapped', [1601, 1581]], - [[64559, 64559], 'mapped', [1601, 1582]], - [[64560, 64560], 'mapped', [1601, 1605]], - [[64561, 64561], 'mapped', [1601, 1609]], - [[64562, 64562], 'mapped', [1601, 1610]], - [[64563, 64563], 'mapped', [1602, 1581]], - [[64564, 64564], 'mapped', [1602, 1605]], - [[64565, 64565], 'mapped', [1602, 1609]], - [[64566, 64566], 'mapped', [1602, 1610]], - [[64567, 64567], 'mapped', [1603, 1575]], - [[64568, 64568], 'mapped', [1603, 1580]], - [[64569, 64569], 'mapped', [1603, 1581]], - [[64570, 64570], 'mapped', [1603, 1582]], - [[64571, 64571], 'mapped', [1603, 1604]], - [[64572, 64572], 'mapped', [1603, 1605]], - [[64573, 64573], 'mapped', [1603, 1609]], - [[64574, 64574], 'mapped', [1603, 1610]], - [[64575, 64575], 'mapped', [1604, 1580]], - [[64576, 64576], 'mapped', [1604, 1581]], - [[64577, 64577], 'mapped', [1604, 1582]], - [[64578, 64578], 'mapped', [1604, 1605]], - [[64579, 64579], 'mapped', [1604, 1609]], - [[64580, 64580], 'mapped', [1604, 1610]], - [[64581, 64581], 'mapped', [1605, 1580]], - [[64582, 64582], 'mapped', [1605, 1581]], - [[64583, 64583], 'mapped', [1605, 1582]], - [[64584, 64584], 'mapped', [1605, 1605]], - [[64585, 64585], 'mapped', [1605, 1609]], - [[64586, 64586], 'mapped', [1605, 1610]], - [[64587, 64587], 'mapped', [1606, 1580]], - [[64588, 64588], 'mapped', [1606, 1581]], - [[64589, 64589], 'mapped', [1606, 1582]], - [[64590, 64590], 'mapped', [1606, 1605]], - [[64591, 64591], 'mapped', [1606, 1609]], - [[64592, 64592], 'mapped', [1606, 1610]], - [[64593, 64593], 'mapped', [1607, 1580]], - [[64594, 64594], 'mapped', [1607, 1605]], - [[64595, 64595], 'mapped', [1607, 1609]], - [[64596, 64596], 'mapped', [1607, 1610]], - [[64597, 64597], 'mapped', [1610, 1580]], - [[64598, 64598], 'mapped', [1610, 1581]], - [[64599, 64599], 'mapped', [1610, 1582]], - [[64600, 64600], 'mapped', [1610, 1605]], - [[64601, 64601], 'mapped', [1610, 1609]], - [[64602, 64602], 'mapped', [1610, 1610]], - [[64603, 64603], 'mapped', [1584, 1648]], - [[64604, 64604], 'mapped', [1585, 1648]], - [[64605, 64605], 'mapped', [1609, 1648]], - [[64606, 64606], 'disallowed_STD3_mapped', [32, 1612, 1617]], - [[64607, 64607], 'disallowed_STD3_mapped', [32, 1613, 1617]], - [[64608, 64608], 'disallowed_STD3_mapped', [32, 1614, 1617]], - [[64609, 64609], 'disallowed_STD3_mapped', [32, 1615, 1617]], - [[64610, 64610], 'disallowed_STD3_mapped', [32, 1616, 1617]], - [[64611, 64611], 'disallowed_STD3_mapped', [32, 1617, 1648]], - [[64612, 64612], 'mapped', [1574, 1585]], - [[64613, 64613], 'mapped', [1574, 1586]], - [[64614, 64614], 'mapped', [1574, 1605]], - [[64615, 64615], 'mapped', [1574, 1606]], - [[64616, 64616], 'mapped', [1574, 1609]], - [[64617, 64617], 'mapped', [1574, 1610]], - [[64618, 64618], 'mapped', [1576, 1585]], - [[64619, 64619], 'mapped', [1576, 1586]], - [[64620, 64620], 'mapped', [1576, 1605]], - [[64621, 64621], 'mapped', [1576, 1606]], - [[64622, 64622], 'mapped', [1576, 1609]], - [[64623, 64623], 'mapped', [1576, 1610]], - [[64624, 64624], 'mapped', [1578, 1585]], - [[64625, 64625], 'mapped', [1578, 1586]], - [[64626, 64626], 'mapped', [1578, 1605]], - [[64627, 64627], 'mapped', [1578, 1606]], - [[64628, 64628], 'mapped', [1578, 1609]], - [[64629, 64629], 'mapped', [1578, 1610]], - [[64630, 64630], 'mapped', [1579, 1585]], - [[64631, 64631], 'mapped', [1579, 1586]], - [[64632, 64632], 'mapped', [1579, 1605]], - [[64633, 64633], 'mapped', [1579, 1606]], - [[64634, 64634], 'mapped', [1579, 1609]], - [[64635, 64635], 'mapped', [1579, 1610]], - [[64636, 64636], 'mapped', [1601, 1609]], - [[64637, 64637], 'mapped', [1601, 1610]], - [[64638, 64638], 'mapped', [1602, 1609]], - [[64639, 64639], 'mapped', [1602, 1610]], - [[64640, 64640], 'mapped', [1603, 1575]], - [[64641, 64641], 'mapped', [1603, 1604]], - [[64642, 64642], 'mapped', [1603, 1605]], - [[64643, 64643], 'mapped', [1603, 1609]], - [[64644, 64644], 'mapped', [1603, 1610]], - [[64645, 64645], 'mapped', [1604, 1605]], - [[64646, 64646], 'mapped', [1604, 1609]], - [[64647, 64647], 'mapped', [1604, 1610]], - [[64648, 64648], 'mapped', [1605, 1575]], - [[64649, 64649], 'mapped', [1605, 1605]], - [[64650, 64650], 'mapped', [1606, 1585]], - [[64651, 64651], 'mapped', [1606, 1586]], - [[64652, 64652], 'mapped', [1606, 1605]], - [[64653, 64653], 'mapped', [1606, 1606]], - [[64654, 64654], 'mapped', [1606, 1609]], - [[64655, 64655], 'mapped', [1606, 1610]], - [[64656, 64656], 'mapped', [1609, 1648]], - [[64657, 64657], 'mapped', [1610, 1585]], - [[64658, 64658], 'mapped', [1610, 1586]], - [[64659, 64659], 'mapped', [1610, 1605]], - [[64660, 64660], 'mapped', [1610, 1606]], - [[64661, 64661], 'mapped', [1610, 1609]], - [[64662, 64662], 'mapped', [1610, 1610]], - [[64663, 64663], 'mapped', [1574, 1580]], - [[64664, 64664], 'mapped', [1574, 1581]], - [[64665, 64665], 'mapped', [1574, 1582]], - [[64666, 64666], 'mapped', [1574, 1605]], - [[64667, 64667], 'mapped', [1574, 1607]], - [[64668, 64668], 'mapped', [1576, 1580]], - [[64669, 64669], 'mapped', [1576, 1581]], - [[64670, 64670], 'mapped', [1576, 1582]], - [[64671, 64671], 'mapped', [1576, 1605]], - [[64672, 64672], 'mapped', [1576, 1607]], - [[64673, 64673], 'mapped', [1578, 1580]], - [[64674, 64674], 'mapped', [1578, 1581]], - [[64675, 64675], 'mapped', [1578, 1582]], - [[64676, 64676], 'mapped', [1578, 1605]], - [[64677, 64677], 'mapped', [1578, 1607]], - [[64678, 64678], 'mapped', [1579, 1605]], - [[64679, 64679], 'mapped', [1580, 1581]], - [[64680, 64680], 'mapped', [1580, 1605]], - [[64681, 64681], 'mapped', [1581, 1580]], - [[64682, 64682], 'mapped', [1581, 1605]], - [[64683, 64683], 'mapped', [1582, 1580]], - [[64684, 64684], 'mapped', [1582, 1605]], - [[64685, 64685], 'mapped', [1587, 1580]], - [[64686, 64686], 'mapped', [1587, 1581]], - [[64687, 64687], 'mapped', [1587, 1582]], - [[64688, 64688], 'mapped', [1587, 1605]], - [[64689, 64689], 'mapped', [1589, 1581]], - [[64690, 64690], 'mapped', [1589, 1582]], - [[64691, 64691], 'mapped', [1589, 1605]], - [[64692, 64692], 'mapped', [1590, 1580]], - [[64693, 64693], 'mapped', [1590, 1581]], - [[64694, 64694], 'mapped', [1590, 1582]], - [[64695, 64695], 'mapped', [1590, 1605]], - [[64696, 64696], 'mapped', [1591, 1581]], - [[64697, 64697], 'mapped', [1592, 1605]], - [[64698, 64698], 'mapped', [1593, 1580]], - [[64699, 64699], 'mapped', [1593, 1605]], - [[64700, 64700], 'mapped', [1594, 1580]], - [[64701, 64701], 'mapped', [1594, 1605]], - [[64702, 64702], 'mapped', [1601, 1580]], - [[64703, 64703], 'mapped', [1601, 1581]], - [[64704, 64704], 'mapped', [1601, 1582]], - [[64705, 64705], 'mapped', [1601, 1605]], - [[64706, 64706], 'mapped', [1602, 1581]], - [[64707, 64707], 'mapped', [1602, 1605]], - [[64708, 64708], 'mapped', [1603, 1580]], - [[64709, 64709], 'mapped', [1603, 1581]], - [[64710, 64710], 'mapped', [1603, 1582]], - [[64711, 64711], 'mapped', [1603, 1604]], - [[64712, 64712], 'mapped', [1603, 1605]], - [[64713, 64713], 'mapped', [1604, 1580]], - [[64714, 64714], 'mapped', [1604, 1581]], - [[64715, 64715], 'mapped', [1604, 1582]], - [[64716, 64716], 'mapped', [1604, 1605]], - [[64717, 64717], 'mapped', [1604, 1607]], - [[64718, 64718], 'mapped', [1605, 1580]], - [[64719, 64719], 'mapped', [1605, 1581]], - [[64720, 64720], 'mapped', [1605, 1582]], - [[64721, 64721], 'mapped', [1605, 1605]], - [[64722, 64722], 'mapped', [1606, 1580]], - [[64723, 64723], 'mapped', [1606, 1581]], - [[64724, 64724], 'mapped', [1606, 1582]], - [[64725, 64725], 'mapped', [1606, 1605]], - [[64726, 64726], 'mapped', [1606, 1607]], - [[64727, 64727], 'mapped', [1607, 1580]], - [[64728, 64728], 'mapped', [1607, 1605]], - [[64729, 64729], 'mapped', [1607, 1648]], - [[64730, 64730], 'mapped', [1610, 1580]], - [[64731, 64731], 'mapped', [1610, 1581]], - [[64732, 64732], 'mapped', [1610, 1582]], - [[64733, 64733], 'mapped', [1610, 1605]], - [[64734, 64734], 'mapped', [1610, 1607]], - [[64735, 64735], 'mapped', [1574, 1605]], - [[64736, 64736], 'mapped', [1574, 1607]], - [[64737, 64737], 'mapped', [1576, 1605]], - [[64738, 64738], 'mapped', [1576, 1607]], - [[64739, 64739], 'mapped', [1578, 1605]], - [[64740, 64740], 'mapped', [1578, 1607]], - [[64741, 64741], 'mapped', [1579, 1605]], - [[64742, 64742], 'mapped', [1579, 1607]], - [[64743, 64743], 'mapped', [1587, 1605]], - [[64744, 64744], 'mapped', [1587, 1607]], - [[64745, 64745], 'mapped', [1588, 1605]], - [[64746, 64746], 'mapped', [1588, 1607]], - [[64747, 64747], 'mapped', [1603, 1604]], - [[64748, 64748], 'mapped', [1603, 1605]], - [[64749, 64749], 'mapped', [1604, 1605]], - [[64750, 64750], 'mapped', [1606, 1605]], - [[64751, 64751], 'mapped', [1606, 1607]], - [[64752, 64752], 'mapped', [1610, 1605]], - [[64753, 64753], 'mapped', [1610, 1607]], - [[64754, 64754], 'mapped', [1600, 1614, 1617]], - [[64755, 64755], 'mapped', [1600, 1615, 1617]], - [[64756, 64756], 'mapped', [1600, 1616, 1617]], - [[64757, 64757], 'mapped', [1591, 1609]], - [[64758, 64758], 'mapped', [1591, 1610]], - [[64759, 64759], 'mapped', [1593, 1609]], - [[64760, 64760], 'mapped', [1593, 1610]], - [[64761, 64761], 'mapped', [1594, 1609]], - [[64762, 64762], 'mapped', [1594, 1610]], - [[64763, 64763], 'mapped', [1587, 1609]], - [[64764, 64764], 'mapped', [1587, 1610]], - [[64765, 64765], 'mapped', [1588, 1609]], - [[64766, 64766], 'mapped', [1588, 1610]], - [[64767, 64767], 'mapped', [1581, 1609]], - [[64768, 64768], 'mapped', [1581, 1610]], - [[64769, 64769], 'mapped', [1580, 1609]], - [[64770, 64770], 'mapped', [1580, 1610]], - [[64771, 64771], 'mapped', [1582, 1609]], - [[64772, 64772], 'mapped', [1582, 1610]], - [[64773, 64773], 'mapped', [1589, 1609]], - [[64774, 64774], 'mapped', [1589, 1610]], - [[64775, 64775], 'mapped', [1590, 1609]], - [[64776, 64776], 'mapped', [1590, 1610]], - [[64777, 64777], 'mapped', [1588, 1580]], - [[64778, 64778], 'mapped', [1588, 1581]], - [[64779, 64779], 'mapped', [1588, 1582]], - [[64780, 64780], 'mapped', [1588, 1605]], - [[64781, 64781], 'mapped', [1588, 1585]], - [[64782, 64782], 'mapped', [1587, 1585]], - [[64783, 64783], 'mapped', [1589, 1585]], - [[64784, 64784], 'mapped', [1590, 1585]], - [[64785, 64785], 'mapped', [1591, 1609]], - [[64786, 64786], 'mapped', [1591, 1610]], - [[64787, 64787], 'mapped', [1593, 1609]], - [[64788, 64788], 'mapped', [1593, 1610]], - [[64789, 64789], 'mapped', [1594, 1609]], - [[64790, 64790], 'mapped', [1594, 1610]], - [[64791, 64791], 'mapped', [1587, 1609]], - [[64792, 64792], 'mapped', [1587, 1610]], - [[64793, 64793], 'mapped', [1588, 1609]], - [[64794, 64794], 'mapped', [1588, 1610]], - [[64795, 64795], 'mapped', [1581, 1609]], - [[64796, 64796], 'mapped', [1581, 1610]], - [[64797, 64797], 'mapped', [1580, 1609]], - [[64798, 64798], 'mapped', [1580, 1610]], - [[64799, 64799], 'mapped', [1582, 1609]], - [[64800, 64800], 'mapped', [1582, 1610]], - [[64801, 64801], 'mapped', [1589, 1609]], - [[64802, 64802], 'mapped', [1589, 1610]], - [[64803, 64803], 'mapped', [1590, 1609]], - [[64804, 64804], 'mapped', [1590, 1610]], - [[64805, 64805], 'mapped', [1588, 1580]], - [[64806, 64806], 'mapped', [1588, 1581]], - [[64807, 64807], 'mapped', [1588, 1582]], - [[64808, 64808], 'mapped', [1588, 1605]], - [[64809, 64809], 'mapped', [1588, 1585]], - [[64810, 64810], 'mapped', [1587, 1585]], - [[64811, 64811], 'mapped', [1589, 1585]], - [[64812, 64812], 'mapped', [1590, 1585]], - [[64813, 64813], 'mapped', [1588, 1580]], - [[64814, 64814], 'mapped', [1588, 1581]], - [[64815, 64815], 'mapped', [1588, 1582]], - [[64816, 64816], 'mapped', [1588, 1605]], - [[64817, 64817], 'mapped', [1587, 1607]], - [[64818, 64818], 'mapped', [1588, 1607]], - [[64819, 64819], 'mapped', [1591, 1605]], - [[64820, 64820], 'mapped', [1587, 1580]], - [[64821, 64821], 'mapped', [1587, 1581]], - [[64822, 64822], 'mapped', [1587, 1582]], - [[64823, 64823], 'mapped', [1588, 1580]], - [[64824, 64824], 'mapped', [1588, 1581]], - [[64825, 64825], 'mapped', [1588, 1582]], - [[64826, 64826], 'mapped', [1591, 1605]], - [[64827, 64827], 'mapped', [1592, 1605]], - [[64828, 64829], 'mapped', [1575, 1611]], - [[64830, 64831], 'valid', [], 'NV8'], - [[64832, 64847], 'disallowed'], - [[64848, 64848], 'mapped', [1578, 1580, 1605]], - [[64849, 64850], 'mapped', [1578, 1581, 1580]], - [[64851, 64851], 'mapped', [1578, 1581, 1605]], - [[64852, 64852], 'mapped', [1578, 1582, 1605]], - [[64853, 64853], 'mapped', [1578, 1605, 1580]], - [[64854, 64854], 'mapped', [1578, 1605, 1581]], - [[64855, 64855], 'mapped', [1578, 1605, 1582]], - [[64856, 64857], 'mapped', [1580, 1605, 1581]], - [[64858, 64858], 'mapped', [1581, 1605, 1610]], - [[64859, 64859], 'mapped', [1581, 1605, 1609]], - [[64860, 64860], 'mapped', [1587, 1581, 1580]], - [[64861, 64861], 'mapped', [1587, 1580, 1581]], - [[64862, 64862], 'mapped', [1587, 1580, 1609]], - [[64863, 64864], 'mapped', [1587, 1605, 1581]], - [[64865, 64865], 'mapped', [1587, 1605, 1580]], - [[64866, 64867], 'mapped', [1587, 1605, 1605]], - [[64868, 64869], 'mapped', [1589, 1581, 1581]], - [[64870, 64870], 'mapped', [1589, 1605, 1605]], - [[64871, 64872], 'mapped', [1588, 1581, 1605]], - [[64873, 64873], 'mapped', [1588, 1580, 1610]], - [[64874, 64875], 'mapped', [1588, 1605, 1582]], - [[64876, 64877], 'mapped', [1588, 1605, 1605]], - [[64878, 64878], 'mapped', [1590, 1581, 1609]], - [[64879, 64880], 'mapped', [1590, 1582, 1605]], - [[64881, 64882], 'mapped', [1591, 1605, 1581]], - [[64883, 64883], 'mapped', [1591, 1605, 1605]], - [[64884, 64884], 'mapped', [1591, 1605, 1610]], - [[64885, 64885], 'mapped', [1593, 1580, 1605]], - [[64886, 64887], 'mapped', [1593, 1605, 1605]], - [[64888, 64888], 'mapped', [1593, 1605, 1609]], - [[64889, 64889], 'mapped', [1594, 1605, 1605]], - [[64890, 64890], 'mapped', [1594, 1605, 1610]], - [[64891, 64891], 'mapped', [1594, 1605, 1609]], - [[64892, 64893], 'mapped', [1601, 1582, 1605]], - [[64894, 64894], 'mapped', [1602, 1605, 1581]], - [[64895, 64895], 'mapped', [1602, 1605, 1605]], - [[64896, 64896], 'mapped', [1604, 1581, 1605]], - [[64897, 64897], 'mapped', [1604, 1581, 1610]], - [[64898, 64898], 'mapped', [1604, 1581, 1609]], - [[64899, 64900], 'mapped', [1604, 1580, 1580]], - [[64901, 64902], 'mapped', [1604, 1582, 1605]], - [[64903, 64904], 'mapped', [1604, 1605, 1581]], - [[64905, 64905], 'mapped', [1605, 1581, 1580]], - [[64906, 64906], 'mapped', [1605, 1581, 1605]], - [[64907, 64907], 'mapped', [1605, 1581, 1610]], - [[64908, 64908], 'mapped', [1605, 1580, 1581]], - [[64909, 64909], 'mapped', [1605, 1580, 1605]], - [[64910, 64910], 'mapped', [1605, 1582, 1580]], - [[64911, 64911], 'mapped', [1605, 1582, 1605]], - [[64912, 64913], 'disallowed'], - [[64914, 64914], 'mapped', [1605, 1580, 1582]], - [[64915, 64915], 'mapped', [1607, 1605, 1580]], - [[64916, 64916], 'mapped', [1607, 1605, 1605]], - [[64917, 64917], 'mapped', [1606, 1581, 1605]], - [[64918, 64918], 'mapped', [1606, 1581, 1609]], - [[64919, 64920], 'mapped', [1606, 1580, 1605]], - [[64921, 64921], 'mapped', [1606, 1580, 1609]], - [[64922, 64922], 'mapped', [1606, 1605, 1610]], - [[64923, 64923], 'mapped', [1606, 1605, 1609]], - [[64924, 64925], 'mapped', [1610, 1605, 1605]], - [[64926, 64926], 'mapped', [1576, 1582, 1610]], - [[64927, 64927], 'mapped', [1578, 1580, 1610]], - [[64928, 64928], 'mapped', [1578, 1580, 1609]], - [[64929, 64929], 'mapped', [1578, 1582, 1610]], - [[64930, 64930], 'mapped', [1578, 1582, 1609]], - [[64931, 64931], 'mapped', [1578, 1605, 1610]], - [[64932, 64932], 'mapped', [1578, 1605, 1609]], - [[64933, 64933], 'mapped', [1580, 1605, 1610]], - [[64934, 64934], 'mapped', [1580, 1581, 1609]], - [[64935, 64935], 'mapped', [1580, 1605, 1609]], - [[64936, 64936], 'mapped', [1587, 1582, 1609]], - [[64937, 64937], 'mapped', [1589, 1581, 1610]], - [[64938, 64938], 'mapped', [1588, 1581, 1610]], - [[64939, 64939], 'mapped', [1590, 1581, 1610]], - [[64940, 64940], 'mapped', [1604, 1580, 1610]], - [[64941, 64941], 'mapped', [1604, 1605, 1610]], - [[64942, 64942], 'mapped', [1610, 1581, 1610]], - [[64943, 64943], 'mapped', [1610, 1580, 1610]], - [[64944, 64944], 'mapped', [1610, 1605, 1610]], - [[64945, 64945], 'mapped', [1605, 1605, 1610]], - [[64946, 64946], 'mapped', [1602, 1605, 1610]], - [[64947, 64947], 'mapped', [1606, 1581, 1610]], - [[64948, 64948], 'mapped', [1602, 1605, 1581]], - [[64949, 64949], 'mapped', [1604, 1581, 1605]], - [[64950, 64950], 'mapped', [1593, 1605, 1610]], - [[64951, 64951], 'mapped', [1603, 1605, 1610]], - [[64952, 64952], 'mapped', [1606, 1580, 1581]], - [[64953, 64953], 'mapped', [1605, 1582, 1610]], - [[64954, 64954], 'mapped', [1604, 1580, 1605]], - [[64955, 64955], 'mapped', [1603, 1605, 1605]], - [[64956, 64956], 'mapped', [1604, 1580, 1605]], - [[64957, 64957], 'mapped', [1606, 1580, 1581]], - [[64958, 64958], 'mapped', [1580, 1581, 1610]], - [[64959, 64959], 'mapped', [1581, 1580, 1610]], - [[64960, 64960], 'mapped', [1605, 1580, 1610]], - [[64961, 64961], 'mapped', [1601, 1605, 1610]], - [[64962, 64962], 'mapped', [1576, 1581, 1610]], - [[64963, 64963], 'mapped', [1603, 1605, 1605]], - [[64964, 64964], 'mapped', [1593, 1580, 1605]], - [[64965, 64965], 'mapped', [1589, 1605, 1605]], - [[64966, 64966], 'mapped', [1587, 1582, 1610]], - [[64967, 64967], 'mapped', [1606, 1580, 1610]], - [[64968, 64975], 'disallowed'], - [[64976, 65007], 'disallowed'], - [[65008, 65008], 'mapped', [1589, 1604, 1746]], - [[65009, 65009], 'mapped', [1602, 1604, 1746]], - [[65010, 65010], 'mapped', [1575, 1604, 1604, 1607]], - [[65011, 65011], 'mapped', [1575, 1603, 1576, 1585]], - [[65012, 65012], 'mapped', [1605, 1581, 1605, 1583]], - [[65013, 65013], 'mapped', [1589, 1604, 1593, 1605]], - [[65014, 65014], 'mapped', [1585, 1587, 1608, 1604]], - [[65015, 65015], 'mapped', [1593, 1604, 1610, 1607]], - [[65016, 65016], 'mapped', [1608, 1587, 1604, 1605]], - [[65017, 65017], 'mapped', [1589, 1604, 1609]], - [ - [65018, 65018], - 'disallowed_STD3_mapped', - [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605] - ], - [[65019, 65019], 'disallowed_STD3_mapped', [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], - [[65020, 65020], 'mapped', [1585, 1740, 1575, 1604]], - [[65021, 65021], 'valid', [], 'NV8'], - [[65022, 65023], 'disallowed'], - [[65024, 65039], 'ignored'], - [[65040, 65040], 'disallowed_STD3_mapped', [44]], - [[65041, 65041], 'mapped', [12289]], - [[65042, 65042], 'disallowed'], - [[65043, 65043], 'disallowed_STD3_mapped', [58]], - [[65044, 65044], 'disallowed_STD3_mapped', [59]], - [[65045, 65045], 'disallowed_STD3_mapped', [33]], - [[65046, 65046], 'disallowed_STD3_mapped', [63]], - [[65047, 65047], 'mapped', [12310]], - [[65048, 65048], 'mapped', [12311]], - [[65049, 65049], 'disallowed'], - [[65050, 65055], 'disallowed'], - [[65056, 65059], 'valid'], - [[65060, 65062], 'valid'], - [[65063, 65069], 'valid'], - [[65070, 65071], 'valid'], - [[65072, 65072], 'disallowed'], - [[65073, 65073], 'mapped', [8212]], - [[65074, 65074], 'mapped', [8211]], - [[65075, 65076], 'disallowed_STD3_mapped', [95]], - [[65077, 65077], 'disallowed_STD3_mapped', [40]], - [[65078, 65078], 'disallowed_STD3_mapped', [41]], - [[65079, 65079], 'disallowed_STD3_mapped', [123]], - [[65080, 65080], 'disallowed_STD3_mapped', [125]], - [[65081, 65081], 'mapped', [12308]], - [[65082, 65082], 'mapped', [12309]], - [[65083, 65083], 'mapped', [12304]], - [[65084, 65084], 'mapped', [12305]], - [[65085, 65085], 'mapped', [12298]], - [[65086, 65086], 'mapped', [12299]], - [[65087, 65087], 'mapped', [12296]], - [[65088, 65088], 'mapped', [12297]], - [[65089, 65089], 'mapped', [12300]], - [[65090, 65090], 'mapped', [12301]], - [[65091, 65091], 'mapped', [12302]], - [[65092, 65092], 'mapped', [12303]], - [[65093, 65094], 'valid', [], 'NV8'], - [[65095, 65095], 'disallowed_STD3_mapped', [91]], - [[65096, 65096], 'disallowed_STD3_mapped', [93]], - [[65097, 65100], 'disallowed_STD3_mapped', [32, 773]], - [[65101, 65103], 'disallowed_STD3_mapped', [95]], - [[65104, 65104], 'disallowed_STD3_mapped', [44]], - [[65105, 65105], 'mapped', [12289]], - [[65106, 65106], 'disallowed'], - [[65107, 65107], 'disallowed'], - [[65108, 65108], 'disallowed_STD3_mapped', [59]], - [[65109, 65109], 'disallowed_STD3_mapped', [58]], - [[65110, 65110], 'disallowed_STD3_mapped', [63]], - [[65111, 65111], 'disallowed_STD3_mapped', [33]], - [[65112, 65112], 'mapped', [8212]], - [[65113, 65113], 'disallowed_STD3_mapped', [40]], - [[65114, 65114], 'disallowed_STD3_mapped', [41]], - [[65115, 65115], 'disallowed_STD3_mapped', [123]], - [[65116, 65116], 'disallowed_STD3_mapped', [125]], - [[65117, 65117], 'mapped', [12308]], - [[65118, 65118], 'mapped', [12309]], - [[65119, 65119], 'disallowed_STD3_mapped', [35]], - [[65120, 65120], 'disallowed_STD3_mapped', [38]], - [[65121, 65121], 'disallowed_STD3_mapped', [42]], - [[65122, 65122], 'disallowed_STD3_mapped', [43]], - [[65123, 65123], 'mapped', [45]], - [[65124, 65124], 'disallowed_STD3_mapped', [60]], - [[65125, 65125], 'disallowed_STD3_mapped', [62]], - [[65126, 65126], 'disallowed_STD3_mapped', [61]], - [[65127, 65127], 'disallowed'], - [[65128, 65128], 'disallowed_STD3_mapped', [92]], - [[65129, 65129], 'disallowed_STD3_mapped', [36]], - [[65130, 65130], 'disallowed_STD3_mapped', [37]], - [[65131, 65131], 'disallowed_STD3_mapped', [64]], - [[65132, 65135], 'disallowed'], - [[65136, 65136], 'disallowed_STD3_mapped', [32, 1611]], - [[65137, 65137], 'mapped', [1600, 1611]], - [[65138, 65138], 'disallowed_STD3_mapped', [32, 1612]], - [[65139, 65139], 'valid'], - [[65140, 65140], 'disallowed_STD3_mapped', [32, 1613]], - [[65141, 65141], 'disallowed'], - [[65142, 65142], 'disallowed_STD3_mapped', [32, 1614]], - [[65143, 65143], 'mapped', [1600, 1614]], - [[65144, 65144], 'disallowed_STD3_mapped', [32, 1615]], - [[65145, 65145], 'mapped', [1600, 1615]], - [[65146, 65146], 'disallowed_STD3_mapped', [32, 1616]], - [[65147, 65147], 'mapped', [1600, 1616]], - [[65148, 65148], 'disallowed_STD3_mapped', [32, 1617]], - [[65149, 65149], 'mapped', [1600, 1617]], - [[65150, 65150], 'disallowed_STD3_mapped', [32, 1618]], - [[65151, 65151], 'mapped', [1600, 1618]], - [[65152, 65152], 'mapped', [1569]], - [[65153, 65154], 'mapped', [1570]], - [[65155, 65156], 'mapped', [1571]], - [[65157, 65158], 'mapped', [1572]], - [[65159, 65160], 'mapped', [1573]], - [[65161, 65164], 'mapped', [1574]], - [[65165, 65166], 'mapped', [1575]], - [[65167, 65170], 'mapped', [1576]], - [[65171, 65172], 'mapped', [1577]], - [[65173, 65176], 'mapped', [1578]], - [[65177, 65180], 'mapped', [1579]], - [[65181, 65184], 'mapped', [1580]], - [[65185, 65188], 'mapped', [1581]], - [[65189, 65192], 'mapped', [1582]], - [[65193, 65194], 'mapped', [1583]], - [[65195, 65196], 'mapped', [1584]], - [[65197, 65198], 'mapped', [1585]], - [[65199, 65200], 'mapped', [1586]], - [[65201, 65204], 'mapped', [1587]], - [[65205, 65208], 'mapped', [1588]], - [[65209, 65212], 'mapped', [1589]], - [[65213, 65216], 'mapped', [1590]], - [[65217, 65220], 'mapped', [1591]], - [[65221, 65224], 'mapped', [1592]], - [[65225, 65228], 'mapped', [1593]], - [[65229, 65232], 'mapped', [1594]], - [[65233, 65236], 'mapped', [1601]], - [[65237, 65240], 'mapped', [1602]], - [[65241, 65244], 'mapped', [1603]], - [[65245, 65248], 'mapped', [1604]], - [[65249, 65252], 'mapped', [1605]], - [[65253, 65256], 'mapped', [1606]], - [[65257, 65260], 'mapped', [1607]], - [[65261, 65262], 'mapped', [1608]], - [[65263, 65264], 'mapped', [1609]], - [[65265, 65268], 'mapped', [1610]], - [[65269, 65270], 'mapped', [1604, 1570]], - [[65271, 65272], 'mapped', [1604, 1571]], - [[65273, 65274], 'mapped', [1604, 1573]], - [[65275, 65276], 'mapped', [1604, 1575]], - [[65277, 65278], 'disallowed'], - [[65279, 65279], 'ignored'], - [[65280, 65280], 'disallowed'], - [[65281, 65281], 'disallowed_STD3_mapped', [33]], - [[65282, 65282], 'disallowed_STD3_mapped', [34]], - [[65283, 65283], 'disallowed_STD3_mapped', [35]], - [[65284, 65284], 'disallowed_STD3_mapped', [36]], - [[65285, 65285], 'disallowed_STD3_mapped', [37]], - [[65286, 65286], 'disallowed_STD3_mapped', [38]], - [[65287, 65287], 'disallowed_STD3_mapped', [39]], - [[65288, 65288], 'disallowed_STD3_mapped', [40]], - [[65289, 65289], 'disallowed_STD3_mapped', [41]], - [[65290, 65290], 'disallowed_STD3_mapped', [42]], - [[65291, 65291], 'disallowed_STD3_mapped', [43]], - [[65292, 65292], 'disallowed_STD3_mapped', [44]], - [[65293, 65293], 'mapped', [45]], - [[65294, 65294], 'mapped', [46]], - [[65295, 65295], 'disallowed_STD3_mapped', [47]], - [[65296, 65296], 'mapped', [48]], - [[65297, 65297], 'mapped', [49]], - [[65298, 65298], 'mapped', [50]], - [[65299, 65299], 'mapped', [51]], - [[65300, 65300], 'mapped', [52]], - [[65301, 65301], 'mapped', [53]], - [[65302, 65302], 'mapped', [54]], - [[65303, 65303], 'mapped', [55]], - [[65304, 65304], 'mapped', [56]], - [[65305, 65305], 'mapped', [57]], - [[65306, 65306], 'disallowed_STD3_mapped', [58]], - [[65307, 65307], 'disallowed_STD3_mapped', [59]], - [[65308, 65308], 'disallowed_STD3_mapped', [60]], - [[65309, 65309], 'disallowed_STD3_mapped', [61]], - [[65310, 65310], 'disallowed_STD3_mapped', [62]], - [[65311, 65311], 'disallowed_STD3_mapped', [63]], - [[65312, 65312], 'disallowed_STD3_mapped', [64]], - [[65313, 65313], 'mapped', [97]], - [[65314, 65314], 'mapped', [98]], - [[65315, 65315], 'mapped', [99]], - [[65316, 65316], 'mapped', [100]], - [[65317, 65317], 'mapped', [101]], - [[65318, 65318], 'mapped', [102]], - [[65319, 65319], 'mapped', [103]], - [[65320, 65320], 'mapped', [104]], - [[65321, 65321], 'mapped', [105]], - [[65322, 65322], 'mapped', [106]], - [[65323, 65323], 'mapped', [107]], - [[65324, 65324], 'mapped', [108]], - [[65325, 65325], 'mapped', [109]], - [[65326, 65326], 'mapped', [110]], - [[65327, 65327], 'mapped', [111]], - [[65328, 65328], 'mapped', [112]], - [[65329, 65329], 'mapped', [113]], - [[65330, 65330], 'mapped', [114]], - [[65331, 65331], 'mapped', [115]], - [[65332, 65332], 'mapped', [116]], - [[65333, 65333], 'mapped', [117]], - [[65334, 65334], 'mapped', [118]], - [[65335, 65335], 'mapped', [119]], - [[65336, 65336], 'mapped', [120]], - [[65337, 65337], 'mapped', [121]], - [[65338, 65338], 'mapped', [122]], - [[65339, 65339], 'disallowed_STD3_mapped', [91]], - [[65340, 65340], 'disallowed_STD3_mapped', [92]], - [[65341, 65341], 'disallowed_STD3_mapped', [93]], - [[65342, 65342], 'disallowed_STD3_mapped', [94]], - [[65343, 65343], 'disallowed_STD3_mapped', [95]], - [[65344, 65344], 'disallowed_STD3_mapped', [96]], - [[65345, 65345], 'mapped', [97]], - [[65346, 65346], 'mapped', [98]], - [[65347, 65347], 'mapped', [99]], - [[65348, 65348], 'mapped', [100]], - [[65349, 65349], 'mapped', [101]], - [[65350, 65350], 'mapped', [102]], - [[65351, 65351], 'mapped', [103]], - [[65352, 65352], 'mapped', [104]], - [[65353, 65353], 'mapped', [105]], - [[65354, 65354], 'mapped', [106]], - [[65355, 65355], 'mapped', [107]], - [[65356, 65356], 'mapped', [108]], - [[65357, 65357], 'mapped', [109]], - [[65358, 65358], 'mapped', [110]], - [[65359, 65359], 'mapped', [111]], - [[65360, 65360], 'mapped', [112]], - [[65361, 65361], 'mapped', [113]], - [[65362, 65362], 'mapped', [114]], - [[65363, 65363], 'mapped', [115]], - [[65364, 65364], 'mapped', [116]], - [[65365, 65365], 'mapped', [117]], - [[65366, 65366], 'mapped', [118]], - [[65367, 65367], 'mapped', [119]], - [[65368, 65368], 'mapped', [120]], - [[65369, 65369], 'mapped', [121]], - [[65370, 65370], 'mapped', [122]], - [[65371, 65371], 'disallowed_STD3_mapped', [123]], - [[65372, 65372], 'disallowed_STD3_mapped', [124]], - [[65373, 65373], 'disallowed_STD3_mapped', [125]], - [[65374, 65374], 'disallowed_STD3_mapped', [126]], - [[65375, 65375], 'mapped', [10629]], - [[65376, 65376], 'mapped', [10630]], - [[65377, 65377], 'mapped', [46]], - [[65378, 65378], 'mapped', [12300]], - [[65379, 65379], 'mapped', [12301]], - [[65380, 65380], 'mapped', [12289]], - [[65381, 65381], 'mapped', [12539]], - [[65382, 65382], 'mapped', [12530]], - [[65383, 65383], 'mapped', [12449]], - [[65384, 65384], 'mapped', [12451]], - [[65385, 65385], 'mapped', [12453]], - [[65386, 65386], 'mapped', [12455]], - [[65387, 65387], 'mapped', [12457]], - [[65388, 65388], 'mapped', [12515]], - [[65389, 65389], 'mapped', [12517]], - [[65390, 65390], 'mapped', [12519]], - [[65391, 65391], 'mapped', [12483]], - [[65392, 65392], 'mapped', [12540]], - [[65393, 65393], 'mapped', [12450]], - [[65394, 65394], 'mapped', [12452]], - [[65395, 65395], 'mapped', [12454]], - [[65396, 65396], 'mapped', [12456]], - [[65397, 65397], 'mapped', [12458]], - [[65398, 65398], 'mapped', [12459]], - [[65399, 65399], 'mapped', [12461]], - [[65400, 65400], 'mapped', [12463]], - [[65401, 65401], 'mapped', [12465]], - [[65402, 65402], 'mapped', [12467]], - [[65403, 65403], 'mapped', [12469]], - [[65404, 65404], 'mapped', [12471]], - [[65405, 65405], 'mapped', [12473]], - [[65406, 65406], 'mapped', [12475]], - [[65407, 65407], 'mapped', [12477]], - [[65408, 65408], 'mapped', [12479]], - [[65409, 65409], 'mapped', [12481]], - [[65410, 65410], 'mapped', [12484]], - [[65411, 65411], 'mapped', [12486]], - [[65412, 65412], 'mapped', [12488]], - [[65413, 65413], 'mapped', [12490]], - [[65414, 65414], 'mapped', [12491]], - [[65415, 65415], 'mapped', [12492]], - [[65416, 65416], 'mapped', [12493]], - [[65417, 65417], 'mapped', [12494]], - [[65418, 65418], 'mapped', [12495]], - [[65419, 65419], 'mapped', [12498]], - [[65420, 65420], 'mapped', [12501]], - [[65421, 65421], 'mapped', [12504]], - [[65422, 65422], 'mapped', [12507]], - [[65423, 65423], 'mapped', [12510]], - [[65424, 65424], 'mapped', [12511]], - [[65425, 65425], 'mapped', [12512]], - [[65426, 65426], 'mapped', [12513]], - [[65427, 65427], 'mapped', [12514]], - [[65428, 65428], 'mapped', [12516]], - [[65429, 65429], 'mapped', [12518]], - [[65430, 65430], 'mapped', [12520]], - [[65431, 65431], 'mapped', [12521]], - [[65432, 65432], 'mapped', [12522]], - [[65433, 65433], 'mapped', [12523]], - [[65434, 65434], 'mapped', [12524]], - [[65435, 65435], 'mapped', [12525]], - [[65436, 65436], 'mapped', [12527]], - [[65437, 65437], 'mapped', [12531]], - [[65438, 65438], 'mapped', [12441]], - [[65439, 65439], 'mapped', [12442]], - [[65440, 65440], 'disallowed'], - [[65441, 65441], 'mapped', [4352]], - [[65442, 65442], 'mapped', [4353]], - [[65443, 65443], 'mapped', [4522]], - [[65444, 65444], 'mapped', [4354]], - [[65445, 65445], 'mapped', [4524]], - [[65446, 65446], 'mapped', [4525]], - [[65447, 65447], 'mapped', [4355]], - [[65448, 65448], 'mapped', [4356]], - [[65449, 65449], 'mapped', [4357]], - [[65450, 65450], 'mapped', [4528]], - [[65451, 65451], 'mapped', [4529]], - [[65452, 65452], 'mapped', [4530]], - [[65453, 65453], 'mapped', [4531]], - [[65454, 65454], 'mapped', [4532]], - [[65455, 65455], 'mapped', [4533]], - [[65456, 65456], 'mapped', [4378]], - [[65457, 65457], 'mapped', [4358]], - [[65458, 65458], 'mapped', [4359]], - [[65459, 65459], 'mapped', [4360]], - [[65460, 65460], 'mapped', [4385]], - [[65461, 65461], 'mapped', [4361]], - [[65462, 65462], 'mapped', [4362]], - [[65463, 65463], 'mapped', [4363]], - [[65464, 65464], 'mapped', [4364]], - [[65465, 65465], 'mapped', [4365]], - [[65466, 65466], 'mapped', [4366]], - [[65467, 65467], 'mapped', [4367]], - [[65468, 65468], 'mapped', [4368]], - [[65469, 65469], 'mapped', [4369]], - [[65470, 65470], 'mapped', [4370]], - [[65471, 65473], 'disallowed'], - [[65474, 65474], 'mapped', [4449]], - [[65475, 65475], 'mapped', [4450]], - [[65476, 65476], 'mapped', [4451]], - [[65477, 65477], 'mapped', [4452]], - [[65478, 65478], 'mapped', [4453]], - [[65479, 65479], 'mapped', [4454]], - [[65480, 65481], 'disallowed'], - [[65482, 65482], 'mapped', [4455]], - [[65483, 65483], 'mapped', [4456]], - [[65484, 65484], 'mapped', [4457]], - [[65485, 65485], 'mapped', [4458]], - [[65486, 65486], 'mapped', [4459]], - [[65487, 65487], 'mapped', [4460]], - [[65488, 65489], 'disallowed'], - [[65490, 65490], 'mapped', [4461]], - [[65491, 65491], 'mapped', [4462]], - [[65492, 65492], 'mapped', [4463]], - [[65493, 65493], 'mapped', [4464]], - [[65494, 65494], 'mapped', [4465]], - [[65495, 65495], 'mapped', [4466]], - [[65496, 65497], 'disallowed'], - [[65498, 65498], 'mapped', [4467]], - [[65499, 65499], 'mapped', [4468]], - [[65500, 65500], 'mapped', [4469]], - [[65501, 65503], 'disallowed'], - [[65504, 65504], 'mapped', [162]], - [[65505, 65505], 'mapped', [163]], - [[65506, 65506], 'mapped', [172]], - [[65507, 65507], 'disallowed_STD3_mapped', [32, 772]], - [[65508, 65508], 'mapped', [166]], - [[65509, 65509], 'mapped', [165]], - [[65510, 65510], 'mapped', [8361]], - [[65511, 65511], 'disallowed'], - [[65512, 65512], 'mapped', [9474]], - [[65513, 65513], 'mapped', [8592]], - [[65514, 65514], 'mapped', [8593]], - [[65515, 65515], 'mapped', [8594]], - [[65516, 65516], 'mapped', [8595]], - [[65517, 65517], 'mapped', [9632]], - [[65518, 65518], 'mapped', [9675]], - [[65519, 65528], 'disallowed'], - [[65529, 65531], 'disallowed'], - [[65532, 65532], 'disallowed'], - [[65533, 65533], 'disallowed'], - [[65534, 65535], 'disallowed'], - [[65536, 65547], 'valid'], - [[65548, 65548], 'disallowed'], - [[65549, 65574], 'valid'], - [[65575, 65575], 'disallowed'], - [[65576, 65594], 'valid'], - [[65595, 65595], 'disallowed'], - [[65596, 65597], 'valid'], - [[65598, 65598], 'disallowed'], - [[65599, 65613], 'valid'], - [[65614, 65615], 'disallowed'], - [[65616, 65629], 'valid'], - [[65630, 65663], 'disallowed'], - [[65664, 65786], 'valid'], - [[65787, 65791], 'disallowed'], - [[65792, 65794], 'valid', [], 'NV8'], - [[65795, 65798], 'disallowed'], - [[65799, 65843], 'valid', [], 'NV8'], - [[65844, 65846], 'disallowed'], - [[65847, 65855], 'valid', [], 'NV8'], - [[65856, 65930], 'valid', [], 'NV8'], - [[65931, 65932], 'valid', [], 'NV8'], - [[65933, 65935], 'disallowed'], - [[65936, 65947], 'valid', [], 'NV8'], - [[65948, 65951], 'disallowed'], - [[65952, 65952], 'valid', [], 'NV8'], - [[65953, 65999], 'disallowed'], - [[66e3, 66044], 'valid', [], 'NV8'], - [[66045, 66045], 'valid'], - [[66046, 66175], 'disallowed'], - [[66176, 66204], 'valid'], - [[66205, 66207], 'disallowed'], - [[66208, 66256], 'valid'], - [[66257, 66271], 'disallowed'], - [[66272, 66272], 'valid'], - [[66273, 66299], 'valid', [], 'NV8'], - [[66300, 66303], 'disallowed'], - [[66304, 66334], 'valid'], - [[66335, 66335], 'valid'], - [[66336, 66339], 'valid', [], 'NV8'], - [[66340, 66351], 'disallowed'], - [[66352, 66368], 'valid'], - [[66369, 66369], 'valid', [], 'NV8'], - [[66370, 66377], 'valid'], - [[66378, 66378], 'valid', [], 'NV8'], - [[66379, 66383], 'disallowed'], - [[66384, 66426], 'valid'], - [[66427, 66431], 'disallowed'], - [[66432, 66461], 'valid'], - [[66462, 66462], 'disallowed'], - [[66463, 66463], 'valid', [], 'NV8'], - [[66464, 66499], 'valid'], - [[66500, 66503], 'disallowed'], - [[66504, 66511], 'valid'], - [[66512, 66517], 'valid', [], 'NV8'], - [[66518, 66559], 'disallowed'], - [[66560, 66560], 'mapped', [66600]], - [[66561, 66561], 'mapped', [66601]], - [[66562, 66562], 'mapped', [66602]], - [[66563, 66563], 'mapped', [66603]], - [[66564, 66564], 'mapped', [66604]], - [[66565, 66565], 'mapped', [66605]], - [[66566, 66566], 'mapped', [66606]], - [[66567, 66567], 'mapped', [66607]], - [[66568, 66568], 'mapped', [66608]], - [[66569, 66569], 'mapped', [66609]], - [[66570, 66570], 'mapped', [66610]], - [[66571, 66571], 'mapped', [66611]], - [[66572, 66572], 'mapped', [66612]], - [[66573, 66573], 'mapped', [66613]], - [[66574, 66574], 'mapped', [66614]], - [[66575, 66575], 'mapped', [66615]], - [[66576, 66576], 'mapped', [66616]], - [[66577, 66577], 'mapped', [66617]], - [[66578, 66578], 'mapped', [66618]], - [[66579, 66579], 'mapped', [66619]], - [[66580, 66580], 'mapped', [66620]], - [[66581, 66581], 'mapped', [66621]], - [[66582, 66582], 'mapped', [66622]], - [[66583, 66583], 'mapped', [66623]], - [[66584, 66584], 'mapped', [66624]], - [[66585, 66585], 'mapped', [66625]], - [[66586, 66586], 'mapped', [66626]], - [[66587, 66587], 'mapped', [66627]], - [[66588, 66588], 'mapped', [66628]], - [[66589, 66589], 'mapped', [66629]], - [[66590, 66590], 'mapped', [66630]], - [[66591, 66591], 'mapped', [66631]], - [[66592, 66592], 'mapped', [66632]], - [[66593, 66593], 'mapped', [66633]], - [[66594, 66594], 'mapped', [66634]], - [[66595, 66595], 'mapped', [66635]], - [[66596, 66596], 'mapped', [66636]], - [[66597, 66597], 'mapped', [66637]], - [[66598, 66598], 'mapped', [66638]], - [[66599, 66599], 'mapped', [66639]], - [[66600, 66637], 'valid'], - [[66638, 66717], 'valid'], - [[66718, 66719], 'disallowed'], - [[66720, 66729], 'valid'], - [[66730, 66815], 'disallowed'], - [[66816, 66855], 'valid'], - [[66856, 66863], 'disallowed'], - [[66864, 66915], 'valid'], - [[66916, 66926], 'disallowed'], - [[66927, 66927], 'valid', [], 'NV8'], - [[66928, 67071], 'disallowed'], - [[67072, 67382], 'valid'], - [[67383, 67391], 'disallowed'], - [[67392, 67413], 'valid'], - [[67414, 67423], 'disallowed'], - [[67424, 67431], 'valid'], - [[67432, 67583], 'disallowed'], - [[67584, 67589], 'valid'], - [[67590, 67591], 'disallowed'], - [[67592, 67592], 'valid'], - [[67593, 67593], 'disallowed'], - [[67594, 67637], 'valid'], - [[67638, 67638], 'disallowed'], - [[67639, 67640], 'valid'], - [[67641, 67643], 'disallowed'], - [[67644, 67644], 'valid'], - [[67645, 67646], 'disallowed'], - [[67647, 67647], 'valid'], - [[67648, 67669], 'valid'], - [[67670, 67670], 'disallowed'], - [[67671, 67679], 'valid', [], 'NV8'], - [[67680, 67702], 'valid'], - [[67703, 67711], 'valid', [], 'NV8'], - [[67712, 67742], 'valid'], - [[67743, 67750], 'disallowed'], - [[67751, 67759], 'valid', [], 'NV8'], - [[67760, 67807], 'disallowed'], - [[67808, 67826], 'valid'], - [[67827, 67827], 'disallowed'], - [[67828, 67829], 'valid'], - [[67830, 67834], 'disallowed'], - [[67835, 67839], 'valid', [], 'NV8'], - [[67840, 67861], 'valid'], - [[67862, 67865], 'valid', [], 'NV8'], - [[67866, 67867], 'valid', [], 'NV8'], - [[67868, 67870], 'disallowed'], - [[67871, 67871], 'valid', [], 'NV8'], - [[67872, 67897], 'valid'], - [[67898, 67902], 'disallowed'], - [[67903, 67903], 'valid', [], 'NV8'], - [[67904, 67967], 'disallowed'], - [[67968, 68023], 'valid'], - [[68024, 68027], 'disallowed'], - [[68028, 68029], 'valid', [], 'NV8'], - [[68030, 68031], 'valid'], - [[68032, 68047], 'valid', [], 'NV8'], - [[68048, 68049], 'disallowed'], - [[68050, 68095], 'valid', [], 'NV8'], - [[68096, 68099], 'valid'], - [[68100, 68100], 'disallowed'], - [[68101, 68102], 'valid'], - [[68103, 68107], 'disallowed'], - [[68108, 68115], 'valid'], - [[68116, 68116], 'disallowed'], - [[68117, 68119], 'valid'], - [[68120, 68120], 'disallowed'], - [[68121, 68147], 'valid'], - [[68148, 68151], 'disallowed'], - [[68152, 68154], 'valid'], - [[68155, 68158], 'disallowed'], - [[68159, 68159], 'valid'], - [[68160, 68167], 'valid', [], 'NV8'], - [[68168, 68175], 'disallowed'], - [[68176, 68184], 'valid', [], 'NV8'], - [[68185, 68191], 'disallowed'], - [[68192, 68220], 'valid'], - [[68221, 68223], 'valid', [], 'NV8'], - [[68224, 68252], 'valid'], - [[68253, 68255], 'valid', [], 'NV8'], - [[68256, 68287], 'disallowed'], - [[68288, 68295], 'valid'], - [[68296, 68296], 'valid', [], 'NV8'], - [[68297, 68326], 'valid'], - [[68327, 68330], 'disallowed'], - [[68331, 68342], 'valid', [], 'NV8'], - [[68343, 68351], 'disallowed'], - [[68352, 68405], 'valid'], - [[68406, 68408], 'disallowed'], - [[68409, 68415], 'valid', [], 'NV8'], - [[68416, 68437], 'valid'], - [[68438, 68439], 'disallowed'], - [[68440, 68447], 'valid', [], 'NV8'], - [[68448, 68466], 'valid'], - [[68467, 68471], 'disallowed'], - [[68472, 68479], 'valid', [], 'NV8'], - [[68480, 68497], 'valid'], - [[68498, 68504], 'disallowed'], - [[68505, 68508], 'valid', [], 'NV8'], - [[68509, 68520], 'disallowed'], - [[68521, 68527], 'valid', [], 'NV8'], - [[68528, 68607], 'disallowed'], - [[68608, 68680], 'valid'], - [[68681, 68735], 'disallowed'], - [[68736, 68736], 'mapped', [68800]], - [[68737, 68737], 'mapped', [68801]], - [[68738, 68738], 'mapped', [68802]], - [[68739, 68739], 'mapped', [68803]], - [[68740, 68740], 'mapped', [68804]], - [[68741, 68741], 'mapped', [68805]], - [[68742, 68742], 'mapped', [68806]], - [[68743, 68743], 'mapped', [68807]], - [[68744, 68744], 'mapped', [68808]], - [[68745, 68745], 'mapped', [68809]], - [[68746, 68746], 'mapped', [68810]], - [[68747, 68747], 'mapped', [68811]], - [[68748, 68748], 'mapped', [68812]], - [[68749, 68749], 'mapped', [68813]], - [[68750, 68750], 'mapped', [68814]], - [[68751, 68751], 'mapped', [68815]], - [[68752, 68752], 'mapped', [68816]], - [[68753, 68753], 'mapped', [68817]], - [[68754, 68754], 'mapped', [68818]], - [[68755, 68755], 'mapped', [68819]], - [[68756, 68756], 'mapped', [68820]], - [[68757, 68757], 'mapped', [68821]], - [[68758, 68758], 'mapped', [68822]], - [[68759, 68759], 'mapped', [68823]], - [[68760, 68760], 'mapped', [68824]], - [[68761, 68761], 'mapped', [68825]], - [[68762, 68762], 'mapped', [68826]], - [[68763, 68763], 'mapped', [68827]], - [[68764, 68764], 'mapped', [68828]], - [[68765, 68765], 'mapped', [68829]], - [[68766, 68766], 'mapped', [68830]], - [[68767, 68767], 'mapped', [68831]], - [[68768, 68768], 'mapped', [68832]], - [[68769, 68769], 'mapped', [68833]], - [[68770, 68770], 'mapped', [68834]], - [[68771, 68771], 'mapped', [68835]], - [[68772, 68772], 'mapped', [68836]], - [[68773, 68773], 'mapped', [68837]], - [[68774, 68774], 'mapped', [68838]], - [[68775, 68775], 'mapped', [68839]], - [[68776, 68776], 'mapped', [68840]], - [[68777, 68777], 'mapped', [68841]], - [[68778, 68778], 'mapped', [68842]], - [[68779, 68779], 'mapped', [68843]], - [[68780, 68780], 'mapped', [68844]], - [[68781, 68781], 'mapped', [68845]], - [[68782, 68782], 'mapped', [68846]], - [[68783, 68783], 'mapped', [68847]], - [[68784, 68784], 'mapped', [68848]], - [[68785, 68785], 'mapped', [68849]], - [[68786, 68786], 'mapped', [68850]], - [[68787, 68799], 'disallowed'], - [[68800, 68850], 'valid'], - [[68851, 68857], 'disallowed'], - [[68858, 68863], 'valid', [], 'NV8'], - [[68864, 69215], 'disallowed'], - [[69216, 69246], 'valid', [], 'NV8'], - [[69247, 69631], 'disallowed'], - [[69632, 69702], 'valid'], - [[69703, 69709], 'valid', [], 'NV8'], - [[69710, 69713], 'disallowed'], - [[69714, 69733], 'valid', [], 'NV8'], - [[69734, 69743], 'valid'], - [[69744, 69758], 'disallowed'], - [[69759, 69759], 'valid'], - [[69760, 69818], 'valid'], - [[69819, 69820], 'valid', [], 'NV8'], - [[69821, 69821], 'disallowed'], - [[69822, 69825], 'valid', [], 'NV8'], - [[69826, 69839], 'disallowed'], - [[69840, 69864], 'valid'], - [[69865, 69871], 'disallowed'], - [[69872, 69881], 'valid'], - [[69882, 69887], 'disallowed'], - [[69888, 69940], 'valid'], - [[69941, 69941], 'disallowed'], - [[69942, 69951], 'valid'], - [[69952, 69955], 'valid', [], 'NV8'], - [[69956, 69967], 'disallowed'], - [[69968, 70003], 'valid'], - [[70004, 70005], 'valid', [], 'NV8'], - [[70006, 70006], 'valid'], - [[70007, 70015], 'disallowed'], - [[70016, 70084], 'valid'], - [[70085, 70088], 'valid', [], 'NV8'], - [[70089, 70089], 'valid', [], 'NV8'], - [[70090, 70092], 'valid'], - [[70093, 70093], 'valid', [], 'NV8'], - [[70094, 70095], 'disallowed'], - [[70096, 70105], 'valid'], - [[70106, 70106], 'valid'], - [[70107, 70107], 'valid', [], 'NV8'], - [[70108, 70108], 'valid'], - [[70109, 70111], 'valid', [], 'NV8'], - [[70112, 70112], 'disallowed'], - [[70113, 70132], 'valid', [], 'NV8'], - [[70133, 70143], 'disallowed'], - [[70144, 70161], 'valid'], - [[70162, 70162], 'disallowed'], - [[70163, 70199], 'valid'], - [[70200, 70205], 'valid', [], 'NV8'], - [[70206, 70271], 'disallowed'], - [[70272, 70278], 'valid'], - [[70279, 70279], 'disallowed'], - [[70280, 70280], 'valid'], - [[70281, 70281], 'disallowed'], - [[70282, 70285], 'valid'], - [[70286, 70286], 'disallowed'], - [[70287, 70301], 'valid'], - [[70302, 70302], 'disallowed'], - [[70303, 70312], 'valid'], - [[70313, 70313], 'valid', [], 'NV8'], - [[70314, 70319], 'disallowed'], - [[70320, 70378], 'valid'], - [[70379, 70383], 'disallowed'], - [[70384, 70393], 'valid'], - [[70394, 70399], 'disallowed'], - [[70400, 70400], 'valid'], - [[70401, 70403], 'valid'], - [[70404, 70404], 'disallowed'], - [[70405, 70412], 'valid'], - [[70413, 70414], 'disallowed'], - [[70415, 70416], 'valid'], - [[70417, 70418], 'disallowed'], - [[70419, 70440], 'valid'], - [[70441, 70441], 'disallowed'], - [[70442, 70448], 'valid'], - [[70449, 70449], 'disallowed'], - [[70450, 70451], 'valid'], - [[70452, 70452], 'disallowed'], - [[70453, 70457], 'valid'], - [[70458, 70459], 'disallowed'], - [[70460, 70468], 'valid'], - [[70469, 70470], 'disallowed'], - [[70471, 70472], 'valid'], - [[70473, 70474], 'disallowed'], - [[70475, 70477], 'valid'], - [[70478, 70479], 'disallowed'], - [[70480, 70480], 'valid'], - [[70481, 70486], 'disallowed'], - [[70487, 70487], 'valid'], - [[70488, 70492], 'disallowed'], - [[70493, 70499], 'valid'], - [[70500, 70501], 'disallowed'], - [[70502, 70508], 'valid'], - [[70509, 70511], 'disallowed'], - [[70512, 70516], 'valid'], - [[70517, 70783], 'disallowed'], - [[70784, 70853], 'valid'], - [[70854, 70854], 'valid', [], 'NV8'], - [[70855, 70855], 'valid'], - [[70856, 70863], 'disallowed'], - [[70864, 70873], 'valid'], - [[70874, 71039], 'disallowed'], - [[71040, 71093], 'valid'], - [[71094, 71095], 'disallowed'], - [[71096, 71104], 'valid'], - [[71105, 71113], 'valid', [], 'NV8'], - [[71114, 71127], 'valid', [], 'NV8'], - [[71128, 71133], 'valid'], - [[71134, 71167], 'disallowed'], - [[71168, 71232], 'valid'], - [[71233, 71235], 'valid', [], 'NV8'], - [[71236, 71236], 'valid'], - [[71237, 71247], 'disallowed'], - [[71248, 71257], 'valid'], - [[71258, 71295], 'disallowed'], - [[71296, 71351], 'valid'], - [[71352, 71359], 'disallowed'], - [[71360, 71369], 'valid'], - [[71370, 71423], 'disallowed'], - [[71424, 71449], 'valid'], - [[71450, 71452], 'disallowed'], - [[71453, 71467], 'valid'], - [[71468, 71471], 'disallowed'], - [[71472, 71481], 'valid'], - [[71482, 71487], 'valid', [], 'NV8'], - [[71488, 71839], 'disallowed'], - [[71840, 71840], 'mapped', [71872]], - [[71841, 71841], 'mapped', [71873]], - [[71842, 71842], 'mapped', [71874]], - [[71843, 71843], 'mapped', [71875]], - [[71844, 71844], 'mapped', [71876]], - [[71845, 71845], 'mapped', [71877]], - [[71846, 71846], 'mapped', [71878]], - [[71847, 71847], 'mapped', [71879]], - [[71848, 71848], 'mapped', [71880]], - [[71849, 71849], 'mapped', [71881]], - [[71850, 71850], 'mapped', [71882]], - [[71851, 71851], 'mapped', [71883]], - [[71852, 71852], 'mapped', [71884]], - [[71853, 71853], 'mapped', [71885]], - [[71854, 71854], 'mapped', [71886]], - [[71855, 71855], 'mapped', [71887]], - [[71856, 71856], 'mapped', [71888]], - [[71857, 71857], 'mapped', [71889]], - [[71858, 71858], 'mapped', [71890]], - [[71859, 71859], 'mapped', [71891]], - [[71860, 71860], 'mapped', [71892]], - [[71861, 71861], 'mapped', [71893]], - [[71862, 71862], 'mapped', [71894]], - [[71863, 71863], 'mapped', [71895]], - [[71864, 71864], 'mapped', [71896]], - [[71865, 71865], 'mapped', [71897]], - [[71866, 71866], 'mapped', [71898]], - [[71867, 71867], 'mapped', [71899]], - [[71868, 71868], 'mapped', [71900]], - [[71869, 71869], 'mapped', [71901]], - [[71870, 71870], 'mapped', [71902]], - [[71871, 71871], 'mapped', [71903]], - [[71872, 71913], 'valid'], - [[71914, 71922], 'valid', [], 'NV8'], - [[71923, 71934], 'disallowed'], - [[71935, 71935], 'valid'], - [[71936, 72383], 'disallowed'], - [[72384, 72440], 'valid'], - [[72441, 73727], 'disallowed'], - [[73728, 74606], 'valid'], - [[74607, 74648], 'valid'], - [[74649, 74649], 'valid'], - [[74650, 74751], 'disallowed'], - [[74752, 74850], 'valid', [], 'NV8'], - [[74851, 74862], 'valid', [], 'NV8'], - [[74863, 74863], 'disallowed'], - [[74864, 74867], 'valid', [], 'NV8'], - [[74868, 74868], 'valid', [], 'NV8'], - [[74869, 74879], 'disallowed'], - [[74880, 75075], 'valid'], - [[75076, 77823], 'disallowed'], - [[77824, 78894], 'valid'], - [[78895, 82943], 'disallowed'], - [[82944, 83526], 'valid'], - [[83527, 92159], 'disallowed'], - [[92160, 92728], 'valid'], - [[92729, 92735], 'disallowed'], - [[92736, 92766], 'valid'], - [[92767, 92767], 'disallowed'], - [[92768, 92777], 'valid'], - [[92778, 92781], 'disallowed'], - [[92782, 92783], 'valid', [], 'NV8'], - [[92784, 92879], 'disallowed'], - [[92880, 92909], 'valid'], - [[92910, 92911], 'disallowed'], - [[92912, 92916], 'valid'], - [[92917, 92917], 'valid', [], 'NV8'], - [[92918, 92927], 'disallowed'], - [[92928, 92982], 'valid'], - [[92983, 92991], 'valid', [], 'NV8'], - [[92992, 92995], 'valid'], - [[92996, 92997], 'valid', [], 'NV8'], - [[92998, 93007], 'disallowed'], - [[93008, 93017], 'valid'], - [[93018, 93018], 'disallowed'], - [[93019, 93025], 'valid', [], 'NV8'], - [[93026, 93026], 'disallowed'], - [[93027, 93047], 'valid'], - [[93048, 93052], 'disallowed'], - [[93053, 93071], 'valid'], - [[93072, 93951], 'disallowed'], - [[93952, 94020], 'valid'], - [[94021, 94031], 'disallowed'], - [[94032, 94078], 'valid'], - [[94079, 94094], 'disallowed'], - [[94095, 94111], 'valid'], - [[94112, 110591], 'disallowed'], - [[110592, 110593], 'valid'], - [[110594, 113663], 'disallowed'], - [[113664, 113770], 'valid'], - [[113771, 113775], 'disallowed'], - [[113776, 113788], 'valid'], - [[113789, 113791], 'disallowed'], - [[113792, 113800], 'valid'], - [[113801, 113807], 'disallowed'], - [[113808, 113817], 'valid'], - [[113818, 113819], 'disallowed'], - [[113820, 113820], 'valid', [], 'NV8'], - [[113821, 113822], 'valid'], - [[113823, 113823], 'valid', [], 'NV8'], - [[113824, 113827], 'ignored'], - [[113828, 118783], 'disallowed'], - [[118784, 119029], 'valid', [], 'NV8'], - [[119030, 119039], 'disallowed'], - [[119040, 119078], 'valid', [], 'NV8'], - [[119079, 119080], 'disallowed'], - [[119081, 119081], 'valid', [], 'NV8'], - [[119082, 119133], 'valid', [], 'NV8'], - [[119134, 119134], 'mapped', [119127, 119141]], - [[119135, 119135], 'mapped', [119128, 119141]], - [[119136, 119136], 'mapped', [119128, 119141, 119150]], - [[119137, 119137], 'mapped', [119128, 119141, 119151]], - [[119138, 119138], 'mapped', [119128, 119141, 119152]], - [[119139, 119139], 'mapped', [119128, 119141, 119153]], - [[119140, 119140], 'mapped', [119128, 119141, 119154]], - [[119141, 119154], 'valid', [], 'NV8'], - [[119155, 119162], 'disallowed'], - [[119163, 119226], 'valid', [], 'NV8'], - [[119227, 119227], 'mapped', [119225, 119141]], - [[119228, 119228], 'mapped', [119226, 119141]], - [[119229, 119229], 'mapped', [119225, 119141, 119150]], - [[119230, 119230], 'mapped', [119226, 119141, 119150]], - [[119231, 119231], 'mapped', [119225, 119141, 119151]], - [[119232, 119232], 'mapped', [119226, 119141, 119151]], - [[119233, 119261], 'valid', [], 'NV8'], - [[119262, 119272], 'valid', [], 'NV8'], - [[119273, 119295], 'disallowed'], - [[119296, 119365], 'valid', [], 'NV8'], - [[119366, 119551], 'disallowed'], - [[119552, 119638], 'valid', [], 'NV8'], - [[119639, 119647], 'disallowed'], - [[119648, 119665], 'valid', [], 'NV8'], - [[119666, 119807], 'disallowed'], - [[119808, 119808], 'mapped', [97]], - [[119809, 119809], 'mapped', [98]], - [[119810, 119810], 'mapped', [99]], - [[119811, 119811], 'mapped', [100]], - [[119812, 119812], 'mapped', [101]], - [[119813, 119813], 'mapped', [102]], - [[119814, 119814], 'mapped', [103]], - [[119815, 119815], 'mapped', [104]], - [[119816, 119816], 'mapped', [105]], - [[119817, 119817], 'mapped', [106]], - [[119818, 119818], 'mapped', [107]], - [[119819, 119819], 'mapped', [108]], - [[119820, 119820], 'mapped', [109]], - [[119821, 119821], 'mapped', [110]], - [[119822, 119822], 'mapped', [111]], - [[119823, 119823], 'mapped', [112]], - [[119824, 119824], 'mapped', [113]], - [[119825, 119825], 'mapped', [114]], - [[119826, 119826], 'mapped', [115]], - [[119827, 119827], 'mapped', [116]], - [[119828, 119828], 'mapped', [117]], - [[119829, 119829], 'mapped', [118]], - [[119830, 119830], 'mapped', [119]], - [[119831, 119831], 'mapped', [120]], - [[119832, 119832], 'mapped', [121]], - [[119833, 119833], 'mapped', [122]], - [[119834, 119834], 'mapped', [97]], - [[119835, 119835], 'mapped', [98]], - [[119836, 119836], 'mapped', [99]], - [[119837, 119837], 'mapped', [100]], - [[119838, 119838], 'mapped', [101]], - [[119839, 119839], 'mapped', [102]], - [[119840, 119840], 'mapped', [103]], - [[119841, 119841], 'mapped', [104]], - [[119842, 119842], 'mapped', [105]], - [[119843, 119843], 'mapped', [106]], - [[119844, 119844], 'mapped', [107]], - [[119845, 119845], 'mapped', [108]], - [[119846, 119846], 'mapped', [109]], - [[119847, 119847], 'mapped', [110]], - [[119848, 119848], 'mapped', [111]], - [[119849, 119849], 'mapped', [112]], - [[119850, 119850], 'mapped', [113]], - [[119851, 119851], 'mapped', [114]], - [[119852, 119852], 'mapped', [115]], - [[119853, 119853], 'mapped', [116]], - [[119854, 119854], 'mapped', [117]], - [[119855, 119855], 'mapped', [118]], - [[119856, 119856], 'mapped', [119]], - [[119857, 119857], 'mapped', [120]], - [[119858, 119858], 'mapped', [121]], - [[119859, 119859], 'mapped', [122]], - [[119860, 119860], 'mapped', [97]], - [[119861, 119861], 'mapped', [98]], - [[119862, 119862], 'mapped', [99]], - [[119863, 119863], 'mapped', [100]], - [[119864, 119864], 'mapped', [101]], - [[119865, 119865], 'mapped', [102]], - [[119866, 119866], 'mapped', [103]], - [[119867, 119867], 'mapped', [104]], - [[119868, 119868], 'mapped', [105]], - [[119869, 119869], 'mapped', [106]], - [[119870, 119870], 'mapped', [107]], - [[119871, 119871], 'mapped', [108]], - [[119872, 119872], 'mapped', [109]], - [[119873, 119873], 'mapped', [110]], - [[119874, 119874], 'mapped', [111]], - [[119875, 119875], 'mapped', [112]], - [[119876, 119876], 'mapped', [113]], - [[119877, 119877], 'mapped', [114]], - [[119878, 119878], 'mapped', [115]], - [[119879, 119879], 'mapped', [116]], - [[119880, 119880], 'mapped', [117]], - [[119881, 119881], 'mapped', [118]], - [[119882, 119882], 'mapped', [119]], - [[119883, 119883], 'mapped', [120]], - [[119884, 119884], 'mapped', [121]], - [[119885, 119885], 'mapped', [122]], - [[119886, 119886], 'mapped', [97]], - [[119887, 119887], 'mapped', [98]], - [[119888, 119888], 'mapped', [99]], - [[119889, 119889], 'mapped', [100]], - [[119890, 119890], 'mapped', [101]], - [[119891, 119891], 'mapped', [102]], - [[119892, 119892], 'mapped', [103]], - [[119893, 119893], 'disallowed'], - [[119894, 119894], 'mapped', [105]], - [[119895, 119895], 'mapped', [106]], - [[119896, 119896], 'mapped', [107]], - [[119897, 119897], 'mapped', [108]], - [[119898, 119898], 'mapped', [109]], - [[119899, 119899], 'mapped', [110]], - [[119900, 119900], 'mapped', [111]], - [[119901, 119901], 'mapped', [112]], - [[119902, 119902], 'mapped', [113]], - [[119903, 119903], 'mapped', [114]], - [[119904, 119904], 'mapped', [115]], - [[119905, 119905], 'mapped', [116]], - [[119906, 119906], 'mapped', [117]], - [[119907, 119907], 'mapped', [118]], - [[119908, 119908], 'mapped', [119]], - [[119909, 119909], 'mapped', [120]], - [[119910, 119910], 'mapped', [121]], - [[119911, 119911], 'mapped', [122]], - [[119912, 119912], 'mapped', [97]], - [[119913, 119913], 'mapped', [98]], - [[119914, 119914], 'mapped', [99]], - [[119915, 119915], 'mapped', [100]], - [[119916, 119916], 'mapped', [101]], - [[119917, 119917], 'mapped', [102]], - [[119918, 119918], 'mapped', [103]], - [[119919, 119919], 'mapped', [104]], - [[119920, 119920], 'mapped', [105]], - [[119921, 119921], 'mapped', [106]], - [[119922, 119922], 'mapped', [107]], - [[119923, 119923], 'mapped', [108]], - [[119924, 119924], 'mapped', [109]], - [[119925, 119925], 'mapped', [110]], - [[119926, 119926], 'mapped', [111]], - [[119927, 119927], 'mapped', [112]], - [[119928, 119928], 'mapped', [113]], - [[119929, 119929], 'mapped', [114]], - [[119930, 119930], 'mapped', [115]], - [[119931, 119931], 'mapped', [116]], - [[119932, 119932], 'mapped', [117]], - [[119933, 119933], 'mapped', [118]], - [[119934, 119934], 'mapped', [119]], - [[119935, 119935], 'mapped', [120]], - [[119936, 119936], 'mapped', [121]], - [[119937, 119937], 'mapped', [122]], - [[119938, 119938], 'mapped', [97]], - [[119939, 119939], 'mapped', [98]], - [[119940, 119940], 'mapped', [99]], - [[119941, 119941], 'mapped', [100]], - [[119942, 119942], 'mapped', [101]], - [[119943, 119943], 'mapped', [102]], - [[119944, 119944], 'mapped', [103]], - [[119945, 119945], 'mapped', [104]], - [[119946, 119946], 'mapped', [105]], - [[119947, 119947], 'mapped', [106]], - [[119948, 119948], 'mapped', [107]], - [[119949, 119949], 'mapped', [108]], - [[119950, 119950], 'mapped', [109]], - [[119951, 119951], 'mapped', [110]], - [[119952, 119952], 'mapped', [111]], - [[119953, 119953], 'mapped', [112]], - [[119954, 119954], 'mapped', [113]], - [[119955, 119955], 'mapped', [114]], - [[119956, 119956], 'mapped', [115]], - [[119957, 119957], 'mapped', [116]], - [[119958, 119958], 'mapped', [117]], - [[119959, 119959], 'mapped', [118]], - [[119960, 119960], 'mapped', [119]], - [[119961, 119961], 'mapped', [120]], - [[119962, 119962], 'mapped', [121]], - [[119963, 119963], 'mapped', [122]], - [[119964, 119964], 'mapped', [97]], - [[119965, 119965], 'disallowed'], - [[119966, 119966], 'mapped', [99]], - [[119967, 119967], 'mapped', [100]], - [[119968, 119969], 'disallowed'], - [[119970, 119970], 'mapped', [103]], - [[119971, 119972], 'disallowed'], - [[119973, 119973], 'mapped', [106]], - [[119974, 119974], 'mapped', [107]], - [[119975, 119976], 'disallowed'], - [[119977, 119977], 'mapped', [110]], - [[119978, 119978], 'mapped', [111]], - [[119979, 119979], 'mapped', [112]], - [[119980, 119980], 'mapped', [113]], - [[119981, 119981], 'disallowed'], - [[119982, 119982], 'mapped', [115]], - [[119983, 119983], 'mapped', [116]], - [[119984, 119984], 'mapped', [117]], - [[119985, 119985], 'mapped', [118]], - [[119986, 119986], 'mapped', [119]], - [[119987, 119987], 'mapped', [120]], - [[119988, 119988], 'mapped', [121]], - [[119989, 119989], 'mapped', [122]], - [[119990, 119990], 'mapped', [97]], - [[119991, 119991], 'mapped', [98]], - [[119992, 119992], 'mapped', [99]], - [[119993, 119993], 'mapped', [100]], - [[119994, 119994], 'disallowed'], - [[119995, 119995], 'mapped', [102]], - [[119996, 119996], 'disallowed'], - [[119997, 119997], 'mapped', [104]], - [[119998, 119998], 'mapped', [105]], - [[119999, 119999], 'mapped', [106]], - [[12e4, 12e4], 'mapped', [107]], - [[120001, 120001], 'mapped', [108]], - [[120002, 120002], 'mapped', [109]], - [[120003, 120003], 'mapped', [110]], - [[120004, 120004], 'disallowed'], - [[120005, 120005], 'mapped', [112]], - [[120006, 120006], 'mapped', [113]], - [[120007, 120007], 'mapped', [114]], - [[120008, 120008], 'mapped', [115]], - [[120009, 120009], 'mapped', [116]], - [[120010, 120010], 'mapped', [117]], - [[120011, 120011], 'mapped', [118]], - [[120012, 120012], 'mapped', [119]], - [[120013, 120013], 'mapped', [120]], - [[120014, 120014], 'mapped', [121]], - [[120015, 120015], 'mapped', [122]], - [[120016, 120016], 'mapped', [97]], - [[120017, 120017], 'mapped', [98]], - [[120018, 120018], 'mapped', [99]], - [[120019, 120019], 'mapped', [100]], - [[120020, 120020], 'mapped', [101]], - [[120021, 120021], 'mapped', [102]], - [[120022, 120022], 'mapped', [103]], - [[120023, 120023], 'mapped', [104]], - [[120024, 120024], 'mapped', [105]], - [[120025, 120025], 'mapped', [106]], - [[120026, 120026], 'mapped', [107]], - [[120027, 120027], 'mapped', [108]], - [[120028, 120028], 'mapped', [109]], - [[120029, 120029], 'mapped', [110]], - [[120030, 120030], 'mapped', [111]], - [[120031, 120031], 'mapped', [112]], - [[120032, 120032], 'mapped', [113]], - [[120033, 120033], 'mapped', [114]], - [[120034, 120034], 'mapped', [115]], - [[120035, 120035], 'mapped', [116]], - [[120036, 120036], 'mapped', [117]], - [[120037, 120037], 'mapped', [118]], - [[120038, 120038], 'mapped', [119]], - [[120039, 120039], 'mapped', [120]], - [[120040, 120040], 'mapped', [121]], - [[120041, 120041], 'mapped', [122]], - [[120042, 120042], 'mapped', [97]], - [[120043, 120043], 'mapped', [98]], - [[120044, 120044], 'mapped', [99]], - [[120045, 120045], 'mapped', [100]], - [[120046, 120046], 'mapped', [101]], - [[120047, 120047], 'mapped', [102]], - [[120048, 120048], 'mapped', [103]], - [[120049, 120049], 'mapped', [104]], - [[120050, 120050], 'mapped', [105]], - [[120051, 120051], 'mapped', [106]], - [[120052, 120052], 'mapped', [107]], - [[120053, 120053], 'mapped', [108]], - [[120054, 120054], 'mapped', [109]], - [[120055, 120055], 'mapped', [110]], - [[120056, 120056], 'mapped', [111]], - [[120057, 120057], 'mapped', [112]], - [[120058, 120058], 'mapped', [113]], - [[120059, 120059], 'mapped', [114]], - [[120060, 120060], 'mapped', [115]], - [[120061, 120061], 'mapped', [116]], - [[120062, 120062], 'mapped', [117]], - [[120063, 120063], 'mapped', [118]], - [[120064, 120064], 'mapped', [119]], - [[120065, 120065], 'mapped', [120]], - [[120066, 120066], 'mapped', [121]], - [[120067, 120067], 'mapped', [122]], - [[120068, 120068], 'mapped', [97]], - [[120069, 120069], 'mapped', [98]], - [[120070, 120070], 'disallowed'], - [[120071, 120071], 'mapped', [100]], - [[120072, 120072], 'mapped', [101]], - [[120073, 120073], 'mapped', [102]], - [[120074, 120074], 'mapped', [103]], - [[120075, 120076], 'disallowed'], - [[120077, 120077], 'mapped', [106]], - [[120078, 120078], 'mapped', [107]], - [[120079, 120079], 'mapped', [108]], - [[120080, 120080], 'mapped', [109]], - [[120081, 120081], 'mapped', [110]], - [[120082, 120082], 'mapped', [111]], - [[120083, 120083], 'mapped', [112]], - [[120084, 120084], 'mapped', [113]], - [[120085, 120085], 'disallowed'], - [[120086, 120086], 'mapped', [115]], - [[120087, 120087], 'mapped', [116]], - [[120088, 120088], 'mapped', [117]], - [[120089, 120089], 'mapped', [118]], - [[120090, 120090], 'mapped', [119]], - [[120091, 120091], 'mapped', [120]], - [[120092, 120092], 'mapped', [121]], - [[120093, 120093], 'disallowed'], - [[120094, 120094], 'mapped', [97]], - [[120095, 120095], 'mapped', [98]], - [[120096, 120096], 'mapped', [99]], - [[120097, 120097], 'mapped', [100]], - [[120098, 120098], 'mapped', [101]], - [[120099, 120099], 'mapped', [102]], - [[120100, 120100], 'mapped', [103]], - [[120101, 120101], 'mapped', [104]], - [[120102, 120102], 'mapped', [105]], - [[120103, 120103], 'mapped', [106]], - [[120104, 120104], 'mapped', [107]], - [[120105, 120105], 'mapped', [108]], - [[120106, 120106], 'mapped', [109]], - [[120107, 120107], 'mapped', [110]], - [[120108, 120108], 'mapped', [111]], - [[120109, 120109], 'mapped', [112]], - [[120110, 120110], 'mapped', [113]], - [[120111, 120111], 'mapped', [114]], - [[120112, 120112], 'mapped', [115]], - [[120113, 120113], 'mapped', [116]], - [[120114, 120114], 'mapped', [117]], - [[120115, 120115], 'mapped', [118]], - [[120116, 120116], 'mapped', [119]], - [[120117, 120117], 'mapped', [120]], - [[120118, 120118], 'mapped', [121]], - [[120119, 120119], 'mapped', [122]], - [[120120, 120120], 'mapped', [97]], - [[120121, 120121], 'mapped', [98]], - [[120122, 120122], 'disallowed'], - [[120123, 120123], 'mapped', [100]], - [[120124, 120124], 'mapped', [101]], - [[120125, 120125], 'mapped', [102]], - [[120126, 120126], 'mapped', [103]], - [[120127, 120127], 'disallowed'], - [[120128, 120128], 'mapped', [105]], - [[120129, 120129], 'mapped', [106]], - [[120130, 120130], 'mapped', [107]], - [[120131, 120131], 'mapped', [108]], - [[120132, 120132], 'mapped', [109]], - [[120133, 120133], 'disallowed'], - [[120134, 120134], 'mapped', [111]], - [[120135, 120137], 'disallowed'], - [[120138, 120138], 'mapped', [115]], - [[120139, 120139], 'mapped', [116]], - [[120140, 120140], 'mapped', [117]], - [[120141, 120141], 'mapped', [118]], - [[120142, 120142], 'mapped', [119]], - [[120143, 120143], 'mapped', [120]], - [[120144, 120144], 'mapped', [121]], - [[120145, 120145], 'disallowed'], - [[120146, 120146], 'mapped', [97]], - [[120147, 120147], 'mapped', [98]], - [[120148, 120148], 'mapped', [99]], - [[120149, 120149], 'mapped', [100]], - [[120150, 120150], 'mapped', [101]], - [[120151, 120151], 'mapped', [102]], - [[120152, 120152], 'mapped', [103]], - [[120153, 120153], 'mapped', [104]], - [[120154, 120154], 'mapped', [105]], - [[120155, 120155], 'mapped', [106]], - [[120156, 120156], 'mapped', [107]], - [[120157, 120157], 'mapped', [108]], - [[120158, 120158], 'mapped', [109]], - [[120159, 120159], 'mapped', [110]], - [[120160, 120160], 'mapped', [111]], - [[120161, 120161], 'mapped', [112]], - [[120162, 120162], 'mapped', [113]], - [[120163, 120163], 'mapped', [114]], - [[120164, 120164], 'mapped', [115]], - [[120165, 120165], 'mapped', [116]], - [[120166, 120166], 'mapped', [117]], - [[120167, 120167], 'mapped', [118]], - [[120168, 120168], 'mapped', [119]], - [[120169, 120169], 'mapped', [120]], - [[120170, 120170], 'mapped', [121]], - [[120171, 120171], 'mapped', [122]], - [[120172, 120172], 'mapped', [97]], - [[120173, 120173], 'mapped', [98]], - [[120174, 120174], 'mapped', [99]], - [[120175, 120175], 'mapped', [100]], - [[120176, 120176], 'mapped', [101]], - [[120177, 120177], 'mapped', [102]], - [[120178, 120178], 'mapped', [103]], - [[120179, 120179], 'mapped', [104]], - [[120180, 120180], 'mapped', [105]], - [[120181, 120181], 'mapped', [106]], - [[120182, 120182], 'mapped', [107]], - [[120183, 120183], 'mapped', [108]], - [[120184, 120184], 'mapped', [109]], - [[120185, 120185], 'mapped', [110]], - [[120186, 120186], 'mapped', [111]], - [[120187, 120187], 'mapped', [112]], - [[120188, 120188], 'mapped', [113]], - [[120189, 120189], 'mapped', [114]], - [[120190, 120190], 'mapped', [115]], - [[120191, 120191], 'mapped', [116]], - [[120192, 120192], 'mapped', [117]], - [[120193, 120193], 'mapped', [118]], - [[120194, 120194], 'mapped', [119]], - [[120195, 120195], 'mapped', [120]], - [[120196, 120196], 'mapped', [121]], - [[120197, 120197], 'mapped', [122]], - [[120198, 120198], 'mapped', [97]], - [[120199, 120199], 'mapped', [98]], - [[120200, 120200], 'mapped', [99]], - [[120201, 120201], 'mapped', [100]], - [[120202, 120202], 'mapped', [101]], - [[120203, 120203], 'mapped', [102]], - [[120204, 120204], 'mapped', [103]], - [[120205, 120205], 'mapped', [104]], - [[120206, 120206], 'mapped', [105]], - [[120207, 120207], 'mapped', [106]], - [[120208, 120208], 'mapped', [107]], - [[120209, 120209], 'mapped', [108]], - [[120210, 120210], 'mapped', [109]], - [[120211, 120211], 'mapped', [110]], - [[120212, 120212], 'mapped', [111]], - [[120213, 120213], 'mapped', [112]], - [[120214, 120214], 'mapped', [113]], - [[120215, 120215], 'mapped', [114]], - [[120216, 120216], 'mapped', [115]], - [[120217, 120217], 'mapped', [116]], - [[120218, 120218], 'mapped', [117]], - [[120219, 120219], 'mapped', [118]], - [[120220, 120220], 'mapped', [119]], - [[120221, 120221], 'mapped', [120]], - [[120222, 120222], 'mapped', [121]], - [[120223, 120223], 'mapped', [122]], - [[120224, 120224], 'mapped', [97]], - [[120225, 120225], 'mapped', [98]], - [[120226, 120226], 'mapped', [99]], - [[120227, 120227], 'mapped', [100]], - [[120228, 120228], 'mapped', [101]], - [[120229, 120229], 'mapped', [102]], - [[120230, 120230], 'mapped', [103]], - [[120231, 120231], 'mapped', [104]], - [[120232, 120232], 'mapped', [105]], - [[120233, 120233], 'mapped', [106]], - [[120234, 120234], 'mapped', [107]], - [[120235, 120235], 'mapped', [108]], - [[120236, 120236], 'mapped', [109]], - [[120237, 120237], 'mapped', [110]], - [[120238, 120238], 'mapped', [111]], - [[120239, 120239], 'mapped', [112]], - [[120240, 120240], 'mapped', [113]], - [[120241, 120241], 'mapped', [114]], - [[120242, 120242], 'mapped', [115]], - [[120243, 120243], 'mapped', [116]], - [[120244, 120244], 'mapped', [117]], - [[120245, 120245], 'mapped', [118]], - [[120246, 120246], 'mapped', [119]], - [[120247, 120247], 'mapped', [120]], - [[120248, 120248], 'mapped', [121]], - [[120249, 120249], 'mapped', [122]], - [[120250, 120250], 'mapped', [97]], - [[120251, 120251], 'mapped', [98]], - [[120252, 120252], 'mapped', [99]], - [[120253, 120253], 'mapped', [100]], - [[120254, 120254], 'mapped', [101]], - [[120255, 120255], 'mapped', [102]], - [[120256, 120256], 'mapped', [103]], - [[120257, 120257], 'mapped', [104]], - [[120258, 120258], 'mapped', [105]], - [[120259, 120259], 'mapped', [106]], - [[120260, 120260], 'mapped', [107]], - [[120261, 120261], 'mapped', [108]], - [[120262, 120262], 'mapped', [109]], - [[120263, 120263], 'mapped', [110]], - [[120264, 120264], 'mapped', [111]], - [[120265, 120265], 'mapped', [112]], - [[120266, 120266], 'mapped', [113]], - [[120267, 120267], 'mapped', [114]], - [[120268, 120268], 'mapped', [115]], - [[120269, 120269], 'mapped', [116]], - [[120270, 120270], 'mapped', [117]], - [[120271, 120271], 'mapped', [118]], - [[120272, 120272], 'mapped', [119]], - [[120273, 120273], 'mapped', [120]], - [[120274, 120274], 'mapped', [121]], - [[120275, 120275], 'mapped', [122]], - [[120276, 120276], 'mapped', [97]], - [[120277, 120277], 'mapped', [98]], - [[120278, 120278], 'mapped', [99]], - [[120279, 120279], 'mapped', [100]], - [[120280, 120280], 'mapped', [101]], - [[120281, 120281], 'mapped', [102]], - [[120282, 120282], 'mapped', [103]], - [[120283, 120283], 'mapped', [104]], - [[120284, 120284], 'mapped', [105]], - [[120285, 120285], 'mapped', [106]], - [[120286, 120286], 'mapped', [107]], - [[120287, 120287], 'mapped', [108]], - [[120288, 120288], 'mapped', [109]], - [[120289, 120289], 'mapped', [110]], - [[120290, 120290], 'mapped', [111]], - [[120291, 120291], 'mapped', [112]], - [[120292, 120292], 'mapped', [113]], - [[120293, 120293], 'mapped', [114]], - [[120294, 120294], 'mapped', [115]], - [[120295, 120295], 'mapped', [116]], - [[120296, 120296], 'mapped', [117]], - [[120297, 120297], 'mapped', [118]], - [[120298, 120298], 'mapped', [119]], - [[120299, 120299], 'mapped', [120]], - [[120300, 120300], 'mapped', [121]], - [[120301, 120301], 'mapped', [122]], - [[120302, 120302], 'mapped', [97]], - [[120303, 120303], 'mapped', [98]], - [[120304, 120304], 'mapped', [99]], - [[120305, 120305], 'mapped', [100]], - [[120306, 120306], 'mapped', [101]], - [[120307, 120307], 'mapped', [102]], - [[120308, 120308], 'mapped', [103]], - [[120309, 120309], 'mapped', [104]], - [[120310, 120310], 'mapped', [105]], - [[120311, 120311], 'mapped', [106]], - [[120312, 120312], 'mapped', [107]], - [[120313, 120313], 'mapped', [108]], - [[120314, 120314], 'mapped', [109]], - [[120315, 120315], 'mapped', [110]], - [[120316, 120316], 'mapped', [111]], - [[120317, 120317], 'mapped', [112]], - [[120318, 120318], 'mapped', [113]], - [[120319, 120319], 'mapped', [114]], - [[120320, 120320], 'mapped', [115]], - [[120321, 120321], 'mapped', [116]], - [[120322, 120322], 'mapped', [117]], - [[120323, 120323], 'mapped', [118]], - [[120324, 120324], 'mapped', [119]], - [[120325, 120325], 'mapped', [120]], - [[120326, 120326], 'mapped', [121]], - [[120327, 120327], 'mapped', [122]], - [[120328, 120328], 'mapped', [97]], - [[120329, 120329], 'mapped', [98]], - [[120330, 120330], 'mapped', [99]], - [[120331, 120331], 'mapped', [100]], - [[120332, 120332], 'mapped', [101]], - [[120333, 120333], 'mapped', [102]], - [[120334, 120334], 'mapped', [103]], - [[120335, 120335], 'mapped', [104]], - [[120336, 120336], 'mapped', [105]], - [[120337, 120337], 'mapped', [106]], - [[120338, 120338], 'mapped', [107]], - [[120339, 120339], 'mapped', [108]], - [[120340, 120340], 'mapped', [109]], - [[120341, 120341], 'mapped', [110]], - [[120342, 120342], 'mapped', [111]], - [[120343, 120343], 'mapped', [112]], - [[120344, 120344], 'mapped', [113]], - [[120345, 120345], 'mapped', [114]], - [[120346, 120346], 'mapped', [115]], - [[120347, 120347], 'mapped', [116]], - [[120348, 120348], 'mapped', [117]], - [[120349, 120349], 'mapped', [118]], - [[120350, 120350], 'mapped', [119]], - [[120351, 120351], 'mapped', [120]], - [[120352, 120352], 'mapped', [121]], - [[120353, 120353], 'mapped', [122]], - [[120354, 120354], 'mapped', [97]], - [[120355, 120355], 'mapped', [98]], - [[120356, 120356], 'mapped', [99]], - [[120357, 120357], 'mapped', [100]], - [[120358, 120358], 'mapped', [101]], - [[120359, 120359], 'mapped', [102]], - [[120360, 120360], 'mapped', [103]], - [[120361, 120361], 'mapped', [104]], - [[120362, 120362], 'mapped', [105]], - [[120363, 120363], 'mapped', [106]], - [[120364, 120364], 'mapped', [107]], - [[120365, 120365], 'mapped', [108]], - [[120366, 120366], 'mapped', [109]], - [[120367, 120367], 'mapped', [110]], - [[120368, 120368], 'mapped', [111]], - [[120369, 120369], 'mapped', [112]], - [[120370, 120370], 'mapped', [113]], - [[120371, 120371], 'mapped', [114]], - [[120372, 120372], 'mapped', [115]], - [[120373, 120373], 'mapped', [116]], - [[120374, 120374], 'mapped', [117]], - [[120375, 120375], 'mapped', [118]], - [[120376, 120376], 'mapped', [119]], - [[120377, 120377], 'mapped', [120]], - [[120378, 120378], 'mapped', [121]], - [[120379, 120379], 'mapped', [122]], - [[120380, 120380], 'mapped', [97]], - [[120381, 120381], 'mapped', [98]], - [[120382, 120382], 'mapped', [99]], - [[120383, 120383], 'mapped', [100]], - [[120384, 120384], 'mapped', [101]], - [[120385, 120385], 'mapped', [102]], - [[120386, 120386], 'mapped', [103]], - [[120387, 120387], 'mapped', [104]], - [[120388, 120388], 'mapped', [105]], - [[120389, 120389], 'mapped', [106]], - [[120390, 120390], 'mapped', [107]], - [[120391, 120391], 'mapped', [108]], - [[120392, 120392], 'mapped', [109]], - [[120393, 120393], 'mapped', [110]], - [[120394, 120394], 'mapped', [111]], - [[120395, 120395], 'mapped', [112]], - [[120396, 120396], 'mapped', [113]], - [[120397, 120397], 'mapped', [114]], - [[120398, 120398], 'mapped', [115]], - [[120399, 120399], 'mapped', [116]], - [[120400, 120400], 'mapped', [117]], - [[120401, 120401], 'mapped', [118]], - [[120402, 120402], 'mapped', [119]], - [[120403, 120403], 'mapped', [120]], - [[120404, 120404], 'mapped', [121]], - [[120405, 120405], 'mapped', [122]], - [[120406, 120406], 'mapped', [97]], - [[120407, 120407], 'mapped', [98]], - [[120408, 120408], 'mapped', [99]], - [[120409, 120409], 'mapped', [100]], - [[120410, 120410], 'mapped', [101]], - [[120411, 120411], 'mapped', [102]], - [[120412, 120412], 'mapped', [103]], - [[120413, 120413], 'mapped', [104]], - [[120414, 120414], 'mapped', [105]], - [[120415, 120415], 'mapped', [106]], - [[120416, 120416], 'mapped', [107]], - [[120417, 120417], 'mapped', [108]], - [[120418, 120418], 'mapped', [109]], - [[120419, 120419], 'mapped', [110]], - [[120420, 120420], 'mapped', [111]], - [[120421, 120421], 'mapped', [112]], - [[120422, 120422], 'mapped', [113]], - [[120423, 120423], 'mapped', [114]], - [[120424, 120424], 'mapped', [115]], - [[120425, 120425], 'mapped', [116]], - [[120426, 120426], 'mapped', [117]], - [[120427, 120427], 'mapped', [118]], - [[120428, 120428], 'mapped', [119]], - [[120429, 120429], 'mapped', [120]], - [[120430, 120430], 'mapped', [121]], - [[120431, 120431], 'mapped', [122]], - [[120432, 120432], 'mapped', [97]], - [[120433, 120433], 'mapped', [98]], - [[120434, 120434], 'mapped', [99]], - [[120435, 120435], 'mapped', [100]], - [[120436, 120436], 'mapped', [101]], - [[120437, 120437], 'mapped', [102]], - [[120438, 120438], 'mapped', [103]], - [[120439, 120439], 'mapped', [104]], - [[120440, 120440], 'mapped', [105]], - [[120441, 120441], 'mapped', [106]], - [[120442, 120442], 'mapped', [107]], - [[120443, 120443], 'mapped', [108]], - [[120444, 120444], 'mapped', [109]], - [[120445, 120445], 'mapped', [110]], - [[120446, 120446], 'mapped', [111]], - [[120447, 120447], 'mapped', [112]], - [[120448, 120448], 'mapped', [113]], - [[120449, 120449], 'mapped', [114]], - [[120450, 120450], 'mapped', [115]], - [[120451, 120451], 'mapped', [116]], - [[120452, 120452], 'mapped', [117]], - [[120453, 120453], 'mapped', [118]], - [[120454, 120454], 'mapped', [119]], - [[120455, 120455], 'mapped', [120]], - [[120456, 120456], 'mapped', [121]], - [[120457, 120457], 'mapped', [122]], - [[120458, 120458], 'mapped', [97]], - [[120459, 120459], 'mapped', [98]], - [[120460, 120460], 'mapped', [99]], - [[120461, 120461], 'mapped', [100]], - [[120462, 120462], 'mapped', [101]], - [[120463, 120463], 'mapped', [102]], - [[120464, 120464], 'mapped', [103]], - [[120465, 120465], 'mapped', [104]], - [[120466, 120466], 'mapped', [105]], - [[120467, 120467], 'mapped', [106]], - [[120468, 120468], 'mapped', [107]], - [[120469, 120469], 'mapped', [108]], - [[120470, 120470], 'mapped', [109]], - [[120471, 120471], 'mapped', [110]], - [[120472, 120472], 'mapped', [111]], - [[120473, 120473], 'mapped', [112]], - [[120474, 120474], 'mapped', [113]], - [[120475, 120475], 'mapped', [114]], - [[120476, 120476], 'mapped', [115]], - [[120477, 120477], 'mapped', [116]], - [[120478, 120478], 'mapped', [117]], - [[120479, 120479], 'mapped', [118]], - [[120480, 120480], 'mapped', [119]], - [[120481, 120481], 'mapped', [120]], - [[120482, 120482], 'mapped', [121]], - [[120483, 120483], 'mapped', [122]], - [[120484, 120484], 'mapped', [305]], - [[120485, 120485], 'mapped', [567]], - [[120486, 120487], 'disallowed'], - [[120488, 120488], 'mapped', [945]], - [[120489, 120489], 'mapped', [946]], - [[120490, 120490], 'mapped', [947]], - [[120491, 120491], 'mapped', [948]], - [[120492, 120492], 'mapped', [949]], - [[120493, 120493], 'mapped', [950]], - [[120494, 120494], 'mapped', [951]], - [[120495, 120495], 'mapped', [952]], - [[120496, 120496], 'mapped', [953]], - [[120497, 120497], 'mapped', [954]], - [[120498, 120498], 'mapped', [955]], - [[120499, 120499], 'mapped', [956]], - [[120500, 120500], 'mapped', [957]], - [[120501, 120501], 'mapped', [958]], - [[120502, 120502], 'mapped', [959]], - [[120503, 120503], 'mapped', [960]], - [[120504, 120504], 'mapped', [961]], - [[120505, 120505], 'mapped', [952]], - [[120506, 120506], 'mapped', [963]], - [[120507, 120507], 'mapped', [964]], - [[120508, 120508], 'mapped', [965]], - [[120509, 120509], 'mapped', [966]], - [[120510, 120510], 'mapped', [967]], - [[120511, 120511], 'mapped', [968]], - [[120512, 120512], 'mapped', [969]], - [[120513, 120513], 'mapped', [8711]], - [[120514, 120514], 'mapped', [945]], - [[120515, 120515], 'mapped', [946]], - [[120516, 120516], 'mapped', [947]], - [[120517, 120517], 'mapped', [948]], - [[120518, 120518], 'mapped', [949]], - [[120519, 120519], 'mapped', [950]], - [[120520, 120520], 'mapped', [951]], - [[120521, 120521], 'mapped', [952]], - [[120522, 120522], 'mapped', [953]], - [[120523, 120523], 'mapped', [954]], - [[120524, 120524], 'mapped', [955]], - [[120525, 120525], 'mapped', [956]], - [[120526, 120526], 'mapped', [957]], - [[120527, 120527], 'mapped', [958]], - [[120528, 120528], 'mapped', [959]], - [[120529, 120529], 'mapped', [960]], - [[120530, 120530], 'mapped', [961]], - [[120531, 120532], 'mapped', [963]], - [[120533, 120533], 'mapped', [964]], - [[120534, 120534], 'mapped', [965]], - [[120535, 120535], 'mapped', [966]], - [[120536, 120536], 'mapped', [967]], - [[120537, 120537], 'mapped', [968]], - [[120538, 120538], 'mapped', [969]], - [[120539, 120539], 'mapped', [8706]], - [[120540, 120540], 'mapped', [949]], - [[120541, 120541], 'mapped', [952]], - [[120542, 120542], 'mapped', [954]], - [[120543, 120543], 'mapped', [966]], - [[120544, 120544], 'mapped', [961]], - [[120545, 120545], 'mapped', [960]], - [[120546, 120546], 'mapped', [945]], - [[120547, 120547], 'mapped', [946]], - [[120548, 120548], 'mapped', [947]], - [[120549, 120549], 'mapped', [948]], - [[120550, 120550], 'mapped', [949]], - [[120551, 120551], 'mapped', [950]], - [[120552, 120552], 'mapped', [951]], - [[120553, 120553], 'mapped', [952]], - [[120554, 120554], 'mapped', [953]], - [[120555, 120555], 'mapped', [954]], - [[120556, 120556], 'mapped', [955]], - [[120557, 120557], 'mapped', [956]], - [[120558, 120558], 'mapped', [957]], - [[120559, 120559], 'mapped', [958]], - [[120560, 120560], 'mapped', [959]], - [[120561, 120561], 'mapped', [960]], - [[120562, 120562], 'mapped', [961]], - [[120563, 120563], 'mapped', [952]], - [[120564, 120564], 'mapped', [963]], - [[120565, 120565], 'mapped', [964]], - [[120566, 120566], 'mapped', [965]], - [[120567, 120567], 'mapped', [966]], - [[120568, 120568], 'mapped', [967]], - [[120569, 120569], 'mapped', [968]], - [[120570, 120570], 'mapped', [969]], - [[120571, 120571], 'mapped', [8711]], - [[120572, 120572], 'mapped', [945]], - [[120573, 120573], 'mapped', [946]], - [[120574, 120574], 'mapped', [947]], - [[120575, 120575], 'mapped', [948]], - [[120576, 120576], 'mapped', [949]], - [[120577, 120577], 'mapped', [950]], - [[120578, 120578], 'mapped', [951]], - [[120579, 120579], 'mapped', [952]], - [[120580, 120580], 'mapped', [953]], - [[120581, 120581], 'mapped', [954]], - [[120582, 120582], 'mapped', [955]], - [[120583, 120583], 'mapped', [956]], - [[120584, 120584], 'mapped', [957]], - [[120585, 120585], 'mapped', [958]], - [[120586, 120586], 'mapped', [959]], - [[120587, 120587], 'mapped', [960]], - [[120588, 120588], 'mapped', [961]], - [[120589, 120590], 'mapped', [963]], - [[120591, 120591], 'mapped', [964]], - [[120592, 120592], 'mapped', [965]], - [[120593, 120593], 'mapped', [966]], - [[120594, 120594], 'mapped', [967]], - [[120595, 120595], 'mapped', [968]], - [[120596, 120596], 'mapped', [969]], - [[120597, 120597], 'mapped', [8706]], - [[120598, 120598], 'mapped', [949]], - [[120599, 120599], 'mapped', [952]], - [[120600, 120600], 'mapped', [954]], - [[120601, 120601], 'mapped', [966]], - [[120602, 120602], 'mapped', [961]], - [[120603, 120603], 'mapped', [960]], - [[120604, 120604], 'mapped', [945]], - [[120605, 120605], 'mapped', [946]], - [[120606, 120606], 'mapped', [947]], - [[120607, 120607], 'mapped', [948]], - [[120608, 120608], 'mapped', [949]], - [[120609, 120609], 'mapped', [950]], - [[120610, 120610], 'mapped', [951]], - [[120611, 120611], 'mapped', [952]], - [[120612, 120612], 'mapped', [953]], - [[120613, 120613], 'mapped', [954]], - [[120614, 120614], 'mapped', [955]], - [[120615, 120615], 'mapped', [956]], - [[120616, 120616], 'mapped', [957]], - [[120617, 120617], 'mapped', [958]], - [[120618, 120618], 'mapped', [959]], - [[120619, 120619], 'mapped', [960]], - [[120620, 120620], 'mapped', [961]], - [[120621, 120621], 'mapped', [952]], - [[120622, 120622], 'mapped', [963]], - [[120623, 120623], 'mapped', [964]], - [[120624, 120624], 'mapped', [965]], - [[120625, 120625], 'mapped', [966]], - [[120626, 120626], 'mapped', [967]], - [[120627, 120627], 'mapped', [968]], - [[120628, 120628], 'mapped', [969]], - [[120629, 120629], 'mapped', [8711]], - [[120630, 120630], 'mapped', [945]], - [[120631, 120631], 'mapped', [946]], - [[120632, 120632], 'mapped', [947]], - [[120633, 120633], 'mapped', [948]], - [[120634, 120634], 'mapped', [949]], - [[120635, 120635], 'mapped', [950]], - [[120636, 120636], 'mapped', [951]], - [[120637, 120637], 'mapped', [952]], - [[120638, 120638], 'mapped', [953]], - [[120639, 120639], 'mapped', [954]], - [[120640, 120640], 'mapped', [955]], - [[120641, 120641], 'mapped', [956]], - [[120642, 120642], 'mapped', [957]], - [[120643, 120643], 'mapped', [958]], - [[120644, 120644], 'mapped', [959]], - [[120645, 120645], 'mapped', [960]], - [[120646, 120646], 'mapped', [961]], - [[120647, 120648], 'mapped', [963]], - [[120649, 120649], 'mapped', [964]], - [[120650, 120650], 'mapped', [965]], - [[120651, 120651], 'mapped', [966]], - [[120652, 120652], 'mapped', [967]], - [[120653, 120653], 'mapped', [968]], - [[120654, 120654], 'mapped', [969]], - [[120655, 120655], 'mapped', [8706]], - [[120656, 120656], 'mapped', [949]], - [[120657, 120657], 'mapped', [952]], - [[120658, 120658], 'mapped', [954]], - [[120659, 120659], 'mapped', [966]], - [[120660, 120660], 'mapped', [961]], - [[120661, 120661], 'mapped', [960]], - [[120662, 120662], 'mapped', [945]], - [[120663, 120663], 'mapped', [946]], - [[120664, 120664], 'mapped', [947]], - [[120665, 120665], 'mapped', [948]], - [[120666, 120666], 'mapped', [949]], - [[120667, 120667], 'mapped', [950]], - [[120668, 120668], 'mapped', [951]], - [[120669, 120669], 'mapped', [952]], - [[120670, 120670], 'mapped', [953]], - [[120671, 120671], 'mapped', [954]], - [[120672, 120672], 'mapped', [955]], - [[120673, 120673], 'mapped', [956]], - [[120674, 120674], 'mapped', [957]], - [[120675, 120675], 'mapped', [958]], - [[120676, 120676], 'mapped', [959]], - [[120677, 120677], 'mapped', [960]], - [[120678, 120678], 'mapped', [961]], - [[120679, 120679], 'mapped', [952]], - [[120680, 120680], 'mapped', [963]], - [[120681, 120681], 'mapped', [964]], - [[120682, 120682], 'mapped', [965]], - [[120683, 120683], 'mapped', [966]], - [[120684, 120684], 'mapped', [967]], - [[120685, 120685], 'mapped', [968]], - [[120686, 120686], 'mapped', [969]], - [[120687, 120687], 'mapped', [8711]], - [[120688, 120688], 'mapped', [945]], - [[120689, 120689], 'mapped', [946]], - [[120690, 120690], 'mapped', [947]], - [[120691, 120691], 'mapped', [948]], - [[120692, 120692], 'mapped', [949]], - [[120693, 120693], 'mapped', [950]], - [[120694, 120694], 'mapped', [951]], - [[120695, 120695], 'mapped', [952]], - [[120696, 120696], 'mapped', [953]], - [[120697, 120697], 'mapped', [954]], - [[120698, 120698], 'mapped', [955]], - [[120699, 120699], 'mapped', [956]], - [[120700, 120700], 'mapped', [957]], - [[120701, 120701], 'mapped', [958]], - [[120702, 120702], 'mapped', [959]], - [[120703, 120703], 'mapped', [960]], - [[120704, 120704], 'mapped', [961]], - [[120705, 120706], 'mapped', [963]], - [[120707, 120707], 'mapped', [964]], - [[120708, 120708], 'mapped', [965]], - [[120709, 120709], 'mapped', [966]], - [[120710, 120710], 'mapped', [967]], - [[120711, 120711], 'mapped', [968]], - [[120712, 120712], 'mapped', [969]], - [[120713, 120713], 'mapped', [8706]], - [[120714, 120714], 'mapped', [949]], - [[120715, 120715], 'mapped', [952]], - [[120716, 120716], 'mapped', [954]], - [[120717, 120717], 'mapped', [966]], - [[120718, 120718], 'mapped', [961]], - [[120719, 120719], 'mapped', [960]], - [[120720, 120720], 'mapped', [945]], - [[120721, 120721], 'mapped', [946]], - [[120722, 120722], 'mapped', [947]], - [[120723, 120723], 'mapped', [948]], - [[120724, 120724], 'mapped', [949]], - [[120725, 120725], 'mapped', [950]], - [[120726, 120726], 'mapped', [951]], - [[120727, 120727], 'mapped', [952]], - [[120728, 120728], 'mapped', [953]], - [[120729, 120729], 'mapped', [954]], - [[120730, 120730], 'mapped', [955]], - [[120731, 120731], 'mapped', [956]], - [[120732, 120732], 'mapped', [957]], - [[120733, 120733], 'mapped', [958]], - [[120734, 120734], 'mapped', [959]], - [[120735, 120735], 'mapped', [960]], - [[120736, 120736], 'mapped', [961]], - [[120737, 120737], 'mapped', [952]], - [[120738, 120738], 'mapped', [963]], - [[120739, 120739], 'mapped', [964]], - [[120740, 120740], 'mapped', [965]], - [[120741, 120741], 'mapped', [966]], - [[120742, 120742], 'mapped', [967]], - [[120743, 120743], 'mapped', [968]], - [[120744, 120744], 'mapped', [969]], - [[120745, 120745], 'mapped', [8711]], - [[120746, 120746], 'mapped', [945]], - [[120747, 120747], 'mapped', [946]], - [[120748, 120748], 'mapped', [947]], - [[120749, 120749], 'mapped', [948]], - [[120750, 120750], 'mapped', [949]], - [[120751, 120751], 'mapped', [950]], - [[120752, 120752], 'mapped', [951]], - [[120753, 120753], 'mapped', [952]], - [[120754, 120754], 'mapped', [953]], - [[120755, 120755], 'mapped', [954]], - [[120756, 120756], 'mapped', [955]], - [[120757, 120757], 'mapped', [956]], - [[120758, 120758], 'mapped', [957]], - [[120759, 120759], 'mapped', [958]], - [[120760, 120760], 'mapped', [959]], - [[120761, 120761], 'mapped', [960]], - [[120762, 120762], 'mapped', [961]], - [[120763, 120764], 'mapped', [963]], - [[120765, 120765], 'mapped', [964]], - [[120766, 120766], 'mapped', [965]], - [[120767, 120767], 'mapped', [966]], - [[120768, 120768], 'mapped', [967]], - [[120769, 120769], 'mapped', [968]], - [[120770, 120770], 'mapped', [969]], - [[120771, 120771], 'mapped', [8706]], - [[120772, 120772], 'mapped', [949]], - [[120773, 120773], 'mapped', [952]], - [[120774, 120774], 'mapped', [954]], - [[120775, 120775], 'mapped', [966]], - [[120776, 120776], 'mapped', [961]], - [[120777, 120777], 'mapped', [960]], - [[120778, 120779], 'mapped', [989]], - [[120780, 120781], 'disallowed'], - [[120782, 120782], 'mapped', [48]], - [[120783, 120783], 'mapped', [49]], - [[120784, 120784], 'mapped', [50]], - [[120785, 120785], 'mapped', [51]], - [[120786, 120786], 'mapped', [52]], - [[120787, 120787], 'mapped', [53]], - [[120788, 120788], 'mapped', [54]], - [[120789, 120789], 'mapped', [55]], - [[120790, 120790], 'mapped', [56]], - [[120791, 120791], 'mapped', [57]], - [[120792, 120792], 'mapped', [48]], - [[120793, 120793], 'mapped', [49]], - [[120794, 120794], 'mapped', [50]], - [[120795, 120795], 'mapped', [51]], - [[120796, 120796], 'mapped', [52]], - [[120797, 120797], 'mapped', [53]], - [[120798, 120798], 'mapped', [54]], - [[120799, 120799], 'mapped', [55]], - [[120800, 120800], 'mapped', [56]], - [[120801, 120801], 'mapped', [57]], - [[120802, 120802], 'mapped', [48]], - [[120803, 120803], 'mapped', [49]], - [[120804, 120804], 'mapped', [50]], - [[120805, 120805], 'mapped', [51]], - [[120806, 120806], 'mapped', [52]], - [[120807, 120807], 'mapped', [53]], - [[120808, 120808], 'mapped', [54]], - [[120809, 120809], 'mapped', [55]], - [[120810, 120810], 'mapped', [56]], - [[120811, 120811], 'mapped', [57]], - [[120812, 120812], 'mapped', [48]], - [[120813, 120813], 'mapped', [49]], - [[120814, 120814], 'mapped', [50]], - [[120815, 120815], 'mapped', [51]], - [[120816, 120816], 'mapped', [52]], - [[120817, 120817], 'mapped', [53]], - [[120818, 120818], 'mapped', [54]], - [[120819, 120819], 'mapped', [55]], - [[120820, 120820], 'mapped', [56]], - [[120821, 120821], 'mapped', [57]], - [[120822, 120822], 'mapped', [48]], - [[120823, 120823], 'mapped', [49]], - [[120824, 120824], 'mapped', [50]], - [[120825, 120825], 'mapped', [51]], - [[120826, 120826], 'mapped', [52]], - [[120827, 120827], 'mapped', [53]], - [[120828, 120828], 'mapped', [54]], - [[120829, 120829], 'mapped', [55]], - [[120830, 120830], 'mapped', [56]], - [[120831, 120831], 'mapped', [57]], - [[120832, 121343], 'valid', [], 'NV8'], - [[121344, 121398], 'valid'], - [[121399, 121402], 'valid', [], 'NV8'], - [[121403, 121452], 'valid'], - [[121453, 121460], 'valid', [], 'NV8'], - [[121461, 121461], 'valid'], - [[121462, 121475], 'valid', [], 'NV8'], - [[121476, 121476], 'valid'], - [[121477, 121483], 'valid', [], 'NV8'], - [[121484, 121498], 'disallowed'], - [[121499, 121503], 'valid'], - [[121504, 121504], 'disallowed'], - [[121505, 121519], 'valid'], - [[121520, 124927], 'disallowed'], - [[124928, 125124], 'valid'], - [[125125, 125126], 'disallowed'], - [[125127, 125135], 'valid', [], 'NV8'], - [[125136, 125142], 'valid'], - [[125143, 126463], 'disallowed'], - [[126464, 126464], 'mapped', [1575]], - [[126465, 126465], 'mapped', [1576]], - [[126466, 126466], 'mapped', [1580]], - [[126467, 126467], 'mapped', [1583]], - [[126468, 126468], 'disallowed'], - [[126469, 126469], 'mapped', [1608]], - [[126470, 126470], 'mapped', [1586]], - [[126471, 126471], 'mapped', [1581]], - [[126472, 126472], 'mapped', [1591]], - [[126473, 126473], 'mapped', [1610]], - [[126474, 126474], 'mapped', [1603]], - [[126475, 126475], 'mapped', [1604]], - [[126476, 126476], 'mapped', [1605]], - [[126477, 126477], 'mapped', [1606]], - [[126478, 126478], 'mapped', [1587]], - [[126479, 126479], 'mapped', [1593]], - [[126480, 126480], 'mapped', [1601]], - [[126481, 126481], 'mapped', [1589]], - [[126482, 126482], 'mapped', [1602]], - [[126483, 126483], 'mapped', [1585]], - [[126484, 126484], 'mapped', [1588]], - [[126485, 126485], 'mapped', [1578]], - [[126486, 126486], 'mapped', [1579]], - [[126487, 126487], 'mapped', [1582]], - [[126488, 126488], 'mapped', [1584]], - [[126489, 126489], 'mapped', [1590]], - [[126490, 126490], 'mapped', [1592]], - [[126491, 126491], 'mapped', [1594]], - [[126492, 126492], 'mapped', [1646]], - [[126493, 126493], 'mapped', [1722]], - [[126494, 126494], 'mapped', [1697]], - [[126495, 126495], 'mapped', [1647]], - [[126496, 126496], 'disallowed'], - [[126497, 126497], 'mapped', [1576]], - [[126498, 126498], 'mapped', [1580]], - [[126499, 126499], 'disallowed'], - [[126500, 126500], 'mapped', [1607]], - [[126501, 126502], 'disallowed'], - [[126503, 126503], 'mapped', [1581]], - [[126504, 126504], 'disallowed'], - [[126505, 126505], 'mapped', [1610]], - [[126506, 126506], 'mapped', [1603]], - [[126507, 126507], 'mapped', [1604]], - [[126508, 126508], 'mapped', [1605]], - [[126509, 126509], 'mapped', [1606]], - [[126510, 126510], 'mapped', [1587]], - [[126511, 126511], 'mapped', [1593]], - [[126512, 126512], 'mapped', [1601]], - [[126513, 126513], 'mapped', [1589]], - [[126514, 126514], 'mapped', [1602]], - [[126515, 126515], 'disallowed'], - [[126516, 126516], 'mapped', [1588]], - [[126517, 126517], 'mapped', [1578]], - [[126518, 126518], 'mapped', [1579]], - [[126519, 126519], 'mapped', [1582]], - [[126520, 126520], 'disallowed'], - [[126521, 126521], 'mapped', [1590]], - [[126522, 126522], 'disallowed'], - [[126523, 126523], 'mapped', [1594]], - [[126524, 126529], 'disallowed'], - [[126530, 126530], 'mapped', [1580]], - [[126531, 126534], 'disallowed'], - [[126535, 126535], 'mapped', [1581]], - [[126536, 126536], 'disallowed'], - [[126537, 126537], 'mapped', [1610]], - [[126538, 126538], 'disallowed'], - [[126539, 126539], 'mapped', [1604]], - [[126540, 126540], 'disallowed'], - [[126541, 126541], 'mapped', [1606]], - [[126542, 126542], 'mapped', [1587]], - [[126543, 126543], 'mapped', [1593]], - [[126544, 126544], 'disallowed'], - [[126545, 126545], 'mapped', [1589]], - [[126546, 126546], 'mapped', [1602]], - [[126547, 126547], 'disallowed'], - [[126548, 126548], 'mapped', [1588]], - [[126549, 126550], 'disallowed'], - [[126551, 126551], 'mapped', [1582]], - [[126552, 126552], 'disallowed'], - [[126553, 126553], 'mapped', [1590]], - [[126554, 126554], 'disallowed'], - [[126555, 126555], 'mapped', [1594]], - [[126556, 126556], 'disallowed'], - [[126557, 126557], 'mapped', [1722]], - [[126558, 126558], 'disallowed'], - [[126559, 126559], 'mapped', [1647]], - [[126560, 126560], 'disallowed'], - [[126561, 126561], 'mapped', [1576]], - [[126562, 126562], 'mapped', [1580]], - [[126563, 126563], 'disallowed'], - [[126564, 126564], 'mapped', [1607]], - [[126565, 126566], 'disallowed'], - [[126567, 126567], 'mapped', [1581]], - [[126568, 126568], 'mapped', [1591]], - [[126569, 126569], 'mapped', [1610]], - [[126570, 126570], 'mapped', [1603]], - [[126571, 126571], 'disallowed'], - [[126572, 126572], 'mapped', [1605]], - [[126573, 126573], 'mapped', [1606]], - [[126574, 126574], 'mapped', [1587]], - [[126575, 126575], 'mapped', [1593]], - [[126576, 126576], 'mapped', [1601]], - [[126577, 126577], 'mapped', [1589]], - [[126578, 126578], 'mapped', [1602]], - [[126579, 126579], 'disallowed'], - [[126580, 126580], 'mapped', [1588]], - [[126581, 126581], 'mapped', [1578]], - [[126582, 126582], 'mapped', [1579]], - [[126583, 126583], 'mapped', [1582]], - [[126584, 126584], 'disallowed'], - [[126585, 126585], 'mapped', [1590]], - [[126586, 126586], 'mapped', [1592]], - [[126587, 126587], 'mapped', [1594]], - [[126588, 126588], 'mapped', [1646]], - [[126589, 126589], 'disallowed'], - [[126590, 126590], 'mapped', [1697]], - [[126591, 126591], 'disallowed'], - [[126592, 126592], 'mapped', [1575]], - [[126593, 126593], 'mapped', [1576]], - [[126594, 126594], 'mapped', [1580]], - [[126595, 126595], 'mapped', [1583]], - [[126596, 126596], 'mapped', [1607]], - [[126597, 126597], 'mapped', [1608]], - [[126598, 126598], 'mapped', [1586]], - [[126599, 126599], 'mapped', [1581]], - [[126600, 126600], 'mapped', [1591]], - [[126601, 126601], 'mapped', [1610]], - [[126602, 126602], 'disallowed'], - [[126603, 126603], 'mapped', [1604]], - [[126604, 126604], 'mapped', [1605]], - [[126605, 126605], 'mapped', [1606]], - [[126606, 126606], 'mapped', [1587]], - [[126607, 126607], 'mapped', [1593]], - [[126608, 126608], 'mapped', [1601]], - [[126609, 126609], 'mapped', [1589]], - [[126610, 126610], 'mapped', [1602]], - [[126611, 126611], 'mapped', [1585]], - [[126612, 126612], 'mapped', [1588]], - [[126613, 126613], 'mapped', [1578]], - [[126614, 126614], 'mapped', [1579]], - [[126615, 126615], 'mapped', [1582]], - [[126616, 126616], 'mapped', [1584]], - [[126617, 126617], 'mapped', [1590]], - [[126618, 126618], 'mapped', [1592]], - [[126619, 126619], 'mapped', [1594]], - [[126620, 126624], 'disallowed'], - [[126625, 126625], 'mapped', [1576]], - [[126626, 126626], 'mapped', [1580]], - [[126627, 126627], 'mapped', [1583]], - [[126628, 126628], 'disallowed'], - [[126629, 126629], 'mapped', [1608]], - [[126630, 126630], 'mapped', [1586]], - [[126631, 126631], 'mapped', [1581]], - [[126632, 126632], 'mapped', [1591]], - [[126633, 126633], 'mapped', [1610]], - [[126634, 126634], 'disallowed'], - [[126635, 126635], 'mapped', [1604]], - [[126636, 126636], 'mapped', [1605]], - [[126637, 126637], 'mapped', [1606]], - [[126638, 126638], 'mapped', [1587]], - [[126639, 126639], 'mapped', [1593]], - [[126640, 126640], 'mapped', [1601]], - [[126641, 126641], 'mapped', [1589]], - [[126642, 126642], 'mapped', [1602]], - [[126643, 126643], 'mapped', [1585]], - [[126644, 126644], 'mapped', [1588]], - [[126645, 126645], 'mapped', [1578]], - [[126646, 126646], 'mapped', [1579]], - [[126647, 126647], 'mapped', [1582]], - [[126648, 126648], 'mapped', [1584]], - [[126649, 126649], 'mapped', [1590]], - [[126650, 126650], 'mapped', [1592]], - [[126651, 126651], 'mapped', [1594]], - [[126652, 126703], 'disallowed'], - [[126704, 126705], 'valid', [], 'NV8'], - [[126706, 126975], 'disallowed'], - [[126976, 127019], 'valid', [], 'NV8'], - [[127020, 127023], 'disallowed'], - [[127024, 127123], 'valid', [], 'NV8'], - [[127124, 127135], 'disallowed'], - [[127136, 127150], 'valid', [], 'NV8'], - [[127151, 127152], 'disallowed'], - [[127153, 127166], 'valid', [], 'NV8'], - [[127167, 127167], 'valid', [], 'NV8'], - [[127168, 127168], 'disallowed'], - [[127169, 127183], 'valid', [], 'NV8'], - [[127184, 127184], 'disallowed'], - [[127185, 127199], 'valid', [], 'NV8'], - [[127200, 127221], 'valid', [], 'NV8'], - [[127222, 127231], 'disallowed'], - [[127232, 127232], 'disallowed'], - [[127233, 127233], 'disallowed_STD3_mapped', [48, 44]], - [[127234, 127234], 'disallowed_STD3_mapped', [49, 44]], - [[127235, 127235], 'disallowed_STD3_mapped', [50, 44]], - [[127236, 127236], 'disallowed_STD3_mapped', [51, 44]], - [[127237, 127237], 'disallowed_STD3_mapped', [52, 44]], - [[127238, 127238], 'disallowed_STD3_mapped', [53, 44]], - [[127239, 127239], 'disallowed_STD3_mapped', [54, 44]], - [[127240, 127240], 'disallowed_STD3_mapped', [55, 44]], - [[127241, 127241], 'disallowed_STD3_mapped', [56, 44]], - [[127242, 127242], 'disallowed_STD3_mapped', [57, 44]], - [[127243, 127244], 'valid', [], 'NV8'], - [[127245, 127247], 'disallowed'], - [[127248, 127248], 'disallowed_STD3_mapped', [40, 97, 41]], - [[127249, 127249], 'disallowed_STD3_mapped', [40, 98, 41]], - [[127250, 127250], 'disallowed_STD3_mapped', [40, 99, 41]], - [[127251, 127251], 'disallowed_STD3_mapped', [40, 100, 41]], - [[127252, 127252], 'disallowed_STD3_mapped', [40, 101, 41]], - [[127253, 127253], 'disallowed_STD3_mapped', [40, 102, 41]], - [[127254, 127254], 'disallowed_STD3_mapped', [40, 103, 41]], - [[127255, 127255], 'disallowed_STD3_mapped', [40, 104, 41]], - [[127256, 127256], 'disallowed_STD3_mapped', [40, 105, 41]], - [[127257, 127257], 'disallowed_STD3_mapped', [40, 106, 41]], - [[127258, 127258], 'disallowed_STD3_mapped', [40, 107, 41]], - [[127259, 127259], 'disallowed_STD3_mapped', [40, 108, 41]], - [[127260, 127260], 'disallowed_STD3_mapped', [40, 109, 41]], - [[127261, 127261], 'disallowed_STD3_mapped', [40, 110, 41]], - [[127262, 127262], 'disallowed_STD3_mapped', [40, 111, 41]], - [[127263, 127263], 'disallowed_STD3_mapped', [40, 112, 41]], - [[127264, 127264], 'disallowed_STD3_mapped', [40, 113, 41]], - [[127265, 127265], 'disallowed_STD3_mapped', [40, 114, 41]], - [[127266, 127266], 'disallowed_STD3_mapped', [40, 115, 41]], - [[127267, 127267], 'disallowed_STD3_mapped', [40, 116, 41]], - [[127268, 127268], 'disallowed_STD3_mapped', [40, 117, 41]], - [[127269, 127269], 'disallowed_STD3_mapped', [40, 118, 41]], - [[127270, 127270], 'disallowed_STD3_mapped', [40, 119, 41]], - [[127271, 127271], 'disallowed_STD3_mapped', [40, 120, 41]], - [[127272, 127272], 'disallowed_STD3_mapped', [40, 121, 41]], - [[127273, 127273], 'disallowed_STD3_mapped', [40, 122, 41]], - [[127274, 127274], 'mapped', [12308, 115, 12309]], - [[127275, 127275], 'mapped', [99]], - [[127276, 127276], 'mapped', [114]], - [[127277, 127277], 'mapped', [99, 100]], - [[127278, 127278], 'mapped', [119, 122]], - [[127279, 127279], 'disallowed'], - [[127280, 127280], 'mapped', [97]], - [[127281, 127281], 'mapped', [98]], - [[127282, 127282], 'mapped', [99]], - [[127283, 127283], 'mapped', [100]], - [[127284, 127284], 'mapped', [101]], - [[127285, 127285], 'mapped', [102]], - [[127286, 127286], 'mapped', [103]], - [[127287, 127287], 'mapped', [104]], - [[127288, 127288], 'mapped', [105]], - [[127289, 127289], 'mapped', [106]], - [[127290, 127290], 'mapped', [107]], - [[127291, 127291], 'mapped', [108]], - [[127292, 127292], 'mapped', [109]], - [[127293, 127293], 'mapped', [110]], - [[127294, 127294], 'mapped', [111]], - [[127295, 127295], 'mapped', [112]], - [[127296, 127296], 'mapped', [113]], - [[127297, 127297], 'mapped', [114]], - [[127298, 127298], 'mapped', [115]], - [[127299, 127299], 'mapped', [116]], - [[127300, 127300], 'mapped', [117]], - [[127301, 127301], 'mapped', [118]], - [[127302, 127302], 'mapped', [119]], - [[127303, 127303], 'mapped', [120]], - [[127304, 127304], 'mapped', [121]], - [[127305, 127305], 'mapped', [122]], - [[127306, 127306], 'mapped', [104, 118]], - [[127307, 127307], 'mapped', [109, 118]], - [[127308, 127308], 'mapped', [115, 100]], - [[127309, 127309], 'mapped', [115, 115]], - [[127310, 127310], 'mapped', [112, 112, 118]], - [[127311, 127311], 'mapped', [119, 99]], - [[127312, 127318], 'valid', [], 'NV8'], - [[127319, 127319], 'valid', [], 'NV8'], - [[127320, 127326], 'valid', [], 'NV8'], - [[127327, 127327], 'valid', [], 'NV8'], - [[127328, 127337], 'valid', [], 'NV8'], - [[127338, 127338], 'mapped', [109, 99]], - [[127339, 127339], 'mapped', [109, 100]], - [[127340, 127343], 'disallowed'], - [[127344, 127352], 'valid', [], 'NV8'], - [[127353, 127353], 'valid', [], 'NV8'], - [[127354, 127354], 'valid', [], 'NV8'], - [[127355, 127356], 'valid', [], 'NV8'], - [[127357, 127358], 'valid', [], 'NV8'], - [[127359, 127359], 'valid', [], 'NV8'], - [[127360, 127369], 'valid', [], 'NV8'], - [[127370, 127373], 'valid', [], 'NV8'], - [[127374, 127375], 'valid', [], 'NV8'], - [[127376, 127376], 'mapped', [100, 106]], - [[127377, 127386], 'valid', [], 'NV8'], - [[127387, 127461], 'disallowed'], - [[127462, 127487], 'valid', [], 'NV8'], - [[127488, 127488], 'mapped', [12411, 12363]], - [[127489, 127489], 'mapped', [12467, 12467]], - [[127490, 127490], 'mapped', [12469]], - [[127491, 127503], 'disallowed'], - [[127504, 127504], 'mapped', [25163]], - [[127505, 127505], 'mapped', [23383]], - [[127506, 127506], 'mapped', [21452]], - [[127507, 127507], 'mapped', [12487]], - [[127508, 127508], 'mapped', [20108]], - [[127509, 127509], 'mapped', [22810]], - [[127510, 127510], 'mapped', [35299]], - [[127511, 127511], 'mapped', [22825]], - [[127512, 127512], 'mapped', [20132]], - [[127513, 127513], 'mapped', [26144]], - [[127514, 127514], 'mapped', [28961]], - [[127515, 127515], 'mapped', [26009]], - [[127516, 127516], 'mapped', [21069]], - [[127517, 127517], 'mapped', [24460]], - [[127518, 127518], 'mapped', [20877]], - [[127519, 127519], 'mapped', [26032]], - [[127520, 127520], 'mapped', [21021]], - [[127521, 127521], 'mapped', [32066]], - [[127522, 127522], 'mapped', [29983]], - [[127523, 127523], 'mapped', [36009]], - [[127524, 127524], 'mapped', [22768]], - [[127525, 127525], 'mapped', [21561]], - [[127526, 127526], 'mapped', [28436]], - [[127527, 127527], 'mapped', [25237]], - [[127528, 127528], 'mapped', [25429]], - [[127529, 127529], 'mapped', [19968]], - [[127530, 127530], 'mapped', [19977]], - [[127531, 127531], 'mapped', [36938]], - [[127532, 127532], 'mapped', [24038]], - [[127533, 127533], 'mapped', [20013]], - [[127534, 127534], 'mapped', [21491]], - [[127535, 127535], 'mapped', [25351]], - [[127536, 127536], 'mapped', [36208]], - [[127537, 127537], 'mapped', [25171]], - [[127538, 127538], 'mapped', [31105]], - [[127539, 127539], 'mapped', [31354]], - [[127540, 127540], 'mapped', [21512]], - [[127541, 127541], 'mapped', [28288]], - [[127542, 127542], 'mapped', [26377]], - [[127543, 127543], 'mapped', [26376]], - [[127544, 127544], 'mapped', [30003]], - [[127545, 127545], 'mapped', [21106]], - [[127546, 127546], 'mapped', [21942]], - [[127547, 127551], 'disallowed'], - [[127552, 127552], 'mapped', [12308, 26412, 12309]], - [[127553, 127553], 'mapped', [12308, 19977, 12309]], - [[127554, 127554], 'mapped', [12308, 20108, 12309]], - [[127555, 127555], 'mapped', [12308, 23433, 12309]], - [[127556, 127556], 'mapped', [12308, 28857, 12309]], - [[127557, 127557], 'mapped', [12308, 25171, 12309]], - [[127558, 127558], 'mapped', [12308, 30423, 12309]], - [[127559, 127559], 'mapped', [12308, 21213, 12309]], - [[127560, 127560], 'mapped', [12308, 25943, 12309]], - [[127561, 127567], 'disallowed'], - [[127568, 127568], 'mapped', [24471]], - [[127569, 127569], 'mapped', [21487]], - [[127570, 127743], 'disallowed'], - [[127744, 127776], 'valid', [], 'NV8'], - [[127777, 127788], 'valid', [], 'NV8'], - [[127789, 127791], 'valid', [], 'NV8'], - [[127792, 127797], 'valid', [], 'NV8'], - [[127798, 127798], 'valid', [], 'NV8'], - [[127799, 127868], 'valid', [], 'NV8'], - [[127869, 127869], 'valid', [], 'NV8'], - [[127870, 127871], 'valid', [], 'NV8'], - [[127872, 127891], 'valid', [], 'NV8'], - [[127892, 127903], 'valid', [], 'NV8'], - [[127904, 127940], 'valid', [], 'NV8'], - [[127941, 127941], 'valid', [], 'NV8'], - [[127942, 127946], 'valid', [], 'NV8'], - [[127947, 127950], 'valid', [], 'NV8'], - [[127951, 127955], 'valid', [], 'NV8'], - [[127956, 127967], 'valid', [], 'NV8'], - [[127968, 127984], 'valid', [], 'NV8'], - [[127985, 127991], 'valid', [], 'NV8'], - [[127992, 127999], 'valid', [], 'NV8'], - [[128e3, 128062], 'valid', [], 'NV8'], - [[128063, 128063], 'valid', [], 'NV8'], - [[128064, 128064], 'valid', [], 'NV8'], - [[128065, 128065], 'valid', [], 'NV8'], - [[128066, 128247], 'valid', [], 'NV8'], - [[128248, 128248], 'valid', [], 'NV8'], - [[128249, 128252], 'valid', [], 'NV8'], - [[128253, 128254], 'valid', [], 'NV8'], - [[128255, 128255], 'valid', [], 'NV8'], - [[128256, 128317], 'valid', [], 'NV8'], - [[128318, 128319], 'valid', [], 'NV8'], - [[128320, 128323], 'valid', [], 'NV8'], - [[128324, 128330], 'valid', [], 'NV8'], - [[128331, 128335], 'valid', [], 'NV8'], - [[128336, 128359], 'valid', [], 'NV8'], - [[128360, 128377], 'valid', [], 'NV8'], - [[128378, 128378], 'disallowed'], - [[128379, 128419], 'valid', [], 'NV8'], - [[128420, 128420], 'disallowed'], - [[128421, 128506], 'valid', [], 'NV8'], - [[128507, 128511], 'valid', [], 'NV8'], - [[128512, 128512], 'valid', [], 'NV8'], - [[128513, 128528], 'valid', [], 'NV8'], - [[128529, 128529], 'valid', [], 'NV8'], - [[128530, 128532], 'valid', [], 'NV8'], - [[128533, 128533], 'valid', [], 'NV8'], - [[128534, 128534], 'valid', [], 'NV8'], - [[128535, 128535], 'valid', [], 'NV8'], - [[128536, 128536], 'valid', [], 'NV8'], - [[128537, 128537], 'valid', [], 'NV8'], - [[128538, 128538], 'valid', [], 'NV8'], - [[128539, 128539], 'valid', [], 'NV8'], - [[128540, 128542], 'valid', [], 'NV8'], - [[128543, 128543], 'valid', [], 'NV8'], - [[128544, 128549], 'valid', [], 'NV8'], - [[128550, 128551], 'valid', [], 'NV8'], - [[128552, 128555], 'valid', [], 'NV8'], - [[128556, 128556], 'valid', [], 'NV8'], - [[128557, 128557], 'valid', [], 'NV8'], - [[128558, 128559], 'valid', [], 'NV8'], - [[128560, 128563], 'valid', [], 'NV8'], - [[128564, 128564], 'valid', [], 'NV8'], - [[128565, 128576], 'valid', [], 'NV8'], - [[128577, 128578], 'valid', [], 'NV8'], - [[128579, 128580], 'valid', [], 'NV8'], - [[128581, 128591], 'valid', [], 'NV8'], - [[128592, 128639], 'valid', [], 'NV8'], - [[128640, 128709], 'valid', [], 'NV8'], - [[128710, 128719], 'valid', [], 'NV8'], - [[128720, 128720], 'valid', [], 'NV8'], - [[128721, 128735], 'disallowed'], - [[128736, 128748], 'valid', [], 'NV8'], - [[128749, 128751], 'disallowed'], - [[128752, 128755], 'valid', [], 'NV8'], - [[128756, 128767], 'disallowed'], - [[128768, 128883], 'valid', [], 'NV8'], - [[128884, 128895], 'disallowed'], - [[128896, 128980], 'valid', [], 'NV8'], - [[128981, 129023], 'disallowed'], - [[129024, 129035], 'valid', [], 'NV8'], - [[129036, 129039], 'disallowed'], - [[129040, 129095], 'valid', [], 'NV8'], - [[129096, 129103], 'disallowed'], - [[129104, 129113], 'valid', [], 'NV8'], - [[129114, 129119], 'disallowed'], - [[129120, 129159], 'valid', [], 'NV8'], - [[129160, 129167], 'disallowed'], - [[129168, 129197], 'valid', [], 'NV8'], - [[129198, 129295], 'disallowed'], - [[129296, 129304], 'valid', [], 'NV8'], - [[129305, 129407], 'disallowed'], - [[129408, 129412], 'valid', [], 'NV8'], - [[129413, 129471], 'disallowed'], - [[129472, 129472], 'valid', [], 'NV8'], - [[129473, 131069], 'disallowed'], - [[131070, 131071], 'disallowed'], - [[131072, 173782], 'valid'], - [[173783, 173823], 'disallowed'], - [[173824, 177972], 'valid'], - [[177973, 177983], 'disallowed'], - [[177984, 178205], 'valid'], - [[178206, 178207], 'disallowed'], - [[178208, 183969], 'valid'], - [[183970, 194559], 'disallowed'], - [[194560, 194560], 'mapped', [20029]], - [[194561, 194561], 'mapped', [20024]], - [[194562, 194562], 'mapped', [20033]], - [[194563, 194563], 'mapped', [131362]], - [[194564, 194564], 'mapped', [20320]], - [[194565, 194565], 'mapped', [20398]], - [[194566, 194566], 'mapped', [20411]], - [[194567, 194567], 'mapped', [20482]], - [[194568, 194568], 'mapped', [20602]], - [[194569, 194569], 'mapped', [20633]], - [[194570, 194570], 'mapped', [20711]], - [[194571, 194571], 'mapped', [20687]], - [[194572, 194572], 'mapped', [13470]], - [[194573, 194573], 'mapped', [132666]], - [[194574, 194574], 'mapped', [20813]], - [[194575, 194575], 'mapped', [20820]], - [[194576, 194576], 'mapped', [20836]], - [[194577, 194577], 'mapped', [20855]], - [[194578, 194578], 'mapped', [132380]], - [[194579, 194579], 'mapped', [13497]], - [[194580, 194580], 'mapped', [20839]], - [[194581, 194581], 'mapped', [20877]], - [[194582, 194582], 'mapped', [132427]], - [[194583, 194583], 'mapped', [20887]], - [[194584, 194584], 'mapped', [20900]], - [[194585, 194585], 'mapped', [20172]], - [[194586, 194586], 'mapped', [20908]], - [[194587, 194587], 'mapped', [20917]], - [[194588, 194588], 'mapped', [168415]], - [[194589, 194589], 'mapped', [20981]], - [[194590, 194590], 'mapped', [20995]], - [[194591, 194591], 'mapped', [13535]], - [[194592, 194592], 'mapped', [21051]], - [[194593, 194593], 'mapped', [21062]], - [[194594, 194594], 'mapped', [21106]], - [[194595, 194595], 'mapped', [21111]], - [[194596, 194596], 'mapped', [13589]], - [[194597, 194597], 'mapped', [21191]], - [[194598, 194598], 'mapped', [21193]], - [[194599, 194599], 'mapped', [21220]], - [[194600, 194600], 'mapped', [21242]], - [[194601, 194601], 'mapped', [21253]], - [[194602, 194602], 'mapped', [21254]], - [[194603, 194603], 'mapped', [21271]], - [[194604, 194604], 'mapped', [21321]], - [[194605, 194605], 'mapped', [21329]], - [[194606, 194606], 'mapped', [21338]], - [[194607, 194607], 'mapped', [21363]], - [[194608, 194608], 'mapped', [21373]], - [[194609, 194611], 'mapped', [21375]], - [[194612, 194612], 'mapped', [133676]], - [[194613, 194613], 'mapped', [28784]], - [[194614, 194614], 'mapped', [21450]], - [[194615, 194615], 'mapped', [21471]], - [[194616, 194616], 'mapped', [133987]], - [[194617, 194617], 'mapped', [21483]], - [[194618, 194618], 'mapped', [21489]], - [[194619, 194619], 'mapped', [21510]], - [[194620, 194620], 'mapped', [21662]], - [[194621, 194621], 'mapped', [21560]], - [[194622, 194622], 'mapped', [21576]], - [[194623, 194623], 'mapped', [21608]], - [[194624, 194624], 'mapped', [21666]], - [[194625, 194625], 'mapped', [21750]], - [[194626, 194626], 'mapped', [21776]], - [[194627, 194627], 'mapped', [21843]], - [[194628, 194628], 'mapped', [21859]], - [[194629, 194630], 'mapped', [21892]], - [[194631, 194631], 'mapped', [21913]], - [[194632, 194632], 'mapped', [21931]], - [[194633, 194633], 'mapped', [21939]], - [[194634, 194634], 'mapped', [21954]], - [[194635, 194635], 'mapped', [22294]], - [[194636, 194636], 'mapped', [22022]], - [[194637, 194637], 'mapped', [22295]], - [[194638, 194638], 'mapped', [22097]], - [[194639, 194639], 'mapped', [22132]], - [[194640, 194640], 'mapped', [20999]], - [[194641, 194641], 'mapped', [22766]], - [[194642, 194642], 'mapped', [22478]], - [[194643, 194643], 'mapped', [22516]], - [[194644, 194644], 'mapped', [22541]], - [[194645, 194645], 'mapped', [22411]], - [[194646, 194646], 'mapped', [22578]], - [[194647, 194647], 'mapped', [22577]], - [[194648, 194648], 'mapped', [22700]], - [[194649, 194649], 'mapped', [136420]], - [[194650, 194650], 'mapped', [22770]], - [[194651, 194651], 'mapped', [22775]], - [[194652, 194652], 'mapped', [22790]], - [[194653, 194653], 'mapped', [22810]], - [[194654, 194654], 'mapped', [22818]], - [[194655, 194655], 'mapped', [22882]], - [[194656, 194656], 'mapped', [136872]], - [[194657, 194657], 'mapped', [136938]], - [[194658, 194658], 'mapped', [23020]], - [[194659, 194659], 'mapped', [23067]], - [[194660, 194660], 'mapped', [23079]], - [[194661, 194661], 'mapped', [23e3]], - [[194662, 194662], 'mapped', [23142]], - [[194663, 194663], 'mapped', [14062]], - [[194664, 194664], 'disallowed'], - [[194665, 194665], 'mapped', [23304]], - [[194666, 194667], 'mapped', [23358]], - [[194668, 194668], 'mapped', [137672]], - [[194669, 194669], 'mapped', [23491]], - [[194670, 194670], 'mapped', [23512]], - [[194671, 194671], 'mapped', [23527]], - [[194672, 194672], 'mapped', [23539]], - [[194673, 194673], 'mapped', [138008]], - [[194674, 194674], 'mapped', [23551]], - [[194675, 194675], 'mapped', [23558]], - [[194676, 194676], 'disallowed'], - [[194677, 194677], 'mapped', [23586]], - [[194678, 194678], 'mapped', [14209]], - [[194679, 194679], 'mapped', [23648]], - [[194680, 194680], 'mapped', [23662]], - [[194681, 194681], 'mapped', [23744]], - [[194682, 194682], 'mapped', [23693]], - [[194683, 194683], 'mapped', [138724]], - [[194684, 194684], 'mapped', [23875]], - [[194685, 194685], 'mapped', [138726]], - [[194686, 194686], 'mapped', [23918]], - [[194687, 194687], 'mapped', [23915]], - [[194688, 194688], 'mapped', [23932]], - [[194689, 194689], 'mapped', [24033]], - [[194690, 194690], 'mapped', [24034]], - [[194691, 194691], 'mapped', [14383]], - [[194692, 194692], 'mapped', [24061]], - [[194693, 194693], 'mapped', [24104]], - [[194694, 194694], 'mapped', [24125]], - [[194695, 194695], 'mapped', [24169]], - [[194696, 194696], 'mapped', [14434]], - [[194697, 194697], 'mapped', [139651]], - [[194698, 194698], 'mapped', [14460]], - [[194699, 194699], 'mapped', [24240]], - [[194700, 194700], 'mapped', [24243]], - [[194701, 194701], 'mapped', [24246]], - [[194702, 194702], 'mapped', [24266]], - [[194703, 194703], 'mapped', [172946]], - [[194704, 194704], 'mapped', [24318]], - [[194705, 194706], 'mapped', [140081]], - [[194707, 194707], 'mapped', [33281]], - [[194708, 194709], 'mapped', [24354]], - [[194710, 194710], 'mapped', [14535]], - [[194711, 194711], 'mapped', [144056]], - [[194712, 194712], 'mapped', [156122]], - [[194713, 194713], 'mapped', [24418]], - [[194714, 194714], 'mapped', [24427]], - [[194715, 194715], 'mapped', [14563]], - [[194716, 194716], 'mapped', [24474]], - [[194717, 194717], 'mapped', [24525]], - [[194718, 194718], 'mapped', [24535]], - [[194719, 194719], 'mapped', [24569]], - [[194720, 194720], 'mapped', [24705]], - [[194721, 194721], 'mapped', [14650]], - [[194722, 194722], 'mapped', [14620]], - [[194723, 194723], 'mapped', [24724]], - [[194724, 194724], 'mapped', [141012]], - [[194725, 194725], 'mapped', [24775]], - [[194726, 194726], 'mapped', [24904]], - [[194727, 194727], 'mapped', [24908]], - [[194728, 194728], 'mapped', [24910]], - [[194729, 194729], 'mapped', [24908]], - [[194730, 194730], 'mapped', [24954]], - [[194731, 194731], 'mapped', [24974]], - [[194732, 194732], 'mapped', [25010]], - [[194733, 194733], 'mapped', [24996]], - [[194734, 194734], 'mapped', [25007]], - [[194735, 194735], 'mapped', [25054]], - [[194736, 194736], 'mapped', [25074]], - [[194737, 194737], 'mapped', [25078]], - [[194738, 194738], 'mapped', [25104]], - [[194739, 194739], 'mapped', [25115]], - [[194740, 194740], 'mapped', [25181]], - [[194741, 194741], 'mapped', [25265]], - [[194742, 194742], 'mapped', [25300]], - [[194743, 194743], 'mapped', [25424]], - [[194744, 194744], 'mapped', [142092]], - [[194745, 194745], 'mapped', [25405]], - [[194746, 194746], 'mapped', [25340]], - [[194747, 194747], 'mapped', [25448]], - [[194748, 194748], 'mapped', [25475]], - [[194749, 194749], 'mapped', [25572]], - [[194750, 194750], 'mapped', [142321]], - [[194751, 194751], 'mapped', [25634]], - [[194752, 194752], 'mapped', [25541]], - [[194753, 194753], 'mapped', [25513]], - [[194754, 194754], 'mapped', [14894]], - [[194755, 194755], 'mapped', [25705]], - [[194756, 194756], 'mapped', [25726]], - [[194757, 194757], 'mapped', [25757]], - [[194758, 194758], 'mapped', [25719]], - [[194759, 194759], 'mapped', [14956]], - [[194760, 194760], 'mapped', [25935]], - [[194761, 194761], 'mapped', [25964]], - [[194762, 194762], 'mapped', [143370]], - [[194763, 194763], 'mapped', [26083]], - [[194764, 194764], 'mapped', [26360]], - [[194765, 194765], 'mapped', [26185]], - [[194766, 194766], 'mapped', [15129]], - [[194767, 194767], 'mapped', [26257]], - [[194768, 194768], 'mapped', [15112]], - [[194769, 194769], 'mapped', [15076]], - [[194770, 194770], 'mapped', [20882]], - [[194771, 194771], 'mapped', [20885]], - [[194772, 194772], 'mapped', [26368]], - [[194773, 194773], 'mapped', [26268]], - [[194774, 194774], 'mapped', [32941]], - [[194775, 194775], 'mapped', [17369]], - [[194776, 194776], 'mapped', [26391]], - [[194777, 194777], 'mapped', [26395]], - [[194778, 194778], 'mapped', [26401]], - [[194779, 194779], 'mapped', [26462]], - [[194780, 194780], 'mapped', [26451]], - [[194781, 194781], 'mapped', [144323]], - [[194782, 194782], 'mapped', [15177]], - [[194783, 194783], 'mapped', [26618]], - [[194784, 194784], 'mapped', [26501]], - [[194785, 194785], 'mapped', [26706]], - [[194786, 194786], 'mapped', [26757]], - [[194787, 194787], 'mapped', [144493]], - [[194788, 194788], 'mapped', [26766]], - [[194789, 194789], 'mapped', [26655]], - [[194790, 194790], 'mapped', [26900]], - [[194791, 194791], 'mapped', [15261]], - [[194792, 194792], 'mapped', [26946]], - [[194793, 194793], 'mapped', [27043]], - [[194794, 194794], 'mapped', [27114]], - [[194795, 194795], 'mapped', [27304]], - [[194796, 194796], 'mapped', [145059]], - [[194797, 194797], 'mapped', [27355]], - [[194798, 194798], 'mapped', [15384]], - [[194799, 194799], 'mapped', [27425]], - [[194800, 194800], 'mapped', [145575]], - [[194801, 194801], 'mapped', [27476]], - [[194802, 194802], 'mapped', [15438]], - [[194803, 194803], 'mapped', [27506]], - [[194804, 194804], 'mapped', [27551]], - [[194805, 194805], 'mapped', [27578]], - [[194806, 194806], 'mapped', [27579]], - [[194807, 194807], 'mapped', [146061]], - [[194808, 194808], 'mapped', [138507]], - [[194809, 194809], 'mapped', [146170]], - [[194810, 194810], 'mapped', [27726]], - [[194811, 194811], 'mapped', [146620]], - [[194812, 194812], 'mapped', [27839]], - [[194813, 194813], 'mapped', [27853]], - [[194814, 194814], 'mapped', [27751]], - [[194815, 194815], 'mapped', [27926]], - [[194816, 194816], 'mapped', [27966]], - [[194817, 194817], 'mapped', [28023]], - [[194818, 194818], 'mapped', [27969]], - [[194819, 194819], 'mapped', [28009]], - [[194820, 194820], 'mapped', [28024]], - [[194821, 194821], 'mapped', [28037]], - [[194822, 194822], 'mapped', [146718]], - [[194823, 194823], 'mapped', [27956]], - [[194824, 194824], 'mapped', [28207]], - [[194825, 194825], 'mapped', [28270]], - [[194826, 194826], 'mapped', [15667]], - [[194827, 194827], 'mapped', [28363]], - [[194828, 194828], 'mapped', [28359]], - [[194829, 194829], 'mapped', [147153]], - [[194830, 194830], 'mapped', [28153]], - [[194831, 194831], 'mapped', [28526]], - [[194832, 194832], 'mapped', [147294]], - [[194833, 194833], 'mapped', [147342]], - [[194834, 194834], 'mapped', [28614]], - [[194835, 194835], 'mapped', [28729]], - [[194836, 194836], 'mapped', [28702]], - [[194837, 194837], 'mapped', [28699]], - [[194838, 194838], 'mapped', [15766]], - [[194839, 194839], 'mapped', [28746]], - [[194840, 194840], 'mapped', [28797]], - [[194841, 194841], 'mapped', [28791]], - [[194842, 194842], 'mapped', [28845]], - [[194843, 194843], 'mapped', [132389]], - [[194844, 194844], 'mapped', [28997]], - [[194845, 194845], 'mapped', [148067]], - [[194846, 194846], 'mapped', [29084]], - [[194847, 194847], 'disallowed'], - [[194848, 194848], 'mapped', [29224]], - [[194849, 194849], 'mapped', [29237]], - [[194850, 194850], 'mapped', [29264]], - [[194851, 194851], 'mapped', [149e3]], - [[194852, 194852], 'mapped', [29312]], - [[194853, 194853], 'mapped', [29333]], - [[194854, 194854], 'mapped', [149301]], - [[194855, 194855], 'mapped', [149524]], - [[194856, 194856], 'mapped', [29562]], - [[194857, 194857], 'mapped', [29579]], - [[194858, 194858], 'mapped', [16044]], - [[194859, 194859], 'mapped', [29605]], - [[194860, 194861], 'mapped', [16056]], - [[194862, 194862], 'mapped', [29767]], - [[194863, 194863], 'mapped', [29788]], - [[194864, 194864], 'mapped', [29809]], - [[194865, 194865], 'mapped', [29829]], - [[194866, 194866], 'mapped', [29898]], - [[194867, 194867], 'mapped', [16155]], - [[194868, 194868], 'mapped', [29988]], - [[194869, 194869], 'mapped', [150582]], - [[194870, 194870], 'mapped', [30014]], - [[194871, 194871], 'mapped', [150674]], - [[194872, 194872], 'mapped', [30064]], - [[194873, 194873], 'mapped', [139679]], - [[194874, 194874], 'mapped', [30224]], - [[194875, 194875], 'mapped', [151457]], - [[194876, 194876], 'mapped', [151480]], - [[194877, 194877], 'mapped', [151620]], - [[194878, 194878], 'mapped', [16380]], - [[194879, 194879], 'mapped', [16392]], - [[194880, 194880], 'mapped', [30452]], - [[194881, 194881], 'mapped', [151795]], - [[194882, 194882], 'mapped', [151794]], - [[194883, 194883], 'mapped', [151833]], - [[194884, 194884], 'mapped', [151859]], - [[194885, 194885], 'mapped', [30494]], - [[194886, 194887], 'mapped', [30495]], - [[194888, 194888], 'mapped', [30538]], - [[194889, 194889], 'mapped', [16441]], - [[194890, 194890], 'mapped', [30603]], - [[194891, 194891], 'mapped', [16454]], - [[194892, 194892], 'mapped', [16534]], - [[194893, 194893], 'mapped', [152605]], - [[194894, 194894], 'mapped', [30798]], - [[194895, 194895], 'mapped', [30860]], - [[194896, 194896], 'mapped', [30924]], - [[194897, 194897], 'mapped', [16611]], - [[194898, 194898], 'mapped', [153126]], - [[194899, 194899], 'mapped', [31062]], - [[194900, 194900], 'mapped', [153242]], - [[194901, 194901], 'mapped', [153285]], - [[194902, 194902], 'mapped', [31119]], - [[194903, 194903], 'mapped', [31211]], - [[194904, 194904], 'mapped', [16687]], - [[194905, 194905], 'mapped', [31296]], - [[194906, 194906], 'mapped', [31306]], - [[194907, 194907], 'mapped', [31311]], - [[194908, 194908], 'mapped', [153980]], - [[194909, 194910], 'mapped', [154279]], - [[194911, 194911], 'disallowed'], - [[194912, 194912], 'mapped', [16898]], - [[194913, 194913], 'mapped', [154539]], - [[194914, 194914], 'mapped', [31686]], - [[194915, 194915], 'mapped', [31689]], - [[194916, 194916], 'mapped', [16935]], - [[194917, 194917], 'mapped', [154752]], - [[194918, 194918], 'mapped', [31954]], - [[194919, 194919], 'mapped', [17056]], - [[194920, 194920], 'mapped', [31976]], - [[194921, 194921], 'mapped', [31971]], - [[194922, 194922], 'mapped', [32e3]], - [[194923, 194923], 'mapped', [155526]], - [[194924, 194924], 'mapped', [32099]], - [[194925, 194925], 'mapped', [17153]], - [[194926, 194926], 'mapped', [32199]], - [[194927, 194927], 'mapped', [32258]], - [[194928, 194928], 'mapped', [32325]], - [[194929, 194929], 'mapped', [17204]], - [[194930, 194930], 'mapped', [156200]], - [[194931, 194931], 'mapped', [156231]], - [[194932, 194932], 'mapped', [17241]], - [[194933, 194933], 'mapped', [156377]], - [[194934, 194934], 'mapped', [32634]], - [[194935, 194935], 'mapped', [156478]], - [[194936, 194936], 'mapped', [32661]], - [[194937, 194937], 'mapped', [32762]], - [[194938, 194938], 'mapped', [32773]], - [[194939, 194939], 'mapped', [156890]], - [[194940, 194940], 'mapped', [156963]], - [[194941, 194941], 'mapped', [32864]], - [[194942, 194942], 'mapped', [157096]], - [[194943, 194943], 'mapped', [32880]], - [[194944, 194944], 'mapped', [144223]], - [[194945, 194945], 'mapped', [17365]], - [[194946, 194946], 'mapped', [32946]], - [[194947, 194947], 'mapped', [33027]], - [[194948, 194948], 'mapped', [17419]], - [[194949, 194949], 'mapped', [33086]], - [[194950, 194950], 'mapped', [23221]], - [[194951, 194951], 'mapped', [157607]], - [[194952, 194952], 'mapped', [157621]], - [[194953, 194953], 'mapped', [144275]], - [[194954, 194954], 'mapped', [144284]], - [[194955, 194955], 'mapped', [33281]], - [[194956, 194956], 'mapped', [33284]], - [[194957, 194957], 'mapped', [36766]], - [[194958, 194958], 'mapped', [17515]], - [[194959, 194959], 'mapped', [33425]], - [[194960, 194960], 'mapped', [33419]], - [[194961, 194961], 'mapped', [33437]], - [[194962, 194962], 'mapped', [21171]], - [[194963, 194963], 'mapped', [33457]], - [[194964, 194964], 'mapped', [33459]], - [[194965, 194965], 'mapped', [33469]], - [[194966, 194966], 'mapped', [33510]], - [[194967, 194967], 'mapped', [158524]], - [[194968, 194968], 'mapped', [33509]], - [[194969, 194969], 'mapped', [33565]], - [[194970, 194970], 'mapped', [33635]], - [[194971, 194971], 'mapped', [33709]], - [[194972, 194972], 'mapped', [33571]], - [[194973, 194973], 'mapped', [33725]], - [[194974, 194974], 'mapped', [33767]], - [[194975, 194975], 'mapped', [33879]], - [[194976, 194976], 'mapped', [33619]], - [[194977, 194977], 'mapped', [33738]], - [[194978, 194978], 'mapped', [33740]], - [[194979, 194979], 'mapped', [33756]], - [[194980, 194980], 'mapped', [158774]], - [[194981, 194981], 'mapped', [159083]], - [[194982, 194982], 'mapped', [158933]], - [[194983, 194983], 'mapped', [17707]], - [[194984, 194984], 'mapped', [34033]], - [[194985, 194985], 'mapped', [34035]], - [[194986, 194986], 'mapped', [34070]], - [[194987, 194987], 'mapped', [160714]], - [[194988, 194988], 'mapped', [34148]], - [[194989, 194989], 'mapped', [159532]], - [[194990, 194990], 'mapped', [17757]], - [[194991, 194991], 'mapped', [17761]], - [[194992, 194992], 'mapped', [159665]], - [[194993, 194993], 'mapped', [159954]], - [[194994, 194994], 'mapped', [17771]], - [[194995, 194995], 'mapped', [34384]], - [[194996, 194996], 'mapped', [34396]], - [[194997, 194997], 'mapped', [34407]], - [[194998, 194998], 'mapped', [34409]], - [[194999, 194999], 'mapped', [34473]], - [[195e3, 195e3], 'mapped', [34440]], - [[195001, 195001], 'mapped', [34574]], - [[195002, 195002], 'mapped', [34530]], - [[195003, 195003], 'mapped', [34681]], - [[195004, 195004], 'mapped', [34600]], - [[195005, 195005], 'mapped', [34667]], - [[195006, 195006], 'mapped', [34694]], - [[195007, 195007], 'disallowed'], - [[195008, 195008], 'mapped', [34785]], - [[195009, 195009], 'mapped', [34817]], - [[195010, 195010], 'mapped', [17913]], - [[195011, 195011], 'mapped', [34912]], - [[195012, 195012], 'mapped', [34915]], - [[195013, 195013], 'mapped', [161383]], - [[195014, 195014], 'mapped', [35031]], - [[195015, 195015], 'mapped', [35038]], - [[195016, 195016], 'mapped', [17973]], - [[195017, 195017], 'mapped', [35066]], - [[195018, 195018], 'mapped', [13499]], - [[195019, 195019], 'mapped', [161966]], - [[195020, 195020], 'mapped', [162150]], - [[195021, 195021], 'mapped', [18110]], - [[195022, 195022], 'mapped', [18119]], - [[195023, 195023], 'mapped', [35488]], - [[195024, 195024], 'mapped', [35565]], - [[195025, 195025], 'mapped', [35722]], - [[195026, 195026], 'mapped', [35925]], - [[195027, 195027], 'mapped', [162984]], - [[195028, 195028], 'mapped', [36011]], - [[195029, 195029], 'mapped', [36033]], - [[195030, 195030], 'mapped', [36123]], - [[195031, 195031], 'mapped', [36215]], - [[195032, 195032], 'mapped', [163631]], - [[195033, 195033], 'mapped', [133124]], - [[195034, 195034], 'mapped', [36299]], - [[195035, 195035], 'mapped', [36284]], - [[195036, 195036], 'mapped', [36336]], - [[195037, 195037], 'mapped', [133342]], - [[195038, 195038], 'mapped', [36564]], - [[195039, 195039], 'mapped', [36664]], - [[195040, 195040], 'mapped', [165330]], - [[195041, 195041], 'mapped', [165357]], - [[195042, 195042], 'mapped', [37012]], - [[195043, 195043], 'mapped', [37105]], - [[195044, 195044], 'mapped', [37137]], - [[195045, 195045], 'mapped', [165678]], - [[195046, 195046], 'mapped', [37147]], - [[195047, 195047], 'mapped', [37432]], - [[195048, 195048], 'mapped', [37591]], - [[195049, 195049], 'mapped', [37592]], - [[195050, 195050], 'mapped', [37500]], - [[195051, 195051], 'mapped', [37881]], - [[195052, 195052], 'mapped', [37909]], - [[195053, 195053], 'mapped', [166906]], - [[195054, 195054], 'mapped', [38283]], - [[195055, 195055], 'mapped', [18837]], - [[195056, 195056], 'mapped', [38327]], - [[195057, 195057], 'mapped', [167287]], - [[195058, 195058], 'mapped', [18918]], - [[195059, 195059], 'mapped', [38595]], - [[195060, 195060], 'mapped', [23986]], - [[195061, 195061], 'mapped', [38691]], - [[195062, 195062], 'mapped', [168261]], - [[195063, 195063], 'mapped', [168474]], - [[195064, 195064], 'mapped', [19054]], - [[195065, 195065], 'mapped', [19062]], - [[195066, 195066], 'mapped', [38880]], - [[195067, 195067], 'mapped', [168970]], - [[195068, 195068], 'mapped', [19122]], - [[195069, 195069], 'mapped', [169110]], - [[195070, 195071], 'mapped', [38923]], - [[195072, 195072], 'mapped', [38953]], - [[195073, 195073], 'mapped', [169398]], - [[195074, 195074], 'mapped', [39138]], - [[195075, 195075], 'mapped', [19251]], - [[195076, 195076], 'mapped', [39209]], - [[195077, 195077], 'mapped', [39335]], - [[195078, 195078], 'mapped', [39362]], - [[195079, 195079], 'mapped', [39422]], - [[195080, 195080], 'mapped', [19406]], - [[195081, 195081], 'mapped', [170800]], - [[195082, 195082], 'mapped', [39698]], - [[195083, 195083], 'mapped', [4e4]], - [[195084, 195084], 'mapped', [40189]], - [[195085, 195085], 'mapped', [19662]], - [[195086, 195086], 'mapped', [19693]], - [[195087, 195087], 'mapped', [40295]], - [[195088, 195088], 'mapped', [172238]], - [[195089, 195089], 'mapped', [19704]], - [[195090, 195090], 'mapped', [172293]], - [[195091, 195091], 'mapped', [172558]], - [[195092, 195092], 'mapped', [172689]], - [[195093, 195093], 'mapped', [40635]], - [[195094, 195094], 'mapped', [19798]], - [[195095, 195095], 'mapped', [40697]], - [[195096, 195096], 'mapped', [40702]], - [[195097, 195097], 'mapped', [40709]], - [[195098, 195098], 'mapped', [40719]], - [[195099, 195099], 'mapped', [40726]], - [[195100, 195100], 'mapped', [40763]], - [[195101, 195101], 'mapped', [173568]], - [[195102, 196605], 'disallowed'], - [[196606, 196607], 'disallowed'], - [[196608, 262141], 'disallowed'], - [[262142, 262143], 'disallowed'], - [[262144, 327677], 'disallowed'], - [[327678, 327679], 'disallowed'], - [[327680, 393213], 'disallowed'], - [[393214, 393215], 'disallowed'], - [[393216, 458749], 'disallowed'], - [[458750, 458751], 'disallowed'], - [[458752, 524285], 'disallowed'], - [[524286, 524287], 'disallowed'], - [[524288, 589821], 'disallowed'], - [[589822, 589823], 'disallowed'], - [[589824, 655357], 'disallowed'], - [[655358, 655359], 'disallowed'], - [[655360, 720893], 'disallowed'], - [[720894, 720895], 'disallowed'], - [[720896, 786429], 'disallowed'], - [[786430, 786431], 'disallowed'], - [[786432, 851965], 'disallowed'], - [[851966, 851967], 'disallowed'], - [[851968, 917501], 'disallowed'], - [[917502, 917503], 'disallowed'], - [[917504, 917504], 'disallowed'], - [[917505, 917505], 'disallowed'], - [[917506, 917535], 'disallowed'], - [[917536, 917631], 'disallowed'], - [[917632, 917759], 'disallowed'], - [[917760, 917999], 'ignored'], - [[918e3, 983037], 'disallowed'], - [[983038, 983039], 'disallowed'], - [[983040, 1048573], 'disallowed'], - [[1048574, 1048575], 'disallowed'], - [[1048576, 1114109], 'disallowed'], - [[1114110, 1114111], 'disallowed'] - ]; - } -}); - -// node_modules/tr46/index.js -var require_tr46 = __commonJS({ - 'node_modules/tr46/index.js'(exports2, module2) { - 'use strict'; - var punycode = require('punycode'); - var mappingTable = require_mappingTable(); - var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 - }; - function normalize(str) { - return str - .split('\0') - .map(function (s) { - return s.normalize('NFC'); - }) - .join('\0'); - } - function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; - while (start <= end) { - var mid = Math.floor((start + end) / 2); - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; + position.position++; + const encodedBody = input.slice(mimeTypeLength + 1); + let body2 = stringPercentDecode(encodedBody); + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + const stringBody = isomorphicDecode(body2); + body2 = forgivingBase64(stringBody); + if (body2 === 'failure') { + return 'failure'; } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020)+$/, ''); + mimeType = mimeType.slice(0, -1); } - return null; + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType; + } + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII'); + } + return { mimeType: mimeTypeRecord, body: body2 }; } - var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - function countSymbols(string) { - return string.replace(regexAstralSymbols, '_').length; + function URLSerializer(url, excludeFragment = false) { + if (!excludeFragment) { + return url.href; + } + const href = url.href; + const hashLength = url.hash.length; + return hashLength === 0 ? href : href.substring(0, href.length - hashLength); } - function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ''; - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); - switch (status[1]) { - case 'disallowed': - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case 'ignored': - break; - case 'mapped': - processed += String.fromCodePoint.apply(String, status[2]); - break; - case 'deviation': - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case 'valid': - processed += String.fromCodePoint(codePoint); - break; - case 'disallowed_STD3_mapped': - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case 'disallowed_STD3_valid': - if (useSTD3) { - hasError = true; - } - processed += String.fromCodePoint(codePoint); - break; + function collectASequenceOfCodePoints(condition, input, position) { + let result = ''; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; + } + return result; + } + function collectASequenceOfCodePointsFast(char, input, position) { + const idx = input.indexOf(char, position.position); + const start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); + } + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); + } + function percentDecode(input) { + const output = []; + for (let i = 0; i < input.length; i++) { + const byte = input[i]; + if (byte !== 37) { + output.push(byte); + } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { + output.push(37); + } else { + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); + const bytePoint = Number.parseInt(nextTwoBytes, 16); + output.push(bytePoint); + i += 2; } } - return { - string: processed, - error: hasError - }; + return Uint8Array.from(output); } - var combiningMarksRegex = - /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; - function validateLabel(label, processing_option) { - if (label.substr(0, 4) === 'xn--') { - label = punycode.toUnicode(label); - processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + function parseMIMEType(input) { + input = removeHTTPWhitespace(input, true, true); + const position = { position: 0 }; + const type = collectASequenceOfCodePointsFast('/', input, position); + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure'; } - var error = false; - if ( - normalize(label) !== label || - (label[3] === '-' && label[4] === '-') || - label[0] === '-' || - label[label.length - 1] === '-' || - label.indexOf('.') !== -1 || - label.search(combiningMarksRegex) === 0 - ) { - error = true; + if (position.position > input.length) { + return 'failure'; } - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); + position.position++; + let subtype = collectASequenceOfCodePointsFast(';', input, position); + subtype = removeHTTPWhitespace(subtype, false, true); + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure'; + } + const typeLowercase = type.toLowerCase(); + const subtypeLowercase = subtype.toLowerCase(); + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: /* @__PURE__ */ new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + }; + while (position.position < input.length) { + position.position++; + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ); + let parameterName = collectASequenceOfCodePoints(char => char !== ';' && char !== '=', input, position); + parameterName = parameterName.toLowerCase(); + if (position.position < input.length) { + if (input[position.position] === ';') { + continue; + } + position.position++; + } + if (position.position > input.length) { + break; + } + let parameterValue = null; + if (input[position.position] === '"') { + parameterValue = collectAnHTTPQuotedString(input, position, true); + collectASequenceOfCodePointsFast(';', input, position); + } else { + parameterValue = collectASequenceOfCodePointsFast(';', input, position); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } + } if ( - (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== 'valid') || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== 'valid' && status[1] !== 'deviation') + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) ) { - error = true; - break; + mimeType.parameters.set(parameterName, parameterValue); } } - return { - label, - error - }; + return mimeType; } - function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize(result.string); - var labels = result.string.split('.'); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch (e) { - result.error = true; - } + function forgivingBase64(data) { + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ''); + if (data.length % 4 === 0) { + data = data.replace(/=?=$/, ''); } - return { - string: labels.join('.'), - error: result.error - }; + if (data.length % 4 === 1) { + return 'failure'; + } + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure'; + } + const binary = atob2(data); + const bytes = new Uint8Array(binary.length); + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte); + } + return bytes; } - module2.exports.toASCII = function (domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split('.'); - labels = labels.map(function (l) { - try { - return punycode.toASCII(l); - } catch (e) { - result.error = true; - return l; + function collectAnHTTPQuotedString(input, position, extractValue) { + const positionStart = position.position; + let value = ''; + assert(input[position.position] === '"'); + position.position++; + while (true) { + value += collectASequenceOfCodePoints(char => char !== '"' && char !== '\\', input, position); + if (position.position >= input.length) { + break; } - }); - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join('.').length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } - for (var i = 0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; + const quoteOrBackslash = input[position.position]; + position.position++; + if (quoteOrBackslash === '\\') { + if (position.position >= input.length) { + value += '\\'; break; } + value += input[position.position]; + position.position++; + } else { + assert(quoteOrBackslash === '"'); + break; } } - if (result.error) return null; - return labels.join('.'); - }; - module2.exports.toUnicode = function (domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); - return { - domain: result.string, - error: result.error - }; - }; - module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; - } -}); - -// node_modules/whatwg-url/lib/url-state-machine.js -var require_url_state_machine = __commonJS({ - 'node_modules/whatwg-url/lib/url-state-machine.js'(exports2, module2) { - 'use strict'; - var punycode = require('punycode'); - var tr46 = require_tr46(); - var specialSchemes = { - ftp: 21, - file: null, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443 - }; - var failure = Symbol('failure'); - function countSymbols(str) { - return punycode.ucs2.decode(str).length; - } - function at(input, idx) { - const c = input[idx]; - return isNaN(c) ? void 0 : String.fromCodePoint(c); - } - function isASCIIDigit(c) { - return c >= 48 && c <= 57; - } - function isASCIIAlpha(c) { - return (c >= 65 && c <= 90) || (c >= 97 && c <= 122); - } - function isASCIIAlphanumeric(c) { - return isASCIIAlpha(c) || isASCIIDigit(c); - } - function isASCIIHex(c) { - return isASCIIDigit(c) || (c >= 65 && c <= 70) || (c >= 97 && c <= 102); - } - function isSingleDot(buffer) { - return buffer === '.' || buffer.toLowerCase() === '%2e'; - } - function isDoubleDot(buffer) { - buffer = buffer.toLowerCase(); - return buffer === '..' || buffer === '%2e.' || buffer === '.%2e' || buffer === '%2e%2e'; - } - function isWindowsDriveLetterCodePoints(cp1, cp2) { - return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); - } - function isWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ':' || string[1] === '|'); - } - function isNormalizedWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ':'; - } - function containsForbiddenHostCodePoint(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; - } - function containsForbiddenHostCodePointExcludingPercent(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; - } - function isSpecialScheme(scheme) { - return specialSchemes[scheme] !== void 0; - } - function isSpecial(url) { - return isSpecialScheme(url.scheme); - } - function defaultPort(scheme) { - return specialSchemes[scheme]; - } - function percentEncode(c) { - let hex = c.toString(16).toUpperCase(); - if (hex.length === 1) { - hex = '0' + hex; - } - return '%' + hex; - } - function utf8PercentEncode(c) { - const buf = new Buffer(c); - let str = ''; - for (let i = 0; i < buf.length; ++i) { - str += percentEncode(buf[i]); + if (extractValue) { + return value; } - return str; + return input.slice(positionStart, position.position); } - function utf8PercentDecode(str) { - const input = new Buffer(str); - const output = []; - for (let i = 0; i < input.length; ++i) { - if (input[i] !== 37) { - output.push(input[i]); - } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { - output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); - i += 2; - } else { - output.push(input[i]); + function serializeAMimeType(mimeType) { + assert(mimeType !== 'failure'); + const { parameters, essence } = mimeType; + let serialization = essence; + for (let [name, value] of parameters.entries()) { + serialization += ';'; + serialization += name; + serialization += '='; + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + value = value.replace(/(\\|")/g, '\\$1'); + value = '"' + value; + value += '"'; } + serialization += value; } - return new Buffer(output).toString(); - } - function isC0ControlPercentEncode(c) { - return c <= 31 || c > 126; + return serialization; } - var extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); - function isPathPercentEncode(c) { - return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); + function isHTTPWhiteSpace(char) { + return char === '\r' || char === '\n' || char === ' ' || char === ' '; } - var extraUserinfoPercentEncodeSet = new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); - function isUserinfoPercentEncode(c) { - return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); - } - function percentEncodeChar(c, encodeSetPredicate) { - const cStr = String.fromCodePoint(c); - if (encodeSetPredicate(c)) { - return utf8PercentEncode(cStr); + function removeHTTPWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); } - return cStr; - } - function parseIPv4Number(input) { - let R = 10; - if (input.length >= 2 && input.charAt(0) === '0' && input.charAt(1).toLowerCase() === 'x') { - input = input.substring(2); - R = 16; - } else if (input.length >= 2 && input.charAt(0) === '0') { - input = input.substring(1); - R = 8; + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); } - if (input === '') { - return 0; + return str.slice(lead, trail + 1); + } + function isASCIIWhitespace(char) { + return char === '\r' || char === '\n' || char === ' ' || char === '\f' || char === ' '; + } + function removeASCIIWhitespace(str, leading = true, trailing = true) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); } - const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; - if (regex.test(input)) { - return failure; + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); } - return parseInt(input, R); + return str.slice(lead, trail + 1); } - function parseIPv4(input) { - const parts = input.split('.'); - if (parts[parts.length - 1] === '') { - if (parts.length > 1) { - parts.pop(); + module2.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType + }; + } +}); + +// node_modules/undici/lib/fetch/file.js +var require_file = __commonJS({ + 'node_modules/undici/lib/fetch/file.js'(exports2, module2) { + 'use strict'; + var { Blob: Blob2, File: NativeFile } = require('buffer'); + var { types } = require('util'); + var { kState } = require_symbols2(); + var { isBlobLike } = require_util2(); + var { webidl } = require_webidl(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var { kEnumerableProperty } = require_util(); + var encoder = new TextEncoder(); + var File = class _File extends Blob2 { + constructor(fileBits, fileName, options = {}) { + webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }); + fileBits = webidl.converters['sequence'](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + const n = fileName; + let t = options.type; + let d; + substep: { + if (t) { + t = parseMIMEType(t); + if (t === 'failure') { + t = ''; + break substep; + } + t = serializeAMimeType(t).toLowerCase(); + } + d = options.lastModified; } + super(processBlobParts(fileBits, options), { type: t }); + this[kState] = { + name: n, + lastModified: d, + type: t + }; } - if (parts.length > 4) { - return input; + get name() { + webidl.brandCheck(this, _File); + return this[kState].name; } - const numbers = []; - for (const part of parts) { - if (part === '') { - return input; - } - const n = parseIPv4Number(part); - if (n === failure) { - return input; - } - numbers.push(n); + get lastModified() { + webidl.brandCheck(this, _File); + return this[kState].lastModified; } - for (let i = 0; i < numbers.length - 1; ++i) { - if (numbers[i] > 255) { - return failure; - } + get type() { + webidl.brandCheck(this, _File); + return this[kState].type; } - if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { - return failure; + }; + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; } - let ipv4 = numbers.pop(); - let counter = 0; - for (const n of numbers) { - ipv4 += n * Math.pow(256, 3 - counter); - ++counter; + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); } - return ipv4; - } - function serializeIPv4(address) { - let output = ''; - let n = address; - for (let i = 1; i <= 4; ++i) { - output = String(n % 256) + output; - if (i !== 4) { - output = '.' + output; - } - n = Math.floor(n / 256); + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); } - return output; - } - function parseIPv6(input) { - const address = [0, 0, 0, 0, 0, 0, 0, 0]; - let pieceIndex = 0; - let compress = null; - let pointer = 0; - input = punycode.ucs2.decode(input); - if (input[pointer] === 58) { - if (input[pointer + 1] !== 58) { - return failure; - } - pointer += 2; - ++pieceIndex; - compress = pieceIndex; - } - while (pointer < input.length) { - if (pieceIndex === 8) { - return failure; - } - if (input[pointer] === 58) { - if (compress !== null) { - return failure; - } - ++pointer; - ++pieceIndex; - compress = pieceIndex; - continue; - } - let value = 0; - let length = 0; - while (length < 4 && isASCIIHex(input[pointer])) { - value = value * 16 + parseInt(at(input, pointer), 16); - ++pointer; - ++length; - } - if (input[pointer] === 46) { - if (length === 0) { - return failure; - } - pointer -= length; - if (pieceIndex > 6) { - return failure; - } - let numbersSeen = 0; - while (input[pointer] !== void 0) { - let ipv4Piece = null; - if (numbersSeen > 0) { - if (input[pointer] === 46 && numbersSeen < 4) { - ++pointer; - } else { - return failure; - } - } - if (!isASCIIDigit(input[pointer])) { - return failure; - } - while (isASCIIDigit(input[pointer])) { - const number = parseInt(at(input, pointer)); - if (ipv4Piece === null) { - ipv4Piece = number; - } else if (ipv4Piece === 0) { - return failure; - } else { - ipv4Piece = ipv4Piece * 10 + number; - } - if (ipv4Piece > 255) { - return failure; - } - ++pointer; - } - address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; - ++numbersSeen; - if (numbersSeen === 2 || numbersSeen === 4) { - ++pieceIndex; - } - } - if (numbersSeen !== 4) { - return failure; - } - break; - } else if (input[pointer] === 58) { - ++pointer; - if (input[pointer] === void 0) { - return failure; - } - } else if (input[pointer] !== void 0) { - return failure; - } - address[pieceIndex] = value; - ++pieceIndex; - } - if (compress !== null) { - let swaps = pieceIndex - compress; - pieceIndex = 7; - while (pieceIndex !== 0 && swaps > 0) { - const temp = address[compress + swaps - 1]; - address[compress + swaps - 1] = address[pieceIndex]; - address[pieceIndex] = temp; - --pieceIndex; - --swaps; - } - } else if (compress === null && pieceIndex !== 8) { - return failure; - } - return address; - } - function serializeIPv6(address) { - let output = ''; - const seqResult = findLongestZeroSequence(address); - const compress = seqResult.idx; - let ignore0 = false; - for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { - if (ignore0 && address[pieceIndex] === 0) { - continue; - } else if (ignore0) { - ignore0 = false; - } - if (compress === pieceIndex) { - const separator = pieceIndex === 0 ? '::' : ':'; - output += separator; - ignore0 = true; - continue; - } - output += address[pieceIndex].toString(16); - if (pieceIndex !== 7) { - output += ':'; - } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); } - return output; - } - function parseHost(input, isSpecialArg) { - if (input[0] === '[') { - if (input[input.length - 1] !== ']') { - return failure; - } - return parseIPv6(input.substring(1, input.length - 1)); + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); } - if (!isSpecialArg) { - return parseOpaqueHost(input); + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; } - const domain = utf8PercentDecode(input); - const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); - if (asciiDomain === null) { - return failure; + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; } - if (containsForbiddenHostCodePoint(asciiDomain)) { - return failure; + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; } - const ipv4Host = parseIPv4(asciiDomain); - if (typeof ipv4Host === 'number' || ipv4Host === failure) { - return ipv4Host; + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; } - return asciiDomain; - } - function parseOpaqueHost(input) { - if (containsForbiddenHostCodePointExcludingPercent(input)) { - return failure; + get [Symbol.toStringTag]() { + return 'File'; } - let output = ''; - const decoded = punycode.ucs2.decode(input); - for (let i = 0; i < decoded.length; ++i) { - output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + }; + Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: 'File', + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty + }); + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V, opts); + } } - return output; - } - function findLongestZeroSequence(arr) { - let maxIdx = null; - let maxLen = 1; - let currStart = null; - let currLen = 0; - for (let i = 0; i < arr.length; ++i) { - if (arr[i] !== 0) { - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - currStart = null; - currLen = 0; - } else { - if (currStart === null) { - currStart = i; - } - ++currLen; + return webidl.converters.USVString(V, opts); + }; + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.BlobPart); + webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue() { + return Date.now(); } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: value => { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== 'native') { + value = 'transparent'; + } + return value; + }, + defaultValue: 'transparent' } - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; + ]); + function processBlobParts(parts, options) { + const bytes = []; + for (const element of parts) { + if (typeof element === 'string') { + let s = element; + if (options.endings === 'native') { + s = convertLineEndingsNative(s); + } + bytes.push(encoder.encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + if (!element.buffer) { + bytes.push(new Uint8Array(element)); + } else { + bytes.push(new Uint8Array(element.buffer, element.byteOffset, element.byteLength)); + } + } else if (isBlobLike(element)) { + bytes.push(element); + } } - return { - idx: maxIdx, - len: maxLen - }; + return bytes; } - function serializeHost(host) { - if (typeof host === 'number') { - return serializeIPv4(host); + function convertLineEndingsNative(s) { + let nativeLineEnding = '\n'; + if (process.platform === 'win32') { + nativeLineEnding = '\r\n'; } - if (host instanceof Array) { - return '[' + serializeIPv6(host) + ']'; - } - return host; + return s.replace(/\r?\n/g, nativeLineEnding); } - function trimControlChars(url) { - return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ''); - } - function trimTabAndNewline(url) { - return url.replace(/\u0009|\u000A|\u000D/g, ''); + function isFileLike(object) { + return ( + (NativeFile && object instanceof NativeFile) || + object instanceof File || + (object && + (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File') + ); } - function shortenPath(url) { - const path = url.path; - if (path.length === 0) { - return; - } - if (url.scheme === 'file' && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { - return; + module2.exports = { File, FileLike, isFileLike }; + } +}); + +// node_modules/undici/lib/fetch/formdata.js +var require_formdata = __commonJS({ + 'node_modules/undici/lib/fetch/formdata.js'(exports2, module2) { + 'use strict'; + var { isBlobLike, toUSVString, makeIterator } = require_util2(); + var { kState } = require_symbols2(); + var { File: UndiciFile, FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { Blob: Blob2, File: NativeFile } = require('buffer'); + var File = NativeFile ?? UndiciFile; + var FormData = class _FormData { + constructor(form) { + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }); + } + this[kState] = []; } - path.pop(); - } - function includesCredentials(url) { - return url.username !== '' || url.password !== ''; - } - function cannotHaveAUsernamePasswordPort(url) { - return url.host === null || url.host === '' || url.cannotBeABaseURL || url.scheme === 'file'; - } - function isNormalizedWindowsDriveLetter(string) { - return /^[A-Za-z]:$/.test(string); - } - function URLStateMachine(input, base, encodingOverride, url, stateOverride) { - this.pointer = 0; - this.input = input; - this.base = base || null; - this.encodingOverride = encodingOverride || 'utf-8'; - this.stateOverride = stateOverride; - this.url = url; - this.failure = false; - this.parseError = false; - if (!this.url) { - this.url = { - scheme: '', - username: '', - password: '', - host: null, - port: null, - path: [], - query: null, - fragment: null, - cannotBeABaseURL: false - }; - const res2 = trimControlChars(this.input); - if (res2 !== this.input) { - this.parseError = true; + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); } - this.input = res2; + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); } - const res = trimTabAndNewline(this.input); - if (res !== this.input) { - this.parseError = true; + delete(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }); + name = webidl.converters.USVString(name); + this[kState] = this[kState].filter(entry => entry.name !== name); } - this.input = res; - this.state = stateOverride || 'scheme start'; - this.buffer = ''; - this.atFlag = false; - this.arrFlag = false; - this.passwordTokenSeenFlag = false; - this.input = punycode.ucs2.decode(this.input); - for (; this.pointer <= this.input.length; ++this.pointer) { - const c = this.input[this.pointer]; - const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); - const ret = this['parse ' + this.state](c, cStr); - if (!ret) { - break; - } else if (ret === failure) { - this.failure = true; - break; + get(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }); + name = webidl.converters.USVString(name); + const idx = this[kState].findIndex(entry => entry.name === name); + if (idx === -1) { + return null; } + return this[kState][idx].value; } - } - URLStateMachine.prototype['parse scheme start'] = function parseSchemeStart(c, cStr) { - if (isASCIIAlpha(c)) { - this.buffer += cStr.toLowerCase(); - this.state = 'scheme'; - } else if (!this.stateOverride) { - this.state = 'no scheme'; - --this.pointer; - } else { - this.parseError = true; - return failure; + getAll(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }); + name = webidl.converters.USVString(name); + return this[kState].filter(entry => entry.name === name).map(entry => entry.value); } - return true; - }; - URLStateMachine.prototype['parse scheme'] = function parseScheme(c, cStr) { - if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { - this.buffer += cStr.toLowerCase(); - } else if (c === 58) { - if (this.stateOverride) { - if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { - return false; - } - if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { - return false; - } - if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === 'file') { - return false; - } - if (this.url.scheme === 'file' && (this.url.host === '' || this.url.host === null)) { - return false; - } - } - this.url.scheme = this.buffer; - this.buffer = ''; - if (this.stateOverride) { - return false; + has(name) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }); + name = webidl.converters.USVString(name); + return this[kState].findIndex(entry => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); } - if (this.url.scheme === 'file') { - if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { - this.parseError = true; - } - this.state = 'file'; - } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { - this.state = 'special relative or authority'; - } else if (isSpecial(this.url)) { - this.state = 'special authority slashes'; - } else if (this.input[this.pointer + 1] === 47) { - this.state = 'path or authority'; - ++this.pointer; + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex(entry2 => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter(entry2 => entry2.name !== name) + ]; } else { - this.url.cannotBeABaseURL = true; - this.url.path.push(''); - this.state = 'cannot-be-a-base-URL path'; - } - } else if (!this.stateOverride) { - this.buffer = ''; - this.state = 'no scheme'; - this.pointer = -1; - } else { - this.parseError = true; - return failure; + this[kState].push(entry); + } } - return true; - }; - URLStateMachine.prototype['parse no scheme'] = function parseNoScheme(c) { - if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { - return failure; - } else if (this.base.cannotBeABaseURL && c === 35) { - this.url.scheme = this.base.scheme; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.url.cannotBeABaseURL = true; - this.state = 'fragment'; - } else if (this.base.scheme === 'file') { - this.state = 'file'; - --this.pointer; - } else { - this.state = 'relative'; - --this.pointer; + entries() { + webidl.brandCheck(this, _FormData); + return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'key+value'); } - return true; - }; - URLStateMachine.prototype['parse special relative or authority'] = function parseSpecialRelativeOrAuthority(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = 'special authority ignore slashes'; - ++this.pointer; - } else { - this.parseError = true; - this.state = 'relative'; - --this.pointer; + keys() { + webidl.brandCheck(this, _FormData); + return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'key'); } - return true; - }; - URLStateMachine.prototype['parse path or authority'] = function parsePathOrAuthority(c) { - if (c === 47) { - this.state = 'authority'; - } else { - this.state = 'path'; - --this.pointer; + values() { + webidl.brandCheck(this, _FormData); + return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'value'); + } + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _FormData); + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }); + if (typeof callbackFn !== 'function') { + throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } } - return true; }; - URLStateMachine.prototype['parse relative'] = function parseRelative(c) { - this.url.scheme = this.base.scheme; - if (isNaN(c)) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 47) { - this.state = 'relative slash'; - } else if (c === 63) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.state = 'fragment'; - } else if (isSpecial(this.url) && c === 92) { - this.parseError = true; - this.state = 'relative slash'; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(0, this.base.path.length - 1); - this.state = 'path'; - --this.pointer; + FormData.prototype[Symbol.iterator] = FormData.prototype.entries; + Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true } - return true; - }; - URLStateMachine.prototype['parse relative slash'] = function parseRelativeSlash(c) { - if (isSpecial(this.url) && (c === 47 || c === 92)) { - if (c === 92) { - this.parseError = true; - } - this.state = 'special authority ignore slashes'; - } else if (c === 47) { - this.state = 'authority'; + }); + function makeEntry(name, value, filename) { + name = Buffer.from(name).toString('utf8'); + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8'); } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.state = 'path'; - --this.pointer; + if (!isFileLike(value)) { + value = + value instanceof Blob2 + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = + (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile + ? new File([value], filename, options) + : new FileLike(value, filename, options); + } } - return true; - }; - URLStateMachine.prototype['parse special authority slashes'] = function parseSpecialAuthoritySlashes(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = 'special authority ignore slashes'; - ++this.pointer; - } else { - this.parseError = true; - this.state = 'special authority ignore slashes'; - --this.pointer; - } - return true; - }; - URLStateMachine.prototype['parse special authority ignore slashes'] = function parseSpecialAuthorityIgnoreSlashes(c) { - if (c !== 47 && c !== 92) { - this.state = 'authority'; - --this.pointer; + return { name, value }; + } + module2.exports = { FormData }; + } +}); + +// node_modules/undici/lib/fetch/body.js +var require_body = __commonJS({ + 'node_modules/undici/lib/fetch/body.js'(exports2, module2) { + 'use strict'; + var Busboy = require_main(); + var util = require_util(); + var { ReadableStreamFrom, isBlobLike, isReadableStreamLike, readableStreamClose, createDeferredPromise, fullyReadBody } = + require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { DOMException: DOMException2, structuredClone } = require_constants2(); + var { Blob: Blob2, File: NativeFile } = require('buffer'); + var { kBodyUsed } = require_symbols(); + var assert = require('assert'); + var { isErrored } = require_util(); + var { isUint8Array, isArrayBuffer } = require('util/types'); + var { File: UndiciFile } = require_file(); + var { parseMIMEType, serializeAMimeType } = require_dataURL(); + var random; + try { + const crypto4 = require('node:crypto'); + random = max => crypto4.randomInt(0, max); + } catch { + random = max => Math.floor(Math.random(max)); + } + var ReadableStream = globalThis.ReadableStream; + var File = NativeFile ?? UndiciFile; + var textEncoder = new TextEncoder(); + var textDecoder = new TextDecoder(); + function extractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require('stream/web').ReadableStream; + } + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); } else { - this.parseError = true; + stream = new ReadableStream({ + async pull(controller) { + controller.enqueue(typeof source === 'string' ? textEncoder.encode(source) : source); + queueMicrotask(() => readableStreamClose(controller)); + }, + start() {}, + type: void 0 + }); } - return true; - }; - URLStateMachine.prototype['parse authority'] = function parseAuthority(c, cStr) { - if (c === 64) { - this.parseError = true; - if (this.atFlag) { - this.buffer = '%40' + this.buffer; - } - this.atFlag = true; - const len = countSymbols(this.buffer); - for (let pointer = 0; pointer < len; ++pointer) { - const codePoint = this.buffer.codePointAt(pointer); - if (codePoint === 58 && !this.passwordTokenSeenFlag) { - this.passwordTokenSeenFlag = true; - continue; - } - const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); - if (this.passwordTokenSeenFlag) { - this.url.password += encodedCodePoints; + assert(isReadableStreamLike(stream)); + let action = null; + let source = null; + let length = null; + let type = null; + if (typeof object === 'string') { + source = object; + type = 'text/plain;charset=UTF-8'; + } else if (object instanceof URLSearchParams) { + source = object.toString(); + type = 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (isArrayBuffer(object)) { + source = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22'); + const normalizeLinefeeds = value => value.replace(/\r?\n|\r/g, '\r\n'); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk2 = textEncoder.encode( + prefix + + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +` + ); + blobParts.push(chunk2); + length += chunk2.byteLength; } else { - this.url.username += encodedCodePoints; + const chunk2 = textEncoder.encode( + `${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + + `\r +Content-Type: ${value.type || 'application/octet-stream'}\r +\r +` + ); + blobParts.push(chunk2, value, rn); + if (typeof value.size === 'number') { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } } } - this.buffer = ''; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92)) { - if (this.atFlag && this.buffer === '') { - this.parseError = true; - return failure; - } - this.pointer -= countSymbols(this.buffer) + 1; - this.buffer = ''; - this.state = 'host'; - } else { - this.buffer += cStr; - } - return true; - }; - URLStateMachine.prototype['parse hostname'] = URLStateMachine.prototype['parse host'] = function parseHostName(c, cStr) { - if (this.stateOverride && this.url.scheme === 'file') { - --this.pointer; - this.state = 'file host'; - } else if (c === 58 && !this.arrFlag) { - if (this.buffer === '') { - this.parseError = true; - return failure; - } - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - this.url.host = host; - this.buffer = ''; - this.state = 'port'; - if (this.stateOverride === 'hostname') { - return false; - } - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92)) { - --this.pointer; - if (isSpecial(this.url) && this.buffer === '') { - this.parseError = true; - return failure; - } else if (this.stateOverride && this.buffer === '' && (includesCredentials(this.url) || this.url.port !== null)) { - this.parseError = true; - return false; + const chunk = textEncoder.encode(`--${boundary}--`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; } - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; + source = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = 'multipart/form-data; boundary=' + boundary; + } else if (isBlobLike(object)) { + source = object; + length = object.size; + if (object.type) { + type = object.type; } - this.url.host = host; - this.buffer = ''; - this.state = 'path start'; - if (this.stateOverride) { - return false; + } else if (typeof object[Symbol.asyncIterator] === 'function') { + if (keepalive) { + throw new TypeError('keepalive'); } - } else { - if (c === 91) { - this.arrFlag = true; - } else if (c === 93) { - this.arrFlag = false; + if (util.isDisturbed(object) || object.locked) { + throw new TypeError('Response body object should not be disturbed or locked'); } - this.buffer += cStr; + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); } - return true; - }; - URLStateMachine.prototype['parse port'] = function parsePort(c, cStr) { - if (isASCIIDigit(c)) { - this.buffer += cStr; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92) || this.stateOverride) { - if (this.buffer !== '') { - const port = parseInt(this.buffer); - if (port > Math.pow(2, 16) - 1) { - this.parseError = true; - return failure; - } - this.url.port = port === defaultPort(this.url.scheme) ? null : port; - this.buffer = ''; - } - if (this.stateOverride) { - return false; - } - this.state = 'path start'; - --this.pointer; - } else { - this.parseError = true; - return failure; + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source); } - return true; - }; - var fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); - URLStateMachine.prototype['parse file'] = function parseFile(c) { - this.url.scheme = 'file'; - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = 'file slash'; - } else if (this.base !== null && this.base.scheme === 'file') { - if (isNaN(c)) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 63) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.state = 'fragment'; + if (action != null) { + let iterator; + stream = new ReadableStream({ + async start() { + iterator = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + }, + type: void 0 + }); + } + const body2 = { stream, source, length }; + return [body2, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require('stream/web').ReadableStream; + } + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), 'The body has already been consumed.'); + assert(!object.locked, 'The stream is locked.'); + } + return extractBody(object, keepalive); + } + function cloneBody(body2) { + const [out1, out2] = body2.stream.tee(); + const out2Clone = structuredClone(out2, { transfer: [out2] }); + const [, finalClone] = out2Clone.tee(); + body2.stream = out1; + return { + stream: finalClone, + length: body2.length, + source: body2.source + }; + } + async function* consumeBody(body2) { + if (body2) { + if (isUint8Array(body2)) { + yield body2; } else { - if ( - this.input.length - this.pointer - 1 === 0 || - !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || - (this.input.length - this.pointer - 1 >= 2 && !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) - ) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - shortenPath(this.url); - } else { - this.parseError = true; + const stream = body2.stream; + if (util.isDisturbed(stream)) { + throw new TypeError('The body has already been consumed.'); + } + if (stream.locked) { + throw new TypeError('The stream is locked.'); } - this.state = 'path'; - --this.pointer; + stream[kBodyUsed] = true; + yield* stream; } - } else { - this.state = 'path'; - --this.pointer; } - return true; - }; - URLStateMachine.prototype['parse file slash'] = function parseFileSlash(c) { - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = 'file host'; - } else { - if (this.base !== null && this.base.scheme === 'file') { - if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { - this.url.path.push(this.base.path[0]); + } + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException2('The operation was aborted.', 'AbortError'); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return specConsumeBody( + this, + bytes => { + let mimeType = bodyMimeType(this); + if (mimeType === 'failure') { + mimeType = ''; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, + instance + ); + }, + arrayBuffer() { + return specConsumeBody( + this, + bytes => { + return new Uint8Array(bytes).buffer; + }, + instance + ); + }, + text() { + return specConsumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return specConsumeBody(this, parseJSONFromBytes, instance); + }, + async formData() { + webidl.brandCheck(this, instance); + throwIfAborted(this[kState]); + const contentType = this.headers.get('Content-Type'); + if (/multipart\/form-data/.test(contentType)) { + const headers = {}; + for (const [key, value] of this.headers) headers[key.toLowerCase()] = value; + const responseFormData = new FormData(); + let busboy; + try { + busboy = new Busboy({ + headers, + preservePath: true + }); + } catch (err) { + throw new DOMException2(`${err}`, 'AbortError'); + } + busboy.on('field', (name, value) => { + responseFormData.append(name, value); + }); + busboy.on('file', (name, value, filename, encoding, mimeType) => { + const chunks = []; + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + let base64chunk = ''; + value.on('data', chunk => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, ''); + const end = base64chunk.length - (base64chunk.length % 4); + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')); + base64chunk = base64chunk.slice(end); + }); + value.on('end', () => { + chunks.push(Buffer.from(base64chunk, 'base64')); + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } else { + value.on('data', chunk => { + chunks.push(chunk); + }); + value.on('end', () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })); + }); + } + }); + const busboyResolve = new Promise((resolve, reject) => { + busboy.on('finish', resolve); + busboy.on('error', err => reject(new TypeError(err))); + }); + if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk); + busboy.end(); + await busboyResolve; + return responseFormData; + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + let entries; + try { + let text = ''; + const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }); + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk'); + } + text += streamingDecoder.decode(chunk, { stream: true }); + } + text += streamingDecoder.decode(); + entries = new URLSearchParams(text); + } catch (err) { + throw Object.assign(new TypeError(), { cause: err }); + } + const formData = new FormData(); + for (const [name, value] of entries) { + formData.append(name, value); + } + return formData; } else { - this.url.host = this.base.host; + await Promise.resolve(); + throwIfAborted(this[kState]); + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: 'Could not parse content as FormData.' + }); } } - this.state = 'path'; - --this.pointer; + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function specConsumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + throwIfAborted(object[kState]); + if (bodyUnusable(object[kState].body)) { + throw new TypeError('Body is unusable'); + } + const promise = createDeferredPromise(); + const errorSteps = error => promise.reject(error); + const successSteps = data => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(new Uint8Array()); + return promise.promise; } - return true; + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(body2) { + return body2 != null && (body2.stream.locked || util.isDisturbed(body2.stream)); + } + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ''; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(object) { + const { headersList } = object[kState]; + const contentType = headersList.get('content-type'); + if (contentType === null) { + return 'failure'; + } + return parseMIMEType(contentType); + } + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody }; - URLStateMachine.prototype['parse file host'] = function parseFileHost(c, cStr) { - if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { - --this.pointer; - if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { - this.parseError = true; - this.state = 'path'; - } else if (this.buffer === '') { - this.url.host = ''; - if (this.stateOverride) { - return false; + } +}); + +// node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + 'node_modules/undici/lib/core/request.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, NotSupportedError } = require_errors(); + var assert = require('assert'); + var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols(); + var util = require_util(); + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol('handler'); + var channels = {}; + var extractBody; + try { + const diagnosticsChannel = require('diagnostics_channel'); + channels.create = diagnosticsChannel.channel('undici:request:create'); + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent'); + channels.headers = diagnosticsChannel.channel('undici:request:headers'); + channels.trailers = diagnosticsChannel.channel('undici:request:trailers'); + channels.error = diagnosticsChannel.channel('undici:request:error'); + } catch { + channels.create = { hasSubscribers: false }; + channels.bodySent = { hasSubscribers: false }; + channels.headers = { hasSubscribers: false }; + channels.trailers = { hasSubscribers: false }; + channels.error = { hasSubscribers: false }; + } + var Request = class _Request { + constructor( + origin, + { + path, + method, + body: body2, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, + handler + ) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string'); + } else if (path[0] !== '/' && !(path.startsWith('http://') || path.startsWith('https://')) && method !== 'CONNECT') { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash'); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path'); + } + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string'); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method'); + } + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string'); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout'); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout'); + } + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset'); + } + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue'); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + this.abort = null; + if (body2 == null) { + this.body = null; + } else if (util.isStream(body2)) { + this.body = body2; + const rState = this.body._readableState; + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy() { + util.destroy(this); + }; + this.body.on('end', this.endHandler); } - this.state = 'path start'; + this.errorHandler = err => { + if (this.abort) { + this.abort(err); + } else { + this.error = err; + } + }; + this.body.on('error', this.errorHandler); + } else if (util.isBuffer(body2)) { + this.body = body2.byteLength ? body2 : null; + } else if (ArrayBuffer.isView(body2)) { + this.body = body2.buffer.byteLength ? Buffer.from(body2.buffer, body2.byteOffset, body2.byteLength) : null; + } else if (body2 instanceof ArrayBuffer) { + this.body = body2.byteLength ? Buffer.from(body2) : null; + } else if (typeof body2 === 'string') { + this.body = body2.length ? Buffer.from(body2) : null; + } else if (util.isFormDataLike(body2) || util.isIterable(body2) || util.isBlobLike(body2)) { + this.body = body2; } else { - let host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable'); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === 'HEAD' || method === 'GET' : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ''; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even'); } - if (host === 'localhost') { - host = ''; + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); } - this.url.host = host; - if (this.stateOverride) { - return false; + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(this, key, headers[key]); } - this.buffer = ''; - this.state = 'path start'; + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array'); } - } else { - this.buffer += cStr; - } - return true; - }; - URLStateMachine.prototype['parse path start'] = function parsePathStart(c) { - if (isSpecial(this.url)) { - if (c === 92) { - this.parseError = true; - } - this.state = 'path'; - if (c !== 47 && c !== 92) { - --this.pointer; - } - } else if (!this.stateOverride && c === 63) { - this.url.query = ''; - this.state = 'query'; - } else if (!this.stateOverride && c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } else if (c !== void 0) { - this.state = 'path'; - if (c !== 47) { - --this.pointer; + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.'); + } + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body2); + if (this.contentType == null) { + this.contentType = contentType; + this.headers += `content-type: ${contentType}\r +`; + } + this.body = bodyStream.stream; + this.contentLength = bodyStream.length; + } else if (util.isBlobLike(body2) && this.contentType == null && body2.type) { + this.contentType = body2.type; + this.headers += `content-type: ${body2.type}\r +`; + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); } } - return true; - }; - URLStateMachine.prototype['parse path'] = function parsePath(c) { - if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || (!this.stateOverride && (c === 63 || c === 35))) { - if (isSpecial(this.url) && c === 92) { - this.parseError = true; - } - if (isDoubleDot(this.buffer)) { - shortenPath(this.url); - if (c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(''); - } - } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(''); - } else if (!isSingleDot(this.buffer)) { - if (this.url.scheme === 'file' && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { - if (this.url.host !== '' && this.url.host !== null) { - this.parseError = true; - this.url.host = ''; - } - this.buffer = this.buffer[0] + ':'; + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk); + } catch (err) { + this.abort(err); } - this.url.path.push(this.buffer); } - this.buffer = ''; - if (this.url.scheme === 'file' && (c === void 0 || c === 63 || c === 35)) { - while (this.url.path.length > 1 && this.url.path[0] === '') { - this.parseError = true; - this.url.path.shift(); + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent(); + } catch (err) { + this.abort(err); } } - if (c === 63) { - this.url.query = ''; - this.state = 'query'; + } + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + if (this.error) { + abort(this.error); + } else { + this.abort = abort; + return this[kHandler].onConnect(abort); } - if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); } - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } catch (err) { + this.abort(err); } - this.buffer += percentEncodeChar(c, isPathPercentEncode); } - return true; - }; - URLStateMachine.prototype['parse cannot-be-a-base-URL path'] = function parseCannotBeABaseURLPath(c) { - if (c === 63) { - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } else { - if (!isNaN(c) && c !== 37) { - this.parseError = true; + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + try { + return this[kHandler].onData(chunk); + } catch (err) { + this.abort(err); + return false; } - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + } + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + this.onFinally(); + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); } - if (!isNaN(c)) { - this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + try { + return this[kHandler].onComplete(trailers); + } catch (err) { + this.onError(err); } } - return true; - }; - URLStateMachine.prototype['parse query'] = function parseQuery(c, cStr) { - if (isNaN(c) || (!this.stateOverride && c === 35)) { - if (!isSpecial(this.url) || this.url.scheme === 'ws' || this.url.scheme === 'wss') { - this.encodingOverride = 'utf-8'; - } - const buffer = new Buffer(this.buffer); - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] < 33 || buffer[i] > 126 || buffer[i] === 34 || buffer[i] === 35 || buffer[i] === 60 || buffer[i] === 62) { - this.url.query += percentEncode(buffer[i]); - } else { - this.url.query += String.fromCodePoint(buffer[i]); - } + onError(error) { + this.onFinally(); + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); } - this.buffer = ''; - if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + if (this.aborted) { + return; } - this.buffer += cStr; + this.aborted = true; + return this[kHandler].onError(error); } - return true; - }; - URLStateMachine.prototype['parse fragment'] = function parseFragment(c) { - if (isNaN(c)) { - } else if (c === 0) { - this.parseError = true; - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + onFinally() { + if (this.errorHandler) { + this.body.off('error', this.errorHandler); + this.errorHandler = null; } - this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); - } - return true; - }; - function serializeURL(url, excludeFragment) { - let output = url.scheme + ':'; - if (url.host !== null) { - output += '//'; - if (url.username !== '' || url.password !== '') { - output += url.username; - if (url.password !== '') { - output += ':' + url.password; - } - output += '@'; - } - output += serializeHost(url.host); - if (url.port !== null) { - output += ':' + url.port; - } - } else if (url.host === null && url.scheme === 'file') { - output += '//'; - } - if (url.cannotBeABaseURL) { - output += url.path[0]; - } else { - for (const string of url.path) { - output += '/' + string; + if (this.endHandler) { + this.body.off('end', this.endHandler); + this.endHandler = null; } } - if (url.query !== null) { - output += '?' + url.query; + // TODO: adjust to support H2 + addHeader(key, value) { + processHeader(this, key, value); + return this; } - if (!excludeFragment && url.fragment !== null) { - output += '#' + url.fragment; + static [kHTTP1BuildRequest](origin, opts, handler) { + return new _Request(origin, opts, handler); + } + static [kHTTP2BuildRequest](origin, opts, handler) { + const headers = opts.headers; + opts = { ...opts, headers: null }; + const request = new _Request(origin, opts, handler); + request.headers = {}; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even'); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true); + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(request, key, headers[key], true); + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array'); + } + return request; + } + static [kHTTP2CopyHeaders](raw) { + const rawHeaders = raw.split('\r\n'); + const headers = {}; + for (const header of rawHeaders) { + const [key, value] = header.split(': '); + if (value == null || value.length === 0) continue; + if (headers[key]) headers[key] += `,${value}`; + else headers[key] = value; + } + return headers; } - return output; + }; + function processHeaderValue(key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`); + } + val = val != null ? `${val}` : ''; + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + return skipAppend + ? val + : `${key}: ${val}\r +`; } - function serializeOrigin(tuple) { - let result = tuple.scheme + '://'; - result += serializeHost(tuple.host); - if (tuple.port !== null) { - result += ':' + tuple.port; + function processHeader(request, key, val, skipAppend = false) { + if (val && typeof val === 'object' && !Array.isArray(val)) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; + } + if (request.host === null && key.length === 4 && key.toLowerCase() === 'host') { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + request.host = val; + } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === 'content-length') { + request.contentLength = parseInt(val, 10); + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header'); + } + } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === 'content-type') { + request.contentType = val; + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); + else request.headers += processHeaderValue(key, val); + } else if (key.length === 17 && key.toLowerCase() === 'transfer-encoding') { + throw new InvalidArgumentError('invalid transfer-encoding header'); + } else if (key.length === 10 && key.toLowerCase() === 'connection') { + const value = typeof val === 'string' ? val.toLowerCase() : null; + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header'); + } else if (value === 'close') { + request.reset = true; + } + } else if (key.length === 10 && key.toLowerCase() === 'keep-alive') { + throw new InvalidArgumentError('invalid keep-alive header'); + } else if (key.length === 7 && key.toLowerCase() === 'upgrade') { + throw new InvalidArgumentError('invalid upgrade header'); + } else if (key.length === 6 && key.toLowerCase() === 'expect') { + throw new NotSupportedError('expect header not supported'); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key'); + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; + else request.headers[key] = processHeaderValue(key, val[i], skipAppend); + } else { + request.headers += processHeaderValue(key, val[i]); + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); + else request.headers += processHeaderValue(key, val); + } } - return result; } - module2.exports.serializeURL = serializeURL; - module2.exports.serializeURLOrigin = function (url) { - switch (url.scheme) { - case 'blob': - try { - return module2.exports.serializeURLOrigin(module2.exports.parseURL(url.path[0])); - } catch (e) { - return 'null'; - } - case 'ftp': - case 'gopher': - case 'http': - case 'https': - case 'ws': - case 'wss': - return serializeOrigin({ - scheme: url.scheme, - host: url.host, - port: url.port - }); - case 'file': - return 'file://'; - default: - return 'null'; + module2.exports = Request; + } +}); + +// node_modules/undici/lib/dispatcher.js +var require_dispatcher = __commonJS({ + 'node_modules/undici/lib/dispatcher.js'(exports2, module2) { + 'use strict'; + var EventEmitter = require('events'); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error('not implemented'); } - }; - module2.exports.basicURLParse = function (input, options) { - if (options === void 0) { - options = {}; + close() { + throw new Error('not implemented'); } - const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); - if (usm.failure) { - return 'failure'; + destroy() { + throw new Error('not implemented'); } - return usm.url; }; - module2.exports.setTheUsername = function (url, username) { - url.username = ''; - const decoded = punycode.ucs2.decode(username); - for (let i = 0; i < decoded.length; ++i) { - url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + module2.exports = Dispatcher; + } +}); + +// node_modules/undici/lib/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + 'node_modules/undici/lib/dispatcher-base.js'(exports2, module2) { + 'use strict'; + var Dispatcher = require_dispatcher(); + var { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = require_errors(); + var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); + var kDestroyed = Symbol('destroyed'); + var kClosed = Symbol('closed'); + var kOnDestroyed = Symbol('onDestroyed'); + var kOnClosed = Symbol('onClosed'); + var kInterceptedDispatch = Symbol('Intercepted Dispatch'); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; + } + get destroyed() { + return this[kDestroyed]; + } + get closed() { + return this[kClosed]; + } + get interceptors() { + return this[kInterceptors]; + } + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function'); + } + } + } + this[kInterceptors] = newInterceptors; } - }; - module2.exports.setThePassword = function (url, password) { - url.password = ''; - const decoded = punycode.ucs2.decode(password); - for (let i = 0; i < decoded.length; ++i) { - url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed); + }); } - }; - module2.exports.serializeHost = serializeHost; - module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; - module2.exports.serializeInteger = function (integer) { - return String(integer); - }; - module2.exports.parseURL = function (input, options) { - if (options === void 0) { - options = {}; + destroy(err, callback) { + if (typeof err === 'function') { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? /* istanbul ignore next: should never error */ reject(err2) : resolve(data); + }); + }); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); + } + [kInterceptedDispatch](opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler); + } + dispatch(opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.'); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method'); + } + handler.onError(err); + return false; + } + } + }; + module2.exports = DispatcherBase; + } +}); + +// node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + 'node_modules/undici/lib/core/connect.js'(exports2, module2) { + 'use strict'; + var net = require('net'); + var assert = require('assert'); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + var SessionCache; + if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry(key => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; + } + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); + } + }); + } + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + } + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }; + } + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero'); + } + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === 'https:') { + if (!tls) { + tls = require('tls'); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + const session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, + // upgrade socket connection + port: port || 443, + host: hostname + }); + socket.on('session', function (session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update'); + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }); + } + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }) + .on('error', function (err) { + cancelTimeout(); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; + } + function setupTimeout(onConnectTimeout2, timeout) { + if (!timeout) { + return () => {}; + } + let s1 = null; + let s2 = null; + const timeoutId = setTimeout(() => { + s1 = setImmediate(() => { + if (process.platform === 'win32') { + s2 = setImmediate(() => onConnectTimeout2()); + } else { + onConnectTimeout2(); + } + }); + }, timeout); + return () => { + clearTimeout(timeoutId); + clearImmediate(s1); + clearImmediate(s2); + }; + } + function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); + } + module2.exports = buildConnector; + } +}); + +// node_modules/undici/lib/llhttp/utils.js +var require_utils2 = __commonJS({ + 'node_modules/undici/lib/llhttp/utils.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach(key => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; + } + exports2.enumToMap = enumToMap; + } +}); + +// node_modules/undici/lib/llhttp/constants.js +var require_constants3 = __commonJS({ + 'node_modules/undici/lib/llhttp/constants.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.SPECIAL_HEADERS = + exports2.HEADER_STATE = + exports2.MINOR = + exports2.MAJOR = + exports2.CONNECTION_TOKEN_CHARS = + exports2.HEADER_CHARS = + exports2.TOKEN = + exports2.STRICT_TOKEN = + exports2.HEX = + exports2.URL_CHAR = + exports2.STRICT_URL_CHAR = + exports2.USERINFO_CHARS = + exports2.MARK = + exports2.ALPHANUM = + exports2.NUM = + exports2.HEX_MAP = + exports2.NUM_MAP = + exports2.ALPHA = + exports2.FINISH = + exports2.H_METHOD_MAP = + exports2.METHOD_MAP = + exports2.METHODS_RTSP = + exports2.METHODS_ICE = + exports2.METHODS_HTTP = + exports2.METHODS = + exports2.LENIENT_FLAGS = + exports2.FLAGS = + exports2.TYPE = + exports2.ERROR = + void 0; + var utils_1 = require_utils2(); + var ERROR; + (function (ERROR2) { + ERROR2[(ERROR2['OK'] = 0)] = 'OK'; + ERROR2[(ERROR2['INTERNAL'] = 1)] = 'INTERNAL'; + ERROR2[(ERROR2['STRICT'] = 2)] = 'STRICT'; + ERROR2[(ERROR2['LF_EXPECTED'] = 3)] = 'LF_EXPECTED'; + ERROR2[(ERROR2['UNEXPECTED_CONTENT_LENGTH'] = 4)] = 'UNEXPECTED_CONTENT_LENGTH'; + ERROR2[(ERROR2['CLOSED_CONNECTION'] = 5)] = 'CLOSED_CONNECTION'; + ERROR2[(ERROR2['INVALID_METHOD'] = 6)] = 'INVALID_METHOD'; + ERROR2[(ERROR2['INVALID_URL'] = 7)] = 'INVALID_URL'; + ERROR2[(ERROR2['INVALID_CONSTANT'] = 8)] = 'INVALID_CONSTANT'; + ERROR2[(ERROR2['INVALID_VERSION'] = 9)] = 'INVALID_VERSION'; + ERROR2[(ERROR2['INVALID_HEADER_TOKEN'] = 10)] = 'INVALID_HEADER_TOKEN'; + ERROR2[(ERROR2['INVALID_CONTENT_LENGTH'] = 11)] = 'INVALID_CONTENT_LENGTH'; + ERROR2[(ERROR2['INVALID_CHUNK_SIZE'] = 12)] = 'INVALID_CHUNK_SIZE'; + ERROR2[(ERROR2['INVALID_STATUS'] = 13)] = 'INVALID_STATUS'; + ERROR2[(ERROR2['INVALID_EOF_STATE'] = 14)] = 'INVALID_EOF_STATE'; + ERROR2[(ERROR2['INVALID_TRANSFER_ENCODING'] = 15)] = 'INVALID_TRANSFER_ENCODING'; + ERROR2[(ERROR2['CB_MESSAGE_BEGIN'] = 16)] = 'CB_MESSAGE_BEGIN'; + ERROR2[(ERROR2['CB_HEADERS_COMPLETE'] = 17)] = 'CB_HEADERS_COMPLETE'; + ERROR2[(ERROR2['CB_MESSAGE_COMPLETE'] = 18)] = 'CB_MESSAGE_COMPLETE'; + ERROR2[(ERROR2['CB_CHUNK_HEADER'] = 19)] = 'CB_CHUNK_HEADER'; + ERROR2[(ERROR2['CB_CHUNK_COMPLETE'] = 20)] = 'CB_CHUNK_COMPLETE'; + ERROR2[(ERROR2['PAUSED'] = 21)] = 'PAUSED'; + ERROR2[(ERROR2['PAUSED_UPGRADE'] = 22)] = 'PAUSED_UPGRADE'; + ERROR2[(ERROR2['PAUSED_H2_UPGRADE'] = 23)] = 'PAUSED_H2_UPGRADE'; + ERROR2[(ERROR2['USER'] = 24)] = 'USER'; + })((ERROR = exports2.ERROR || (exports2.ERROR = {}))); + var TYPE; + (function (TYPE2) { + TYPE2[(TYPE2['BOTH'] = 0)] = 'BOTH'; + TYPE2[(TYPE2['REQUEST'] = 1)] = 'REQUEST'; + TYPE2[(TYPE2['RESPONSE'] = 2)] = 'RESPONSE'; + })((TYPE = exports2.TYPE || (exports2.TYPE = {}))); + var FLAGS; + (function (FLAGS2) { + FLAGS2[(FLAGS2['CONNECTION_KEEP_ALIVE'] = 1)] = 'CONNECTION_KEEP_ALIVE'; + FLAGS2[(FLAGS2['CONNECTION_CLOSE'] = 2)] = 'CONNECTION_CLOSE'; + FLAGS2[(FLAGS2['CONNECTION_UPGRADE'] = 4)] = 'CONNECTION_UPGRADE'; + FLAGS2[(FLAGS2['CHUNKED'] = 8)] = 'CHUNKED'; + FLAGS2[(FLAGS2['UPGRADE'] = 16)] = 'UPGRADE'; + FLAGS2[(FLAGS2['CONTENT_LENGTH'] = 32)] = 'CONTENT_LENGTH'; + FLAGS2[(FLAGS2['SKIPBODY'] = 64)] = 'SKIPBODY'; + FLAGS2[(FLAGS2['TRAILING'] = 128)] = 'TRAILING'; + FLAGS2[(FLAGS2['TRANSFER_ENCODING'] = 512)] = 'TRANSFER_ENCODING'; + })((FLAGS = exports2.FLAGS || (exports2.FLAGS = {}))); + var LENIENT_FLAGS; + (function (LENIENT_FLAGS2) { + LENIENT_FLAGS2[(LENIENT_FLAGS2['HEADERS'] = 1)] = 'HEADERS'; + LENIENT_FLAGS2[(LENIENT_FLAGS2['CHUNKED_LENGTH'] = 2)] = 'CHUNKED_LENGTH'; + LENIENT_FLAGS2[(LENIENT_FLAGS2['KEEP_ALIVE'] = 4)] = 'KEEP_ALIVE'; + })((LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}))); + var METHODS; + (function (METHODS2) { + METHODS2[(METHODS2['DELETE'] = 0)] = 'DELETE'; + METHODS2[(METHODS2['GET'] = 1)] = 'GET'; + METHODS2[(METHODS2['HEAD'] = 2)] = 'HEAD'; + METHODS2[(METHODS2['POST'] = 3)] = 'POST'; + METHODS2[(METHODS2['PUT'] = 4)] = 'PUT'; + METHODS2[(METHODS2['CONNECT'] = 5)] = 'CONNECT'; + METHODS2[(METHODS2['OPTIONS'] = 6)] = 'OPTIONS'; + METHODS2[(METHODS2['TRACE'] = 7)] = 'TRACE'; + METHODS2[(METHODS2['COPY'] = 8)] = 'COPY'; + METHODS2[(METHODS2['LOCK'] = 9)] = 'LOCK'; + METHODS2[(METHODS2['MKCOL'] = 10)] = 'MKCOL'; + METHODS2[(METHODS2['MOVE'] = 11)] = 'MOVE'; + METHODS2[(METHODS2['PROPFIND'] = 12)] = 'PROPFIND'; + METHODS2[(METHODS2['PROPPATCH'] = 13)] = 'PROPPATCH'; + METHODS2[(METHODS2['SEARCH'] = 14)] = 'SEARCH'; + METHODS2[(METHODS2['UNLOCK'] = 15)] = 'UNLOCK'; + METHODS2[(METHODS2['BIND'] = 16)] = 'BIND'; + METHODS2[(METHODS2['REBIND'] = 17)] = 'REBIND'; + METHODS2[(METHODS2['UNBIND'] = 18)] = 'UNBIND'; + METHODS2[(METHODS2['ACL'] = 19)] = 'ACL'; + METHODS2[(METHODS2['REPORT'] = 20)] = 'REPORT'; + METHODS2[(METHODS2['MKACTIVITY'] = 21)] = 'MKACTIVITY'; + METHODS2[(METHODS2['CHECKOUT'] = 22)] = 'CHECKOUT'; + METHODS2[(METHODS2['MERGE'] = 23)] = 'MERGE'; + METHODS2[(METHODS2['M-SEARCH'] = 24)] = 'M-SEARCH'; + METHODS2[(METHODS2['NOTIFY'] = 25)] = 'NOTIFY'; + METHODS2[(METHODS2['SUBSCRIBE'] = 26)] = 'SUBSCRIBE'; + METHODS2[(METHODS2['UNSUBSCRIBE'] = 27)] = 'UNSUBSCRIBE'; + METHODS2[(METHODS2['PATCH'] = 28)] = 'PATCH'; + METHODS2[(METHODS2['PURGE'] = 29)] = 'PURGE'; + METHODS2[(METHODS2['MKCALENDAR'] = 30)] = 'MKCALENDAR'; + METHODS2[(METHODS2['LINK'] = 31)] = 'LINK'; + METHODS2[(METHODS2['UNLINK'] = 32)] = 'UNLINK'; + METHODS2[(METHODS2['SOURCE'] = 33)] = 'SOURCE'; + METHODS2[(METHODS2['PRI'] = 34)] = 'PRI'; + METHODS2[(METHODS2['DESCRIBE'] = 35)] = 'DESCRIBE'; + METHODS2[(METHODS2['ANNOUNCE'] = 36)] = 'ANNOUNCE'; + METHODS2[(METHODS2['SETUP'] = 37)] = 'SETUP'; + METHODS2[(METHODS2['PLAY'] = 38)] = 'PLAY'; + METHODS2[(METHODS2['PAUSE'] = 39)] = 'PAUSE'; + METHODS2[(METHODS2['TEARDOWN'] = 40)] = 'TEARDOWN'; + METHODS2[(METHODS2['GET_PARAMETER'] = 41)] = 'GET_PARAMETER'; + METHODS2[(METHODS2['SET_PARAMETER'] = 42)] = 'SET_PARAMETER'; + METHODS2[(METHODS2['REDIRECT'] = 43)] = 'REDIRECT'; + METHODS2[(METHODS2['RECORD'] = 44)] = 'RECORD'; + METHODS2[(METHODS2['FLUSH'] = 45)] = 'FLUSH'; + })((METHODS = exports2.METHODS || (exports2.METHODS = {}))); + exports2.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports2.METHODS_ICE = [METHODS.SOURCE]; + exports2.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports2.METHOD_MAP = utils_1.enumToMap(METHODS); + exports2.H_METHOD_MAP = {}; + Object.keys(exports2.METHOD_MAP).forEach(key => { + if (/^H/.test(key)) { + exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; + } + }); + var FINISH; + (function (FINISH2) { + FINISH2[(FINISH2['SAFE'] = 0)] = 'SAFE'; + FINISH2[(FINISH2['SAFE_WITH_CB'] = 1)] = 'SAFE_WITH_CB'; + FINISH2[(FINISH2['UNSAFE'] = 2)] = 'UNSAFE'; + })((FINISH = exports2.FINISH || (exports2.FINISH = {}))); + exports2.ALPHA = []; + for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); + } + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports2.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 + }; + exports2.NUM = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ['-', '_', '.', '!', '~', '*', "'", '(', ')']; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(['%', ';', ':', '&', '=', '+', '$', ',']); + exports2.STRICT_URL_CHAR = [ + '!', + '"', + '$', + '%', + '&', + "'", + '(', + ')', + '*', + '+', + ',', + '-', + '.', + '/', + ':', + ';', + '<', + '=', + '>', + '@', + '[', + '\\', + ']', + '^', + '_', + '`', + '{', + '|', + '}', + '~' + ].concat(exports2.ALPHANUM); + exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([' ', '\f']); + for (let i = 128; i <= 255; i++) { + exports2.URL_CHAR.push(i); + } + exports2.HEX = exports2.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); + exports2.STRICT_TOKEN = ['!', '#', '$', '%', '&', "'", '*', '+', '-', '.', '^', '_', '`', '|', '~'].concat(exports2.ALPHANUM); + exports2.TOKEN = exports2.STRICT_TOKEN.concat([' ']); + exports2.HEADER_CHARS = [' ']; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); + } + } + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter(c => c !== 44); + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + var HEADER_STATE; + (function (HEADER_STATE2) { + HEADER_STATE2[(HEADER_STATE2['GENERAL'] = 0)] = 'GENERAL'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION'] = 1)] = 'CONNECTION'; + HEADER_STATE2[(HEADER_STATE2['CONTENT_LENGTH'] = 2)] = 'CONTENT_LENGTH'; + HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING'] = 3)] = 'TRANSFER_ENCODING'; + HEADER_STATE2[(HEADER_STATE2['UPGRADE'] = 4)] = 'UPGRADE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_KEEP_ALIVE'] = 5)] = 'CONNECTION_KEEP_ALIVE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_CLOSE'] = 6)] = 'CONNECTION_CLOSE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_UPGRADE'] = 7)] = 'CONNECTION_UPGRADE'; + HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING_CHUNKED'] = 8)] = 'TRANSFER_ENCODING_CHUNKED'; + })((HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}))); + exports2.SPECIAL_HEADERS = { + connection: HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + upgrade: HEADER_STATE.UPGRADE + }; + } +}); + +// node_modules/undici/lib/handler/RedirectHandler.js +var require_RedirectHandler = __commonJS({ + 'node_modules/undici/lib/handler/RedirectHandler.js'(exports2, module2) { + 'use strict'; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require('assert'); + var { InvalidArgumentError } = require_errors(); + var EE = require('events'); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol('body'); + var BodyAsyncIterable = class { + constructor(body2) { + this[kBody] = body2; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], 'disturbed'); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on('data', function () { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = 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) && + util.isIterable(this.opts.body) + ) { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = + this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + const { origin, pathname, search } = util.parseURL( + new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)) + ); + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET'; + this.opts.body = null; + } + } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); + } + } + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1]; + } + } + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host'; + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true; + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header); + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'; + } + return false; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, 'headers must be an object or an array'); + } + return ret; + } + module2.exports = RedirectHandler; + } +}); + +// node_modules/undici/lib/interceptor/redirectInterceptor.js +var require_redirectInterceptor = __commonJS({ + 'node_modules/undici/lib/interceptor/redirectInterceptor.js'(exports2, module2) { + 'use strict'; + var RedirectHandler = require_RedirectHandler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return dispatch => { + return function Intercept(opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp-wasm.js'(exports2, module2) { + module2.exports = + 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='; + } +}); + +// node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp_simd-wasm.js'(exports2, module2) { + module2.exports = + 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='; + } +}); + +// node_modules/undici/lib/client.js +var require_client = __commonJS({ + 'node_modules/undici/lib/client.js'(exports2, module2) { + 'use strict'; + var assert = require('assert'); + var net = require('net'); + var http = require('http'); + var { pipeline } = require('stream'); + var util = require_util(); + var timers = require_timers(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError + } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest + } = require_symbols(); + var http2; + try { + http2 = require('http2'); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } + } = http2; + var h2ExperimentalWarned = false; + var FastBuffer = Buffer[Symbol.species]; + var kClosedResolve = Symbol('kClosedResolve'); + var channels = {}; + try { + const diagnosticsChannel = require('diagnostics_channel'); + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders'); + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect'); + channels.connectError = diagnosticsChannel.channel('undici:client:connectError'); + channels.connected = diagnosticsChannel.channel('undici:client:connected'); + } catch { + channels.sendHeaders = { hasSubscribers: false }; + channels.beforeConnect = { hasSubscribers: false }; + channels.connectError = { hasSubscribers: false }; + channels.connected = { hasSubscribers: false }; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor( + url, + { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {} + ) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead'); + } + if (socketTimeout !== void 0) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead'); + } + if (requestTimeout !== void 0) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead'); + } + if (idleTimeout !== void 0) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead'); + } + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead'); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize'); + } + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath'); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout'); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout'); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout'); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold'); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero'); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero'); + } + if (connect2 != null && typeof connect2 !== 'function' && typeof connect2 !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number'); + } + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address'); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number'); + } + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number'); + } + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value'); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0'); + } + if (typeof connect2 !== 'function') { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect2 + }); + } + this[kInterceptors] = + interceptors && interceptors.Client && Array.isArray(interceptors.Client) + ? interceptors.Client + : [createRedirectInterceptor({ maxRedirections })]; + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kSocket] = null; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kHTTPConnVersion] = 'h1'; + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = !allowH2 + ? null + : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, + // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 + // Max peerConcurrentStreams for a Node h2 server + }; + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + } + get pipelining() { + return this[kPipelining]; + } + set pipelining(value) { + this[kPipelining] = value; + resume(this, true); + } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; + } + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; + } + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; + } + get [kConnected]() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + get [kBusy]() { + const socket = this[kSocket]; + return ( + (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || + this[kSize] >= (this[kPipelining] || 1) || + this[kPending] > 0 + ); + } + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once('connect', cb); + } + [kDispatch](opts, handler) { + const origin = opts.origin || this[kUrl].origin; + const request = + this[kHTTPConnVersion] === 'h2' + ? Request[kHTTP2BuildRequest](origin, opts, handler) + : Request[kHTTP1BuildRequest](origin, opts, handler); + this[kQueue].push(request); + if (this[kResuming]) { + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + async [kClose]() { + return new Promise(resolve => { + if (!this[kSize]) { + resolve(null); + } else { + this[kClosedResolve] = resolve; + } + }); + } + async [kDestroy](err) { + return new Promise(resolve => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(this, request, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve(); + }; + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err); + this[kHTTP2Session] = null; + this[kHTTP2SessionState] = null; + } + if (!this[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(this[kSocket].on('close', callback), err); + } + resume(this); + }); + } + }; + function onHttp2SessionError(err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + this[kSocket][kError] = err; + onError(this[kClient], err); + } + function onHttp2FrameError(type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + if (id === 0) { + this[kSocket][kError] = err; + onError(this[kClient], err); + } + } + function onHttp2SessionEnd() { + util.destroy(this, new SocketError('other side closed')); + util.destroy(this[kSocket], new SocketError('other side closed')); + } + function onHTTP2GoAway(code) { + const client = this[kClient]; + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); + client[kSocket] = null; + client[kHTTP2Session] = null; + if (client.destroyed) { + assert(this[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(this, request, err); + } + } else if (client[kRunning] > 0) { + const request = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + resume(client); + } + var constants = require_constants3(); + var createRedirectInterceptor = require_redirectInterceptor(); + var EMPTY_BUF = Buffer.alloc(0); + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), 'base64')); + } catch (e) { + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), 'base64')); + } + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: p => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: p => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; + } + /* eslint-enable camelcase */ + } + }); + } + var llhttpInstance = null; + var llhttpPromise = lazyllhttp(); + llhttpPromise.catch(); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var TIMEOUT_HEADERS = 1; + var TIMEOUT_BODY = 2; + var TIMEOUT_IDLE = 3; + var Parser = class { + constructor(client, socket, { exports: exports3 }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports3; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ''; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ''; + this.contentLength = ''; + this.connection = ''; + this.maxResponseSize = client[kMaxResponseSize]; + } + setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout); + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this); + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + } + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); + } + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ''; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = + 'Response does not match the HTTP/1.1 protocol (' + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ')'; + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); + } + } catch (err) { + util.destroy(socket, err); + } + } + destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + onStatus(buf) { + this.statusText = buf.toString(); + } + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + const request = client[kQueue][client[kRunningIdx]]; + if (!request) { + return -1; + } + } + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + const key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString(); + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request.upgrade || request.method === 'CONNECT'); + this.statusCode = null; + this.statusText = ''; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket + .removeListener('error', onSocketError) + .removeListener('readable', onSocketReadable) + .removeListener('end', onSocketEnd) + .removeListener('close', onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')); + try { + request.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); + } + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request = client[kQueue][client[kRunningIdx]]; + if (!request) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = + shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive'); + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min(keepAliveTimeout - client[kKeepAliveTimeoutThreshold], client[kKeepAliveMaxTimeout]); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset] = true; + } + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; + if (request.aborted) { + return -1; + } + if (request.method === 'HEAD') { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; + } + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED; + } + } + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ''; + this.bytesRead = 0; + this.contentLength = ''; + this.keepAlive = ''; + this.connection = ''; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + request.onComplete(headers); + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError('reset')); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + setImmediate(resume, client); + } else { + resume(client); + } + } + }; + function onParserTimeout(parser) { + const { socket, timeoutType, client } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers'); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError('socket idle timeout')); + } + } + function onSocketReadable() { + const { [kParser]: parser } = this; + if (parser) { + parser.readMore(); + } + } + function onSocketError(err) { + const { [kClient]: client, [kParser]: parser } = this; + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + if (client[kHTTPConnVersion] !== 'h2') { + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + this[kError] = err; + onError(this[kClient], err); + } + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== 'UND_ERR_INFO' && err.code !== 'UND_ERR_SOCKET') { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(client, request, err); + } + assert(client[kSize] === 0); + } + } + function onSocketEnd() { + const { [kParser]: parser, [kClient]: client } = this; + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + return; + } + } + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + } + function onSocketClose() { + const { [kClient]: client, [kParser]: parser } = this; + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(client, request, err); + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + const request = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + resume(client); + } + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kSocket]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === '[') { + const idx = hostname.indexOf(']'); + assert(idx !== -1); + const ip = hostname.substring(1, idx); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]( + { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + } + ); + }); + if (client.destroyed) { + util.destroy( + socket.on('error', () => {}), + new ClientDestroyedError() + ); + return; + } + client[kConnecting] = false; + assert(socket); + const isH2 = socket.alpnProtocol === 'h2'; + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }); + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }); + client[kHTTPConnVersion] = 'h2'; + session[kClient] = client; + session[kSocket] = socket; + session.on('error', onHttp2SessionError); + session.on('frameError', onHttp2FrameError); + session.on('end', onHttp2SessionEnd); + session.on('goaway', onHTTP2GoAway); + session.on('close', onSocketClose); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + } + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + socket.on('error', onSocketError).on('readable', onSocketReadable).on('end', onSocketEnd).on('close', onSocketClose); + client[kSocket] = socket; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit('connect', client[kUrl], [client]); + } catch (err) { + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request, err); + } + } else { + onError(client, err); + } + client.emit('connectionError', client[kUrl], [client], err); + } + resume(client); + } + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit('drain', client[kUrl], [client]); + } + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } + } + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + const socket = client[kSocket]; + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request2 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + const request = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request.servername; + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')); + return; + } + } + if (client[kConnecting]) { + return; + } + if (!socket && !client[kHTTP2Session]) { + connect(client); + return; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request.idempotent) { + return; + } + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + return; + } + if ( + client[kRunning] > 0 && + util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body)) + ) { + return; + } + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } + } + function shouldSendContentLength(method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; + } + function write(client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request); + return; + } + const { body: body2, method, path, host, upgrade, headers, blocking, reset } = request; + const expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; + if (body2 && typeof body2.read === 'function') { + body2.read(0); + } + const bodyLength = util.bodyLength(body2); + let contentLength = bodyLength; + if (contentLength === null) { + contentLength = request.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + contentLength = null; + } + if ( + shouldSendContentLength(method) && + contentLength > 0 && + request.contentLength !== null && + request.contentLength !== contentLength + ) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + const socket = client[kSocket]; + try { + request.onConnect(err => { + if (request.aborted || request.completed) { + return; + } + errorRequest(client, request, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError('aborted')); + }); + } catch (err) { + errorRequest(client, request, err); + } + if (request.aborted) { + return false; + } + if (method === 'HEAD') { + socket[kReset] = true; + } + if (upgrade || method === 'CONNECT') { + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + let header = `${method} ${path} HTTP/1.1\r +`; + if (typeof host === 'string') { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n'; + } else { + header += 'connection: close\r\n'; + } + if (headers) { + header += headers; + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }); + } + if (!body2 || bodyLength === 0) { + if (contentLength === 0) { + socket.write( + `${header}content-length: 0\r +\r +`, + 'latin1' + ); + } else { + assert(contentLength === null, 'no body must not have content length'); + socket.write( + `${header}\r +`, + 'latin1' + ); + } + request.onRequestSent(); + } else if (util.isBuffer(body2)) { + assert(contentLength === body2.byteLength, 'buffer body must have content length'); + socket.cork(); + socket.write( + `${header}content-length: ${contentLength}\r +\r +`, + 'latin1' + ); + socket.write(body2); + socket.uncork(); + request.onBodySent(body2); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + } else if (util.isBlobLike(body2)) { + if (typeof body2.stream === 'function') { + writeIterable({ body: body2.stream(), client, request, socket, contentLength, header, expectsPayload }); + } else { + writeBlob({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + } + } else if (util.isStream(body2)) { + writeStream({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + } else if (util.isIterable(body2)) { + writeIterable({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + } else { + assert(false); + } + return true; + } + function writeH2(client, session, request) { + const { body: body2, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request; + let headers; + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); + else headers = reqHeaders; + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')); + return false; + } + try { + request.onConnect(err => { + if (request.aborted || request.completed) { + return; + } + errorRequest(client, request, err || new RequestAbortedError()); + }); + } catch (err) { + errorRequest(client, request, err); + } + if (request.aborted) { + return false; + } + let stream; + const h2State = client[kHTTP2SessionState]; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; + headers[HTTP2_HEADER_METHOD] = method; + if (method === 'CONNECT') { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream); + ++h2State.openStreams; + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream); + ++h2State.openStreams; + }); + } + stream.once('close', () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) session.unref(); + }); + return true; + } + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = 'https'; + const expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; + if (body2 && typeof body2.read === 'function') { + body2.read(0); + } + let contentLength = util.bodyLength(body2); + if (contentLength == null) { + contentLength = request.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if ( + shouldSendContentLength(method) && + contentLength > 0 && + request.contentLength != null && + request.contentLength !== contentLength + ) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert(body2, 'no body must not have content length'); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === 'GET' || method === 'HEAD'; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue'; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once('continue', writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }); + writeBodyH2(); + } + ++h2State.openStreams; + stream.once('response', headers2 => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2; + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause(); + } + }); + stream.once('end', () => { + request.onComplete([]); + }); + stream.on('data', chunk => { + if (request.onData(chunk) === false) { + stream.pause(); + } + }); + stream.once('close', () => { + h2State.openStreams -= 1; + if (h2State.openStreams === 0) { + session.unref(); + } + }); + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + stream.once('frameError', (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + errorRequest(client, request, err); + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1; + util.destroy(stream, err); + } + }); + return true; + function writeBodyH2() { + if (!body2) { + request.onRequestSent(); + } else if (util.isBuffer(body2)) { + assert(contentLength === body2.byteLength, 'buffer body must have content length'); + stream.cork(); + stream.write(body2); + stream.uncork(); + stream.end(); + request.onBodySent(body2); + request.onRequestSent(); + } else if (util.isBlobLike(body2)) { + if (typeof body2.stream === 'function') { + writeIterable({ + client, + request, + contentLength, + h2stream: stream, + expectsPayload, + body: body2.stream(), + socket: client[kSocket], + header: '' + }); + } else { + writeBlob({ + body: body2, + client, + request, + contentLength, + expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }); + } + } else if (util.isStream(body2)) { + writeStream({ + body: body2, + client, + request, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }); + } else if (util.isIterable(body2)) { + writeIterable({ + body: body2, + client, + request, + contentLength, + expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }); + } else { + assert(false); + } + } + } + function writeStream({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); + if (client[kHTTPConnVersion] === 'h2') { + let onPipeData = function (chunk) { + request.onBodySent(chunk); + }; + const pipe = pipeline(body2, h2stream, err => { + if (err) { + util.destroy(body2, err); + util.destroy(h2stream, err); + } else { + request.onRequestSent(); + } + }); + pipe.on('data', onPipeData); + pipe.once('end', () => { + pipe.removeListener('data', onPipeData); + util.destroy(pipe); + }); + return; + } + let finished = false; + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + const onData = function (chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + const onDrain = function () { + if (finished) { + return; + } + if (body2.resume) { + body2.resume(); + } + }; + const onAbort = function () { + if (finished) { + return; + } + const err = new RequestAbortedError(); + queueMicrotask(() => onFinished(err)); + }; + const onFinished = function (err) { + if (finished) { + return; + } + finished = true; + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)); + socket.off('drain', onDrain).off('error', onFinished); + body2 + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('error', onFinished) + .removeListener('close', onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body2, err); + } else { + util.destroy(body2); + } + }; + body2.on('data', onData).on('end', onFinished).on('error', onFinished).on('close', onAbort); + if (body2.resume) { + body2.resume(); + } + socket.on('drain', onDrain).on('error', onFinished); + } + async function writeBlob({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body2.size, 'blob body must have content length'); + const isH2 = client[kHTTPConnVersion] === 'h2'; + try { + if (contentLength != null && contentLength !== body2.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body2.arrayBuffer()); + if (isH2) { + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + } else { + socket.cork(); + socket.write( + `${header}content-length: ${contentLength}\r +\r +`, + 'latin1' + ); + socket.write(buffer); + socket.uncork(); + } + request.onBodySent(buffer); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + resume(client); + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err); + } + } + async function writeIterable({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined'); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => + new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; + } + }); + if (client[kHTTPConnVersion] === 'h2') { + h2stream.on('close', onDrain).on('drain', onDrain); + try { + for await (const chunk of body2) { + if (socket[kError]) { + throw socket[kError]; + } + const res = h2stream.write(chunk); + request.onBodySent(chunk); + if (!res) { + await waitForDrain(); + } + } + } catch (err) { + h2stream.destroy(err); + } finally { + request.onRequestSent(); + h2stream.end(); + h2stream.off('close', onDrain).off('drain', onDrain); + } + return; + } + socket.on('close', onDrain).on('drain', onDrain); + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body2) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } + } + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off('close', onDrain).off('drain', onDrain); + } + } + var AsyncWriter = class { + constructor({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; + } + write(chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + const len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write( + `${header}transfer-encoding: chunked\r +`, + 'latin1' + ); + } else { + socket.write( + `${header}content-length: ${contentLength}\r +\r +`, + 'latin1' + ); + } + } + if (contentLength === null) { + socket.write( + `\r +${len.toString(16)}\r +`, + 'latin1' + ); + } + this.bytesWritten += len; + const ret = socket.write(chunk); + socket.uncork(); + request.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this; + request.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write( + `${header}content-length: 0\r +\r +`, + 'latin1' + ); + } else { + socket.write( + `${header}\r +`, + 'latin1' + ); + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1'); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); + } + destroy(err) { + const { socket, client } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request'); + util.destroy(socket, err); + } + } + }; + function errorRequest(client, request, err) { + try { + request.onError(err); + assert(request.aborted); + } catch (err2) { + client.emit('error', err2); + } + } + module2.exports = Client; + } +}); + +// node_modules/undici/lib/node/fixed-queue.js +var require_fixed_queue = __commonJS({ + 'node_modules/undici/lib/node/fixed-queue.js'(exports2, module2) { + 'use strict'; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + isEmpty() { + return this.top === this.bottom; + } + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) return null; + this.list[this.bottom] = void 0; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; + } + }; + } +}); + +// node_modules/undici/lib/pool-stats.js +var require_pool_stats = __commonJS({ + 'node_modules/undici/lib/pool-stats.js'(exports2, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol('pool'); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module2.exports = PoolStats; + } +}); + +// node_modules/undici/lib/pool-base.js +var require_pool_base = __commonJS({ + 'node_modules/undici/lib/pool-base.js'(exports2, module2) { + 'use strict'; + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol('clients'); + var kNeedDrain = Symbol('needDrain'); + var kQueue = Symbol('queue'); + var kClosedResolve = Symbol('closed resolve'); + var kOnDrain = Symbol('onDrain'); + var kOnConnect = Symbol('onConnect'); + var kOnDisconnect = Symbol('onDisconnect'); + var kOnConnectionError = Symbol('onConnectionError'); + var kGetDispatcher = Symbol('get dispatcher'); + var kAddClient = Symbol('add client'); + var kRemoveClient = Symbol('remove client'); + var kStats = Symbol('stats'); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit('drain', origin, [pool, ...targets]); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map(c => c.close())).then(pool[kClosedResolve]); + } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter(client => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; + } + return ret; + } + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; + } + return ret; + } + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; + } + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map(c => c.close())); + } else { + return new Promise(resolve => { + this[kClosedResolve] = resolve; + }); + } + } + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); + } + return Promise.all(this[kClients].map(c => c.destroy(err))); + } + [kDispatch](opts, handler) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + [kAddClient](client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; + } + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some( + dispatcher => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true + ); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; + } +}); + +// node_modules/undici/lib/pool.js +var require_pool = __commonJS({ + 'node_modules/undici/lib/pool.js'(exports2, module2) { + 'use strict'; + var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = require_pool_base(); + var Client = require_client(); + var { InvalidArgumentError } = require_errors(); + var util = require_util(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol('options'); + var kConnections = Symbol('connections'); + var kFactory = Symbol('factory'); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor( + origin, + { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {} + ) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect + }); + } + this[kInterceptors] = + options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + } + [kGetDispatcher]() { + let dispatcher = this[kClients].find(dispatcher2 => !dispatcher2[kNeedDrain]); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }; + module2.exports = Pool; + } +}); + +// node_modules/undici/lib/balanced-pool.js +var require_balanced_pool = __commonJS({ + 'node_modules/undici/lib/balanced-pool.js'(exports2, module2) { + 'use strict'; + var { BalancedPoolMissingUpstreamError, InvalidArgumentError } = require_errors(); + var { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol('factory'); + var kOptions = Symbol('options'); + var kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor'); + var kCurrentWeight = Symbol('kCurrentWeight'); + var kIndex = Symbol('kIndex'); + var kWeight = Symbol('kWeight'); + var kMaxWeightPerServer = Symbol('kMaxWeightPerServer'); + var kErrorPenalty = Symbol('kErrorPenalty'); + function getGreatestCommonDivisor(a, b) { + if (b === 0) return a; + return getGreatestCommonDivisor(b, a % b); + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + this[kInterceptors] = + opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if ( + this[kClients].find(pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true) + ) { + return this; + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on('disconnect', (...args) => { + const err = args[2]; + if (err && err.code === 'UND_ERR_SOCKET') { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; + } + _updateBalancedPoolStats() { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0); + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find( + pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true + ); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + get upstreams() { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map(p => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + const dispatcher = this[kClients].find( + dispatcher2 => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true + ); + if (!dispatcher) { + return; + } + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; + } + let counter = 0; + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module2.exports = BalancedPool; + } +}); + +// node_modules/undici/lib/compat/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + 'node_modules/undici/lib/compat/dispatcher-weakref.js'(exports2, module2) { + 'use strict'; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + }; + module2.exports = function () { + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + }; + }; + } +}); + +// node_modules/undici/lib/agent.js +var require_agent = __commonJS({ + 'node_modules/undici/lib/agent.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var createRedirectInterceptor = require_redirectInterceptor(); + var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); + var kOnConnect = Symbol('onConnect'); + var kOnDisconnect = Symbol('onDisconnect'); + var kOnConnectionError = Symbol('onConnectionError'); + var kMaxRedirections = Symbol('maxRedirections'); + var kOnDrain = Symbol('onDrain'); + var kFactory = Symbol('factory'); + var kFinalizer = Symbol('finalizer'); + var kOptions = Symbol('options'); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (connect && typeof connect !== 'function') { + connect = { ...connect }; + } + this[kInterceptors] = + options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kFinalizer] = new FinalizationRegistry( + /* istanbul ignore next: gc is undeterministic */ + key => { + const ref = this[kClients].get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this[kClients].delete(key); + } + } + ); + const agent = this; + this[kOnDrain] = (origin, targets) => { + agent.emit('drain', origin, [agent, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + agent.emit('connect', origin, [agent, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit('disconnect', origin, [agent, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit('connectionError', origin, [agent, ...targets], err); + }; + } + get [kRunning]() { + let ret = 0; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + ret += client[kRunning]; + } + } + return ret; + } + [kDispatch](opts, handler) { + let key; + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.'); + } + const ref = this[kClients].get(key); + let dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]); + this[kClients].set(key, new WeakRef2(dispatcher)); + this[kFinalizer].register(dispatcher, key); + } + return dispatcher.dispatch(opts, handler); + } + async [kClose]() { + const closePromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + closePromises.push(client.close()); + } + } + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + destroyPromises.push(client.destroy(err)); + } + } + await Promise.all(destroyPromises); + } + }; + module2.exports = Agent; + } +}); + +// node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + 'node_modules/undici/lib/api/readable.js'(exports2, module2) { + 'use strict'; + var assert = require('assert'); + var { Readable } = require('stream'); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom, toUSVString } = require_util(); + var Blob2; + var kConsume = Symbol('kConsume'); + var kReading = Symbol('kReading'); + var kBody = Symbol('kBody'); + var kAbort = Symbol('abort'); + var kContentType = Symbol('kContentType'); + var noop = () => {}; + module2.exports = class BodyReadable extends Readable { + constructor({ + resume, + abort, + contentType = '', + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kReading] = false; + } + destroy(err) { + if (this.destroyed) { + return this; + } + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return super.destroy(err); + } + emit(ev, ...args) { + if (ev === 'data') { + this._readableState.dataEmitted = true; + } else if (ev === 'error') { + this._readableState.errorEmitted = true; + } + return super.emit(ev, ...args); + } + on(ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true; + } + return super.on(ev, ...args); + } + addListener(ev, ...args) { + return this.on(ev, ...args); + } + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === 'data' || ev === 'readable') { + this[kReading] = this.listenerCount('data') > 0 || this.listenerCount('readable') > 0; + } + return ret; + } + removeListener(ev, ...args) { + return this.off(ev, ...args); + } + push(chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + return super.push(chunk); + } + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, 'text'); + } + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, 'json'); + } + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, 'blob'); + } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, 'arrayBuffer'); + } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); + } + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); + } + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); + } + } + return this[kBody]; + } + dump(opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; + const signal = opts && opts.signal; + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal'); + } + util.throwIfAborted(signal); + } catch (err) { + return Promise.reject(err); + } + } + if (this.closed) { + return Promise.resolve(null); + } + return new Promise((resolve, reject) => { + const signalListenerCleanup = signal + ? util.addAbortListener(signal, () => { + this.destroy(); + }) + : noop; + this.on('close', function () { + signalListenerCleanup(); + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })); + } else { + resolve(null); + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length; + if (limit <= 0) { + this.destroy(); + } + }) + .resume(); + }); + } + }; + function isLocked(self) { + return (self[kBody] && self[kBody].locked === true) || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + if (isUnusable(stream)) { + throw new TypeError('unusable'); + } + assert(!stream[kConsume]); + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + }; + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err); + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + process.nextTick(consumeStart, stream[kConsume]); + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; + } + const { _readableState: state } = consume2.stream; + for (const chunk of state.buffer) { + consumePush(consume2, chunk); + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on('end', function () { + consumeEnd(this[kConsume]); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) {} + } + function consumeEnd(consume2) { + const { type, body: body2, resolve, stream, length } = consume2; + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body2))); + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body2))); + } else if (type === 'arrayBuffer') { + const dst = new Uint8Array(length); + let pos = 0; + for (const buf of body2) { + dst.set(buf, pos); + pos += buf.byteLength; + } + resolve(dst.buffer); + } else if (type === 'blob') { + if (!Blob2) { + Blob2 = require('buffer').Blob; + } + resolve(new Blob2(body2, { type: stream[kContentType] })); + } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); + } + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; + } + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); + } + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + } +}); + +// node_modules/undici/lib/api/util.js +var require_util3 = __commonJS({ + 'node_modules/undici/lib/api/util.js'(exports2, module2) { + var assert = require('assert'); + var { ResponseStatusCodeError } = require_errors(); + var { toUSVString } = require_util(); + async function getResolveErrorBodyCallback({ callback, body: body2, contentType, statusCode, statusMessage, headers }) { + assert(body2); + let chunks = []; + let limit = 0; + for await (const chunk of body2) { + chunks.push(chunk); + limit += chunk.length; + if (limit > 128 * 1024) { + chunks = null; + break; + } + } + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick( + callback, + new ResponseStatusCodeError( + `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, + statusCode, + headers + ) + ); + return; + } + try { + if (contentType.startsWith('application/json')) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); + process.nextTick( + callback, + new ResponseStatusCodeError( + `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, + statusCode, + headers, + payload + ) + ); + return; + } + if (contentType.startsWith('text/')) { + const payload = toUSVString(Buffer.concat(chunks)); + process.nextTick( + callback, + new ResponseStatusCodeError( + `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, + statusCode, + headers, + payload + ) + ); + return; + } + } catch (err) {} + process.nextTick( + callback, + new ResponseStatusCodeError( + `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, + statusCode, + headers + ) + ); + } + module2.exports = { getResolveErrorBodyCallback }; + } +}); + +// node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + 'node_modules/undici/lib/api/abort-signal.js'(exports2, module2) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol('kListener'); + var kSignal = Symbol('kSignal'); + function abort(self) { + if (self.abort) { + self.abort(); + } else { + self.onError(new RequestAbortedError()); + } + } + function addSignal(self, signal) { + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]); + } else { + self[kSignal].removeListener('abort', self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + 'node_modules/undici/lib/api/api-request.js'(exports2, module2) { + 'use strict'; + var Readable = require_readable(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require('async_hooks'); + var { addSignal, removeSignal } = require_abort_signal(); + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + super('UNDICI_REQUEST'); + } catch (err) { + if (util.isStream(body2)) { + util.destroy(body2.on('error', util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body2; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + if (util.isStream(body2)) { + body2.on('error', err => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders['content-type']; + const body2 = new Readable({ resume, abort, contentType, highWaterMark }); + this.callback = null; + this.res = body2; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback, + body: body2, + contentType, + statusCode, + statusMessage, + headers + }); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body: body2, + context + }); + } + } + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + util.parseHeaders(trailers, this.trailers); + res.push(null); + } + onError(err) { + const { res, callback, body: body2, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body2) { + this.body = null; + util.destroy(body2, err); + } + } + }; + function request(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = request; + module2.exports.RequestHandler = RequestHandler; + } +}); + +// node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + 'node_modules/undici/lib/api/api-stream.js'(exports2, module2) { + 'use strict'; + var { finished, PassThrough } = require('stream'); + var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require('async_hooks'); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + super('UNDICI_STREAM'); + } catch (err) { + if (util.isStream(body2)) { + util.destroy(body2.on('error', util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body2; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body2)) { + body2.on('error', err => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this; + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders['content-type']; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback, + body: res, + contentType, + statusCode, + statusMessage, + headers + }); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }); + if (!res || typeof res.write !== 'function' || typeof res.end !== 'function' || typeof res.on !== 'function') { + throw new InvalidReturnValueError('expected Writable'); + } + finished(res, { readable: false }, err => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); + } + res.on('drain', resume); + this.res = res; + const needDrain = + res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; + return needDrain !== true; + } + onData(chunk) { + const { res } = this; + return res ? res.write(chunk) : true; + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + onError(err) { + const { res, callback, opaque, body: body2 } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (body2) { + this.body = null; + util.destroy(body2, err); + } + } + }; + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = stream; + } +}); + +// node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + 'node_modules/undici/lib/api/api-pipeline.js'(exports2, module2) { + 'use strict'; + var { Readable, Duplex, PassThrough } = require('stream'); + var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { AsyncResource } = require('async_hooks'); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require('assert'); + var kResume = Symbol('resume'); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + } + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } + } + _destroy(err, callback) { + this._read(); + callback(err); + } + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; + } + _read() { + this[kResume](); + } + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }; + var PipelineHandler = class extends AsyncResource { + constructor(opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler'); + } + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + super('UNDICI_PIPELINE'); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on('error', util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body: body2 } = this; + if (body2 && body2.resume) { + body2.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body: body2, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body2, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on('prefinish', () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); + } + onConnect(abort, context) { + const { ret, res } = this; + assert(!res, 'pipeline cannot be retried'); + if (ret.destroyed) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; + } + this.res = new PipelineResponse(resume); + let body2; + try { + this.handler = null; + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body2 = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }); + } catch (err) { + this.res.on('error', util.nop); + throw err; + } + if (!body2 || typeof body2.on !== 'function') { + throw new InvalidReturnValueError('expected Readable'); + } + body2 + .on('data', chunk => { + const { ret, body: body3 } = this; + if (!ret.push(chunk) && body3.pause) { + body3.pause(); + } + }) + .on('error', err => { + const { ret } = this; + util.destroy(ret, err); + }) + .on('end', () => { + const { ret } = this; + ret.push(null); + }) + .on('close', () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body2; + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + res.push(null); + } + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); + } + }; + function pipeline(opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } + } + module2.exports = pipeline; + } +}); + +// node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + 'node_modules/undici/lib/api/api-upgrade.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var { AsyncResource } = require('async_hooks'); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require('assert'); + var UpgradeHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + super('UNDICI_UPGRADE'); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = null; + } + onHeaders() { + throw new SocketError('bad upgrade', null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + assert.strictEqual(statusCode, 101); + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch( + { + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, + upgradeHandler + ); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = upgrade; + } +}); + +// node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + 'node_modules/undici/lib/api/api-connect.js'(exports2, module2) { + 'use strict'; + var { AsyncResource } = require('async_hooks'); + var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + super('UNDICI_CONNECT'); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); + } + onConnect(abort, context) { + if (!this.callback) { + throw new RequestAbortedError(); + } + this.abort = abort; + this.context = context; + } + onHeaders() { + throw new SocketError('bad connect', null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts && opts.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = connect; + } +}); + +// node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + 'node_modules/undici/lib/api/index.js'(exports2, module2) { + 'use strict'; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + 'node_modules/undici/lib/mock/mock-errors.js'(exports2, module2) { + 'use strict'; + var { UndiciError } = require_errors(); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = 'MockNotMatchedError'; + this.message = message || 'The request does not match any registered mock dispatches'; + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; + } + }; + module2.exports = { + MockNotMatchedError + }; + } +}); + +// node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + 'node_modules/undici/lib/mock/mock-symbols.js'(exports2, module2) { + 'use strict'; + module2.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') + }; + } +}); + +// node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + 'node_modules/undici/lib/mock/mock-utils.js'(exports2, module2) { + 'use strict'; + var { MockNotMatchedError } = require_mock_errors(); + var { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = require_mock_symbols(); + var { buildURL, nop } = require_util(); + var { STATUS_CODES } = require('http'); + var { + types: { isPromise } + } = require('util'); + function matchValue(match, value) { + if (typeof match === 'string') { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === 'function') { + return match(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return void 0; + } else if (typeof headers.get === 'function') { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === 'function') { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); + } + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch2.headers === 'undefined') { + return true; + } + if (typeof headers !== 'object' || typeof mockDispatch2.headers !== 'object') { + return false; + } + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; + } + function safeUrl(path) { + if (typeof path !== 'string') { + return path; + } + const pathSegments = path.split('?'); + if (pathSegments.length !== 2) { + return path; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join('?'); + } + function matchKey(mockDispatch2, { path, method, body: body2, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== 'undefined' ? matchValue(mockDispatch2.body, body2) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (typeof data === 'object') { + return JSON.stringify(data); + } else { + return data.toString(); + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches + .filter(({ consumed }) => !consumed) + .filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ body: body2 }) => + typeof body2 !== 'undefined' ? matchValue(body2, key.body) : true + ); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(mockDispatch2 => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError( + `Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'` + ); + } + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === 'function' ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } + } + function buildKey(opts) { + const { path, method, body: body2, headers, query } = opts; + return { + path, + method, + body: body2, + headers, + query + }; + } + function generateKeyValues(data) { + return Object.entries(data).reduce( + (keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], + [] + ); + } + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || 'unknown'; + } + async function getResponse(body2) { + const buffers = []; + for await (const data of body2) { + buffers.push(data); + } + return Buffer.concat(buffers).toString('utf8'); + } + function mockDispatch(opts, handler) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + } + const { + data: { statusCode, data, headers, trailers, error }, + delay, + persist + } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler.onError(error); + return true; + } + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body2 = typeof _data === 'function' ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body2)) { + body2.then(newData => handleReply(mockDispatches, newData)); + return; + } + const responseData = getResponseData(body2); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler.abort = nop; + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler.onData(Buffer.from(responseData)); + handler.onComplete(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() {} + return true; + } + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler); + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError( + `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)` + ); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler); + } else { + throw new MockNotMatchedError( + `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)` + ); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some(matcher => matchValue(matcher, url.host))) { + return true; + } + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; + } + } + module2.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName + }; + } +}); + +// node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + 'node_modules/undici/lib/mock/mock-interceptor.js'(exports2, module2) { + 'use strict'; + var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); + var { kDispatches, kDispatchKey, kDefaultHeaders, kDefaultTrailers, kContentLength, kMockDispatch } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0'); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0'); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object'); + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined'); + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET'; + } + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + const parsedURL = new URL(opts.path, 'data://'); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData(statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data); + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined'); + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined'); + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object'); + } + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyData) { + if (typeof replyData === 'function') { + const wrappedDefaultsCallback = opts => { + const resolvedData = replyData(opts); + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object'); + } + const { statusCode: statusCode2, data: data2 = '', responseOptions: responseOptions2 = {} } = resolvedData; + this.validateReplyParameters(statusCode2, data2, responseOptions2); + return { + ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) + }; + }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); + } + const [statusCode, data = '', responseOptions = {}] = [...arguments]; + this.validateReplyParameters(statusCode, data, responseOptions); + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + /** + * Mock an undici request with a defined error. + */ + replyWithError(error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined'); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); + return new MockScope(newMockDispatch); + } + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined'); + } + this[kDefaultHeaders] = headers; + return this; + } + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined'); + } + this[kDefaultTrailers] = trailers; + return this; + } + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; + } + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + 'node_modules/undici/lib/mock/mock-client.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('util'); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockClient; + } +}); + +// node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + 'node_modules/undici/lib/mock/mock-pool.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('util'); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockPool; + } +}); + +// node_modules/undici/lib/mock/pluralizer.js +var require_pluralizer = __commonJS({ + 'node_modules/undici/lib/mock/pluralizer.js'(exports2, module2) { + 'use strict'; + var singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' + }; + var plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' + }; + module2.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; + } + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; + } + }; + } +}); + +// node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + 'node_modules/undici/lib/mock/pending-interceptors-formatter.js'(exports2, module2) { + 'use strict'; + var { Transform } = require('stream'); + var { Console } = require('console'); + module2.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '\u2705' : '\u274C', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + 'node_modules/undici/lib/mock/mock-agent.js'(exports2, module2) { + 'use strict'; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { kAgent, kMockAgentSet, kMockAgentGet, kDispatches, kIsMockActive, kNetConnect, kGetNetConnect, kOptions, kFactory } = + require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var FakeWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value; + } + }; + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts && opts.agent && typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); + } + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler); + } + async close() { + await this[kAgent].close(); + this[kClients].clear(); + } + deactivate() { + this[kIsMockActive] = false; + } + activate() { + this[kIsMockActive] = true; + } + enableNetConnect(matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.'); + } + } + disableNetConnect() { + this[kNetConnect] = false; + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)); + } + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions); + } + [kMockAgentGet](origin) { + const ref = this[kClients].get(origin); + if (ref) { + return ref.deref(); + } + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999'); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref(); + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length); + throw new UndiciError( + ` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim() + ); + } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/undici/lib/proxy-agent.js +var require_proxy_agent = __commonJS({ + 'node_modules/undici/lib/proxy-agent.js'(exports2, module2) { + 'use strict'; + var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols(); + var { URL: URL3 } = require('url'); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var buildConnector = require_connect(); + var kAgent = Symbol('proxy agent'); + var kClient = Symbol('proxy client'); + var kProxyHeaders = Symbol('proxy headers'); + var kRequestTls = Symbol('request tls settings'); + var kProxyTls = Symbol('proxy tls settings'); + var kConnectEndpoint = Symbol('connect endpoint function'); + function defaultProtocolPort(protocol) { + return protocol === 'https:' ? 443 : 80; + } + function buildProxyOptions(opts) { + if (typeof opts === 'string') { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory'); + } + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + }; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var ProxyAgent = class extends DispatcherBase { + constructor(opts) { + super(opts); + this[kProxy] = buildProxyOptions(opts); + this[kAgent] = new Agent(opts); + this[kInterceptors] = + opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : []; + if (typeof opts === 'string') { + opts = { uri: opts }; + } + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory'); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.'); + } + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + const resolvedUrl = new URL3(opts.uri); + const { origin, port, host, username, password } = resolvedUrl; + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token'); + } else if (opts.auth) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token; + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from( + `${decodeURIComponent(username)}:${decodeURIComponent(password)}` + ).toString('base64')}`; + } + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + this[kClient] = clientFactory(resolvedUrl, { connect }); + this[kAgent] = new Agent({ + ...opts, + connect: async (opts2, callback) => { + let requestedHost = opts2.host; + if (!opts2.port) { + requestedHost += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host + } + }); + if (statusCode !== 200) { + socket.on('error', () => {}).destroy(); + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); + } + if (opts2.protocol !== 'https:') { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + callback(err); + } + } + }); + } + dispatch(opts, handler) { + const { host } = new URL3(opts.origin); + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ); + } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find(key => key.toLowerCase() === 'proxy-authorization'); + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor'); + } + } + module2.exports = ProxyAgent; + } +}); + +// node_modules/undici/lib/handler/RetryHandler.js +var require_RetryHandler = __commonJS({ + 'node_modules/undici/lib/handler/RetryHandler.js'(exports2, module2) { + var assert = require('assert'); + var { kRetryHandlerDefaultRetry } = require_symbols(); + var { RequestRetryError } = require_errors(); + var { isDisturbed, parseHeaders, parseRangeHeader } = require_util(); + function calculateRetryAfterHeader(retryAfter) { + const current = Date.now(); + const diff = new Date(retryAfter).getTime() - current; + return diff; + } + var RetryHandler = class _RetryHandler { + constructor(opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts; + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {}; + this.dispatch = handlers.dispatch; + this.handler = handlers.handler; + this.opts = dispatchOpts; + this.abort = null; + this.aborted = false; + this.retryOpts = { + retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1e3, + // 30s, + timeout: minTimeout ?? 500, + // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE' + ] + }; + this.retryCount = 0; + this.start = 0; + this.end = null; + this.etag = null; + this.resume = null; + this.handler.onConnect(reason => { + this.aborted = true; + if (this.abort) { + this.abort(reason); + } else { + this.reason = reason; + } + }); + } + onRequestSent() { + if (this.handler.onRequestSent) { + this.handler.onRequestSent(); + } + } + onUpgrade(statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket); + } + } + onConnect(abort) { + if (this.aborted) { + abort(this.reason); + } else { + this.abort = abort; + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk); + } + static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { + const { statusCode, code, headers } = err; + const { method, retryOptions } = opts; + const { maxRetries, timeout, maxTimeout, timeoutFactor, statusCodes, errorCodes, methods } = retryOptions; + let { counter, currentTimeout } = state; + currentTimeout = currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout; + if (code && code !== 'UND_ERR_REQ_RETRY' && code !== 'UND_ERR_SOCKET' && !errorCodes.includes(code)) { + cb(err); + return; + } + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err); + return; + } + if (statusCode != null && Array.isArray(statusCodes) && !statusCodes.includes(statusCode)) { + cb(err); + return; + } + if (counter > maxRetries) { + cb(err); + return; + } + let retryAfterHeader = headers != null && headers['retry-after']; + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader); + retryAfterHeader = isNaN(retryAfterHeader) ? calculateRetryAfterHeader(retryAfterHeader) : retryAfterHeader * 1e3; + } + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout); + state.currentTimeout = retryTimeout; + setTimeout(() => cb(null), retryTimeout); + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders); + this.retryCount += 1; + if (statusCode >= 300) { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + ); + return false; + } + if (this.resume != null) { + this.resume = null; + if (statusCode !== 206) { + return true; + } + const contentRange = parseRangeHeader(headers['content-range']); + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + count: this.retryCount + }) + ); + return false; + } + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + count: this.retryCount + }) + ); + return false; + } + const { start, size, end = size } = contentRange; + assert(this.start === start, 'content-range mismatch'); + assert(this.end == null || this.end === end, 'content-range mismatch'); + this.resume = resume; + return true; + } + if (this.end == null) { + if (statusCode === 206) { + const range = parseRangeHeader(headers['content-range']); + if (range == null) { + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + const { start, size, end = size } = range; + assert(start != null && Number.isFinite(start) && this.start !== start, 'content-range mismatch'); + assert(Number.isFinite(start)); + assert(end != null && Number.isFinite(end) && this.end !== end, 'invalid content-length'); + this.start = start; + this.end = end; + } + if (this.end == null) { + const contentLength = headers['content-length']; + this.end = contentLength != null ? Number(contentLength) : null; + } + assert(Number.isFinite(this.start)); + assert(this.end == null || Number.isFinite(this.end), 'invalid content-length'); + this.resume = resume; + this.etag = headers.etag != null ? headers.etag : null; + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + const err = new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }); + this.abort(err); + return false; + } + onData(chunk) { + this.start += chunk.length; + return this.handler.onData(chunk); + } + onComplete(rawTrailers) { + this.retryCount = 0; + return this.handler.onComplete(rawTrailers); + } + onError(err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err); + } + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ); + function onRetry(err2) { + if (err2 != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err2); + } + if (this.start !== 0) { + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + range: `bytes=${this.start}-${this.end ?? ''}` + } + }; + } + try { + this.dispatch(this.opts, this); + } catch (err3) { + this.handler.onError(err3); + } + } + } + }; + module2.exports = RetryHandler; + } +}); + +// node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + 'node_modules/undici/lib/global.js'(exports2, module2) { + 'use strict'; + var globalDispatcher = Symbol.for('undici.globalDispatcher.1'); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent'); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// node_modules/undici/lib/handler/DecoratorHandler.js +var require_DecoratorHandler = __commonJS({ + 'node_modules/undici/lib/handler/DecoratorHandler.js'(exports2, module2) { + 'use strict'; + module2.exports = class DecoratorHandler { + constructor(handler) { + this.handler = handler; + } + onConnect(...args) { + return this.handler.onConnect(...args); + } + onError(...args) { + return this.handler.onError(...args); + } + onUpgrade(...args) { + return this.handler.onUpgrade(...args); + } + onHeaders(...args) { + return this.handler.onHeaders(...args); + } + onData(...args) { + return this.handler.onData(...args); + } + onComplete(...args) { + return this.handler.onComplete(...args); + } + onBodySent(...args) { + return this.handler.onBodySent(...args); + } + }; + } +}); + +// node_modules/undici/lib/fetch/headers.js +var require_headers = __commonJS({ + 'node_modules/undici/lib/fetch/headers.js'(exports2, module2) { + 'use strict'; + var { kHeadersList, kConstruct } = require_symbols(); + var { kGuard } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { makeIterator, isValidHeaderName, isValidHeaderValue } = require_util2(); + var { webidl } = require_webidl(); + var assert = require('assert'); + var kHeadersMap = Symbol('headers map'); + var kHeadersSortedMap = Symbol('headers map sorted'); + function isHTTPWhiteSpaceCharCode(code) { + return code === 10 || code === 13 || code === 9 || code === 32; + } + function headerValueNormalize(potentialValue) { + let i = 0; + let j = potentialValue.length; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i]; + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + appendHeader(headers, header[0], header[1]); + } + } else if (typeof object === 'object' && object !== null) { + const keys = Object.keys(object); + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); + } + } + function appendHeader(headers, name, value) { + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }); + } + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (headers[kGuard] === 'request-no-cors') { + } + return headers[kHeadersList].append(name, value); + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies === null ? null : [...init.cookies]; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + // https://fetch.spec.whatwg.org/#header-list-contains + contains(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + // https://fetch.spec.whatwg.org/#concept-header-list-append + append(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + const exists = this[kHeadersMap].get(lowercaseName); + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', '; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); + } + if (lowercaseName === 'set-cookie') { + this.cookies ??= []; + this.cookies.push(value); + } + } + // https://fetch.spec.whatwg.org/#concept-header-list-set + set(name, value) { + this[kHeadersSortedMap] = null; + const lowercaseName = name.toLowerCase(); + if (lowercaseName === 'set-cookie') { + this.cookies = [value]; + } + this[kHeadersMap].set(lowercaseName, { name, value }); + } + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + if (name === 'set-cookie') { + this.cookies = null; + } + this[kHeadersMap].delete(name); + } + // https://fetch.spec.whatwg.org/#concept-header-list-get + get(name) { + const value = this[kHeadersMap].get(name.toLowerCase()); + return value === void 0 ? null : value.value; + } + *[Symbol.iterator]() { + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; + } + }; + var Headers = class _Headers { + constructor(init = void 0) { + if (init === kConstruct) { + return; + } + this[kHeadersList] = new HeadersList(); + this[kGuard] = 'none'; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init); + fill(this, init); + } + } + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + return appendHeader(this, name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }); + } + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (this[kGuard] === 'request-no-cors') { + } + if (!this[kHeadersList].contains(name)) { + return; + } + this[kHeadersList].delete(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }); + } + return this[kHeadersList].get(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }); + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }); + } + return this[kHeadersList].contains(name); + } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }); + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }); + } + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable'); + } else if (this[kGuard] === 'request-no-cors') { + } + this[kHeadersList].set(name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this[kHeadersList].cookies; + if (list) { + return [...list]; + } + return []; + } + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap]; + } + const headers = []; + const names = [...this[kHeadersList]].sort((a, b) => (a[0] < b[0] ? -1 : 1)); + const cookies = this[kHeadersList].cookies; + for (let i = 0; i < names.length; ++i) { + const [name, value] = names[i]; + if (name === 'set-cookie') { + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]); + } + } else { + assert(value !== null); + headers.push([name, value]); + } + } + this[kHeadersList][kHeadersSortedMap] = headers; + return headers; + } + keys() { + webidl.brandCheck(this, _Headers); + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap]; + return makeIterator(() => value, 'Headers', 'key'); + } + return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'key'); + } + values() { + webidl.brandCheck(this, _Headers); + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap]; + return makeIterator(() => value, 'Headers', 'value'); + } + return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'value'); + } + entries() { + webidl.brandCheck(this, _Headers); + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap]; + return makeIterator(() => value, 'Headers', 'key+value'); + } + return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'key+value'); + } + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach(callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }); + if (typeof callbackFn !== 'function') { + throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + [Symbol.for('nodejs.util.inspect.custom')]() { + webidl.brandCheck(this, _Headers); + return this[kHeadersList]; + } + }; + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + } + }); + webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence>'](V); + } + return webidl.converters['record'](V); + } + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); + }; + module2.exports = { + fill, + Headers, + HeadersList + }; + } +}); + +// node_modules/undici/lib/fetch/response.js +var require_response = __commonJS({ + 'node_modules/undici/lib/fetch/response.js'(exports2, module2) { + 'use strict'; + var { Headers, HeadersList, fill } = require_headers(); + var { extractBody, cloneBody, mixinBody } = require_body(); + var util = require_util(); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode + } = require_util2(); + var { redirectStatusSet, nullBodyStatus, DOMException: DOMException2 } = require_constants2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList, kConstruct } = require_symbols(); + var assert = require('assert'); + var { types } = require('util'); + var ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream; + var textEncoder = new TextEncoder('utf-8'); + var Response = class _Response { + // Creates network error Response. + static error() { + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kState] = makeNetworkError(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); + const body2 = extractBody(bytes); + const relevantRealm = { settingsObject: {} }; + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = 'response'; + responseObject[kHeaders][kRealm] = relevantRealm; + initializeResponse(responseObject, init, { body: body2[0], type: 'application/json' }); + return responseObject; + } + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + const relevantRealm = { settingsObject: {} }; + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }); + url = webidl.converters.USVString(url); + status = webidl.converters['unsigned short'](status); + let parsedURL; + try { + parsedURL = new URL(url, getGlobalOrigin()); + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status); + } + const responseObject = new _Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append('location', value); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body2 = null, init = {}) { + if (body2 !== null) { + body2 = webidl.converters.BodyInit(body2); + } + init = webidl.converters.ResponseInit(init); + this[kRealm] = { settingsObject: {} }; + this[kState] = makeResponse({}); + this[kHeaders] = new Headers(kConstruct); + this[kHeaders][kGuard] = 'response'; + this[kHeaders][kHeadersList] = this[kState].headersList; + this[kHeaders][kRealm] = this[kRealm]; + let bodyWithType = null; + if (body2 != null) { + const [extractedBody, type] = extractBody(body2); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ''; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (this.bodyUsed || (this.body && this.body.locked)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }); + } + const clonedResponse = cloneResponse(this[kState]); + const clonedResponseObject = new _Response(); + clonedResponseObject[kState] = clonedResponse; + clonedResponseObject[kRealm] = this[kRealm]; + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + return clonedResponseObject; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse(cloneResponse(response.internalResponse), response.type); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: 'error', + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === 'basic') { + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }); + } else if (type === 'cors') { + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }); + } else if (type === 'opaque') { + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }); + } else if (type === 'opaqueredirect') { + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(isCancelled(fetchParams)); + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException2('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException2('Request was cancelled.'), { cause: err })); + } + function initializeResponse(response, init, body2) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ('statusText' in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText'); + } + } + if ('status' in init && init.status != null) { + response[kState].status = init.status; + } + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body2) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }); + } + response[kState].body = body2.body; + if (body2.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body2.type); + } + } + } + webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); + webidl.converters.FormData = webidl.interfaceConverter(FormData); + webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); + webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + if (V?.[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } + ]); + module2.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse + }; + } +}); + +// node_modules/undici/lib/fetch/request.js +var require_request2 = __commonJS({ + 'node_modules/undici/lib/fetch/request.js'(exports2, module2) { + 'use strict'; + var { extractBody, mixinBody, cloneBody } = require_body(); + var { Headers, fill: fillHeaders, HeadersList } = require_headers(); + var { FinalizationRegistry } = require_dispatcher_weakref()(); + var util = require_util(); + var { isValidHTTPToken, sameOrigin, normalizeMethod, makePolicyContainer, normalizeMethodRecord } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants2(); + var { kEnumerableProperty } = util; + var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { getGlobalOrigin } = require_global(); + var { URLSerializer } = require_dataURL(); + var { kHeadersList, kConstruct } = require_symbols(); + var assert = require('assert'); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events'); + var TransformStream = globalThis.TransformStream; + var kAbortController = Symbol('abortController'); + var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort); + }); + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + if (input === kConstruct) { + return; + } + webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin() { + return this.baseUrl?.origin; + }, + policyContainer: makePolicyContainer() + } + }; + let request = null; + let fallbackMode = null; + const baseUrl = this[kRealm].settingsObject.baseUrl; + let signal = null; + if (typeof input === 'string') { + let parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError('Request cannot be constructed from a URL that includes credentials: ' + input); + } + request = makeRequest({ urlList: [parsedURL] }); + fallbackMode = 'cors'; + } else { + assert(input instanceof _Request); + request = input[kState]; + signal = input[kSignal]; + } + const origin = this[kRealm].settingsObject.origin; + let window = 'client'; + if (request.window?.constructor?.name === 'EnvironmentSettingsObject' && sameOrigin(request.window, origin)) { + window = request.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ('window' in init) { + window = 'no-window'; + } + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }); + const initHasKey = Object.keys(init).length !== 0; + if (initHasKey) { + if (request.mode === 'navigate') { + request.mode = 'same-origin'; + } + request.reloadNavigation = false; + request.historyNavigation = false; + request.origin = 'client'; + request.referrer = 'client'; + request.referrerPolicy = ''; + request.url = request.urlList[request.urlList.length - 1]; + request.urlList = [request.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === '') { + request.referrer = 'no-referrer'; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) + ) { + request.referrer = 'client'; + } else { + request.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }); + } + if (mode != null) { + request.mode = mode; + } + if (init.credentials !== void 0) { + request.credentials = init.credentials; + } + if (init.cache !== void 0) { + request.cache = init.cache; + } + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); + } + if (init.redirect !== void 0) { + request.redirect = init.redirect; + } + if (init.integrity != null) { + request.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`); + } + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError(`'${method}' HTTP method is unsupported.`); + } + method = normalizeMethodRecord[method] ?? normalizeMethod(method); + request.method = method; + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request; + const ac = new AbortController(); + this[kSignal] = ac.signal; + this[kSignal][kRealm] = this[kRealm]; + if (signal != null) { + if (!signal || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') { + throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal."); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = function () { + const ac2 = acRef.deref(); + if (ac2 !== void 0) { + ac2.abort(this.reason); + } + }; + try { + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal); + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal); + } + } catch {} + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }); + } + } + this[kHeaders] = new Headers(kConstruct); + this[kHeaders][kHeadersList] = request.headersList; + this[kHeaders][kGuard] = 'request'; + this[kHeaders][kRealm] = this[kRealm]; + if (mode === 'no-cors') { + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError(`'${request.method} is unsupported in no-cors mode.`); + } + this[kHeaders][kGuard] = 'request-no-cors'; + } + if (initHasKey) { + const headersList = this[kHeaders][kHeadersList]; + const headers = init.headers !== void 0 ? init.headers : new HeadersList(headersList); + headersList.clear(); + if (headers instanceof HeadersList) { + for (const [key, val] of headers) { + headersList.append(key, val); + } + headersList.cookies = headers.cookies; + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request.method === 'GET' || request.method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body.'); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody(init.body, request.keepalive); + initBody = extractedBody; + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.'); + } + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"'); + } + request.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError('Cannot construct a Request with a Request object that has already been used.'); + } + if (!TransformStream) { + TransformStream = require('stream/web').TransformStream; + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === 'no-referrer') { + return ''; + } + if (this[kState].referrer === 'client') { + return 'about:client'; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return 'half'; + } + // Returns a clone of request. + clone() { + webidl.brandCheck(this, _Request); + if (this.bodyUsed || this.body?.locked) { + throw new TypeError('unusable'); + } + const clonedRequest = cloneRequest(this[kState]); + const clonedRequestObject = new _Request(kConstruct); + clonedRequestObject[kState] = clonedRequest; + clonedRequestObject[kRealm] = this[kRealm]; + clonedRequestObject[kHeaders] = new Headers(kConstruct); + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + util.addAbortListener(this.signal, () => { + ac.abort(this.signal.reason); + }); + } + clonedRequestObject[kSignal] = ac.signal; + return clonedRequestObject; + } + }; + mixinBody(Request); + function makeRequest(init) { + const request = { + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + request.url = request.urlList[0]; + return request; + } + function cloneRequest(request) { + const newRequest = makeRequest({ ...request, body: null }); + if (request.body != null) { + newRequest.body = cloneBody(request.body); + } + return newRequest; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter(Request); + webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter(webidl.converters.BodyInit) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter(signal => webidl.converters.AbortSignal(signal, { strict: false })) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } + ]); + module2.exports = { Request, makeRequest }; + } +}); + +// node_modules/undici/lib/fetch/index.js +var require_fetch = __commonJS({ + 'node_modules/undici/lib/fetch/index.js'(exports2, module2) { + 'use strict'; + var { Response, makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse } = require_response(); + var { Headers } = require_headers(); + var { Request, makeRequest } = require_request2(); + var zlib = require('zlib'); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme + } = require_util2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var assert = require('assert'); + var { safelyExtractBody } = require_body(); + var { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException: DOMException2 + } = require_constants2(); + var { kHeadersList } = require_symbols(); + var EE = require('events'); + var { Readable, pipeline } = require('stream'); + var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util(); + var { dataURLProcessor, serializeAMimeType } = require_dataURL(); + var { TransformStream } = require('stream/web'); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = require('http'); + var GET_OR_HEAD = ['GET', 'HEAD']; + var resolveObjectURL; + var ReadableStream = globalThis.ReadableStream; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = 'ongoing'; + this.setMaxListeners(21); + } + terminate(reason) { + if (this.state !== 'ongoing') { + return; + } + this.state = 'terminated'; + this.connection?.destroy(reason); + this.emit('terminated', reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error) { + if (this.state !== 'ongoing') { + return; + } + this.state = 'aborted'; + if (!error) { + error = new DOMException2('The operation was aborted.', 'AbortError'); + } + this.serializedAbortReason = error; + this.connection?.destroy(error); + this.emit('terminated', error); + } + }; + function fetch(input, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }); + const p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request.client.globalObject; + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none'; + } + let responseObject = null; + const relevantRealm = null; + let locallyAborted = false; + let controller = null; + addAbortListener(requestObject.signal, () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + abortFetch(p, request, responseObject, requestObject.signal.reason); + }); + const handleFetchDone = response => finalizeAndReportTiming(response, 'fetch'); + const processResponse = response => { + if (locallyAborted) { + return Promise.resolve(); + } + if (response.aborted) { + abortFetch(p, request, responseObject, controller.serializedAbortReason); + return Promise.resolve(); + } + if (response.type === 'error') { + p.reject(Object.assign(new TypeError('fetch failed'), { cause: response.error })); + return Promise.resolve(); + } + responseObject = new Response(); + responseObject[kState] = response; + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseObject[kHeaders][kRealm] = relevantRealm; + p.resolve(responseObject); + }; + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = 'other') { + if (response.type === 'error' && response.aborted) { + return; + } + if (!response.urlList?.length) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ''; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); + } + function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { + if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState); + } + } + function abortFetch(p, request, responseObject, error) { + if (!error) { + error = new DOMException2('The operation was aborted.', 'AbortError'); + } + p.reject(error); + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch(err => { + if (err.code === 'ERR_INVALID_STATE') { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch(err => { + if (err.code === 'ERR_INVALID_STATE') { + return; + } + throw err; + }); + } + } + function fetching({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher + // undici + }) { + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request.client != null) { + taskDestination = request.client.globalObject; + crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability; + } + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert(!request.body || request.body.stream); + if (request.window === 'client') { + request.window = request.client?.globalObject?.constructor?.name === 'Window' ? request.client : 'no-window'; + } + if (request.origin === 'client') { + request.origin = request.client?.origin; + } + if (request.policyContainer === 'client') { + if (request.client != null) { + request.policyContainer = clonePolicyContainer(request.client.policyContainer); + } else { + request.policyContainer = makePolicyContainer(); + } + } + if (!request.headersList.contains('accept')) { + const value = '*/*'; + request.headersList.append('accept', value); + } + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*'); + } + if (request.priority === null) { + } + if (subresourceSet.has(request.destination)) { + } + mainFetch(fetchParams).catch(err => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request = fetchParams.request; + let response = null; + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only'); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request); + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port'); + } + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy; + } + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || // request’s current URL’s scheme is "data" + currentURL.protocol === 'data:' || // - request’s mode is "navigate" or "websocket" + request.mode === 'navigate' || + request.mode === 'websocket' + ) { + request.responseTainting = 'basic'; + return await schemeFetch(fetchParams); + } + if (request.mode === 'same-origin') { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request.mode === 'no-cors') { + if (request.redirect !== 'follow') { + return makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'); + } + request.responseTainting = 'opaque'; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + return makeNetworkError('URL scheme must be a HTTP(S) scheme'); + } + request.responseTainting = 'cors'; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request.responseTainting === 'cors') { + } + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic'); + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors'); + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque'); + } else { + assert(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList); + } + if (!request.timingAllowFailed) { + response.timingAllowPassed = true; + } + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range') + ) { + response = internalResponse = makeNetworkError(); + } + if ( + response.status !== 0 && + (request.method === 'HEAD' || request.method === 'CONNECT' || nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request.integrity) { + const processBodyError = reason => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = bytes => { + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch'); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request); + switch (scheme) { + case 'about:': { + return Promise.resolve(makeNetworkError('about scheme is not supported')); + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = require('buffer').resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')); + } + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')); + } + const bodyWithType = safelyExtractBody(blobURLEntryObject); + const body2 = bodyWithType[0]; + const length = isomorphicEncode(`${body2.length}`); + const type = bodyWithType[1] ?? ''; + const response = makeResponse({ + statusText: 'OK', + headersList: [ + ['content-length', { name: 'Content-Length', value: length }], + ['content-type', { name: 'Content-Type', value: type }] + ] + }); + response.body = body2; + return Promise.resolve(response); + } + case 'data:': { + const currentURL = requestCurrentURL(request); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve( + makeResponse({ + statusText: 'OK', + headersList: [['content-type', { name: 'Content-Type', value: mimeType }]], + body: safelyExtractBody(dataURLStruct.body)[0] + }) + ); + } + case 'file:': { + return Promise.resolve(makeNetworkError('not implemented... yet...')); + } + case 'http:': + case 'https:': { + return httpFetch(fetchParams).catch(err => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + if (response.type === 'error') { + response.urlList = [fetchParams.request.urlList[0]]; + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }); + } + const processResponseEndOfBody = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)); + } + if (response.body == null) { + processResponseEndOfBody(); + } else { + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk); + }; + const transformStream = new TransformStream( + { + start() {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, + { + size() { + return 1; + } + }, + { + size() { + return 1; + } + } + ); + response.body = { stream: response.body.stream.pipeThrough(transformStream) }; + } + if (fetchParams.processResponseConsumeBody != null) { + const processBody = nullOrBytes => fetchParams.processResponseConsumeBody(response, nullOrBytes); + const processBodyError = failure => fetchParams.processResponseConsumeBody(response, failure); + if (response.body == null) { + queueMicrotask(() => processBody(null)); + } else { + return fullyReadBody(response.body, processBody, processBodyError); + } + return Promise.resolve(); + } + } + async function httpFetch(fetchParams) { + const request = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request.serviceWorkers === 'all') { + } + if (response === null) { + if (request.redirect === 'follow') { + request.serviceWorkers = 'none'; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request.responseTainting === 'cors' && corsCheck(request, response) === 'failure') { + return makeNetworkError('cors failure'); + } + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true; + } + } + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck(request.origin, request.client, request.destination, actualResponse) === 'blocked' + ) { + return makeNetworkError('blocked'); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy(); + } + if (request.redirect === 'error') { + response = makeNetworkError('unexpected redirect'); + } else if (request.redirect === 'manual') { + response = actualResponse; + } else if (request.redirect === 'follow') { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL(actualResponse, requestCurrentURL(request).hash); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')); + } + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')); + } + request.redirectCount += 1; + if (request.mode === 'cors' && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request.responseTainting === 'cors' && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"')); + } + if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) + ) { + request.method = 'GET'; + request.body = null; + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + request.headersList.delete('authorization'); + request.headersList.delete('proxy-authorization', true); + request.headersList.delete('cookie'); + request.headersList.delete('host'); + } + if (request.body != null) { + assert(request.body.source != null); + request.body = safelyExtractBody(request.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime( + fetchParams.crossOriginIsolatedCapability + ); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams; + httpRequest = request; + } else { + httpRequest = makeRequest(request); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = + request.credentials === 'include' || (request.credentials === 'same-origin' && request.responseTainting === 'basic'); + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ['POST', 'PUT'].includes(httpRequest.method)) { + contentLengthHeaderValue = '0'; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node'); + } + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since') || + httpRequest.headersList.contains('if-none-match') || + httpRequest.headersList.contains('if-unmodified-since') || + httpRequest.headersList.contains('if-match') || + httpRequest.headersList.contains('if-range')) + ) { + httpRequest.cache = 'no-store'; + } + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control') + ) { + httpRequest.headersList.append('cache-control', 'max-age=0'); + } + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache'); + } + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache'); + } + } + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity'); + } + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate'); + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate'); + } + } + httpRequest.headersList.delete('host'); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = 'no-store'; + } + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + } + if (response == null) { + if (httpRequest.mode === 'only-if-cached') { + return makeNetworkError('only if cached'); + } + const forwardResponse = await httpNetworkFetch(httpFetchParams, includeCredentials, isNewConnectionFetch); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request.window === 'no-window') { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError('proxy authentication required'); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err) { + if (!this.destroyed) { + this.destroyed = true; + this.abort?.(err ?? new DOMException2('The operation was aborted.', 'AbortError')); + } + } + }; + const request = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request.cache = 'no-store'; + } + const newConnection = forceNewConnection ? 'yes' : 'no'; + if (request.mode === 'websocket') { + } else { + } + let requestBody = null; + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request.body != null) { + const processBodyChunk = async function* (bytes) { + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = e => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === 'AbortError') { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = (async function* () { + try { + for await (const bytes of request.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + })(); + } + try { + const { body: body2, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator = body2[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === 'AbortError') { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = () => { + fetchParams.controller.resume(); + }; + const cancelAlgorithm = reason => { + fetchParams.controller.abort(reason); + }; + if (!ReadableStream) { + ReadableStream = require('stream/web').ReadableStream; + } + const stream = new ReadableStream( + { + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + } + }, + { + highWaterMark: 0, + size() { + return 1; + } + } + ); + response.body = { stream }; + fetchParams.controller.on('terminated', onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += bytes?.byteLength ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (!fetchParams.controller.controller.desiredSize) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error( + new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : void 0 + }) + ); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + async function dispatch({ body: body2 }) { + const url = requestCurrentURL(request); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve, reject) => + agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive + ? request.body && (request.body.source || request.body.stream) + : body2, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + if (connection.destroyed) { + abort(new DOMException2('The operation was aborted.', 'AbortError')); + } else { + fetchParams.controller.on('terminated', abort); + this.abort = connection.abort = abort; + } + }, + onHeaders(status, headersList, resume, statusText) { + if (status < 200) { + return; + } + let codings = []; + let location = ''; + const headers = new Headers(); + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1'); + const val = headersList[n + 1].toString('latin1'); + if (key.toLowerCase() === 'content-encoding') { + codings = val + .toLowerCase() + .split(',') + .map(x => x.trim()); + } else if (key.toLowerCase() === 'location') { + location = val; + } + headers[kHeadersList].append(key, val); + } + } else { + const keys = Object.keys(headersList); + for (const key of keys) { + const val = headersList[key]; + if (key.toLowerCase() === 'content-encoding') { + codings = val + .toLowerCase() + .split(',') + .map(x => x.trim()) + .reverse(); + } else if (key.toLowerCase() === 'location') { + location = val; + } + headers[kHeadersList].append(key, val); + } + } + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = request.redirect === 'follow' && location && redirectStatusSet.has(status); + if ( + request.method !== 'HEAD' && + request.method !== 'CONNECT' && + !nullBodyStatus.includes(status) && + !willFollow + ) { + for (const coding of codings) { + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push( + zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + }) + ); + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()); + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } + } + } + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length ? pipeline(this.body, ...decoders, () => {}) : this.body.on('error', () => {}) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + this.body?.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade(status, headersList, socket) { + if (status !== 101) { + return; + } + const headers = new Headers(); + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1'); + const val = headersList[n + 1].toString('latin1'); + headers[kHeadersList].append(key, val); + } + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }); + return true; + } + } + ) + ); + } + } + module2.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/undici/lib/fileapi/symbols.js +var require_symbols3 = __commonJS({ + 'node_modules/undici/lib/fileapi/symbols.js'(exports2, module2) { + 'use strict'; + module2.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') + }; + } +}); + +// node_modules/undici/lib/fileapi/progressevent.js +var require_progressevent = __commonJS({ + 'node_modules/undici/lib/fileapi/progressevent.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var kState = Symbol('ProgressEvent state'); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } + ]); + module2.exports = { + ProgressEvent + }; + } +}); + +// node_modules/undici/lib/fileapi/encoding.js +var require_encoding = __commonJS({ + 'node_modules/undici/lib/fileapi/encoding.js'(exports2, module2) { + 'use strict'; + function getEncoding(label) { + if (!label) { + return 'failure'; + } + switch (label.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'; + } + } + module2.exports = { + getEncoding + }; + } +}); + +// node_modules/undici/lib/fileapi/util.js +var require_util4 = __commonJS({ + 'node_modules/undici/lib/fileapi/util.js'(exports2, module2) { + 'use strict'; + var { kState, kError, kResult, kAborted, kLastProgressEventFired } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { DOMException: DOMException2 } = require_constants2(); + var { serializeAMimeType, parseMIMEType } = require_dataURL(); + var { types } = require('util'); + var { StringDecoder } = require('string_decoder'); + var { btoa } = require('buffer'); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === 'loading') { + throw new DOMException2('Invalid state', 'InvalidStateError'); + } + fr[kState] = 'loading'; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr); + }); + } + isFirstChunk = false; + if (!done && types.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent('progress', fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = 'done'; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent('load', fr); + } catch (error) { + fr[kError] = error; + fireAProgressEvent('error', fr); + } + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + break; + } + } catch (error) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = 'done'; + fr[kError] = error; + fireAProgressEvent('error', fr); + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case 'DataURL': { + let dataURL = 'data:'; + const parsed = parseMIMEType(mimeType || 'application/octet-stream'); + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed); + } + dataURL += ';base64,'; + const decoder = new StringDecoder('latin1'); + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case 'Text': { + let encoding = 'failure'; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === 'failure' && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== 'failure') { + encoding = getEncoding(type2.parameters.get('charset')); + } + } + if (encoding === 'failure') { + encoding = 'UTF-8'; + } + return decode(bytes, encoding); + } + case 'ArrayBuffer': { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case 'BinaryString': { + let binaryString = ''; + const decoder = new StringDecoder('latin1'); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === 'UTF-8' ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return 'UTF-8'; + } else if (a === 254 && b === 255) { + return 'UTF-16BE'; + } else if (a === 255 && b === 254) { + return 'UTF-16LE'; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module2.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// node_modules/undici/lib/fileapi/filereader.js +var require_filereader = __commonJS({ + 'node_modules/undici/lib/fileapi/filereader.js'(exports2, module2) { + 'use strict'; + var { staticPropertyDescriptors, readOperation, fireAProgressEvent } = require_util4(); + var { kState, kError, kResult, kEvents, kAborted } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = 'empty'; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'ArrayBuffer'); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'BinaryString'); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding); + } + readOperation(this, blob, 'Text', encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'DataURL'); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null; + return; + } + if (this[kState] === 'loading') { + this[kState] = 'done'; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent('abort', this); + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case 'empty': + return this.EMPTY; + case 'loading': + return this.LOADING; + case 'done': + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend); + } + if (typeof fn === 'function') { + this[kEvents].loadend = fn; + this.addEventListener('loadend', fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error); + } + if (typeof fn === 'function') { + this[kEvents].error = fn; + this.addEventListener('error', fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart); + } + if (typeof fn === 'function') { + this[kEvents].loadstart = fn; + this.addEventListener('loadstart', fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress); + } + if (typeof fn === 'function') { + this[kEvents].progress = fn; + this.addEventListener('progress', fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load); + } + if (typeof fn === 'function') { + this[kEvents].load = fn; + this.addEventListener('load', fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort); + } + if (typeof fn === 'function') { + this[kEvents].abort = fn; + this.addEventListener('abort', fn); + } else { + this[kEvents].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: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module2.exports = { + FileReader + }; + } +}); + +// node_modules/undici/lib/cache/symbols.js +var require_symbols4 = __commonJS({ + 'node_modules/undici/lib/cache/symbols.js'(exports2, module2) { + 'use strict'; + module2.exports = { + kConstruct: require_symbols().kConstruct + }; + } +}); + +// node_modules/undici/lib/cache/util.js +var require_util5 = __commonJS({ + 'node_modules/undici/lib/cache/util.js'(exports2, module2) { + 'use strict'; + var assert = require('assert'); + var { URLSerializer } = require_dataURL(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function fieldValues(header) { + assert(header !== null); + const values = []; + for (let value of header.split(',')) { + value = value.trim(); + if (!value.length) { + continue; + } else if (!isValidHeaderName(value)) { + continue; + } + values.push(value); + } + return values; + } + module2.exports = { + urlEquals, + fieldValues + }; + } +}); + +// node_modules/undici/lib/cache/cache.js +var require_cache = __commonJS({ + 'node_modules/undici/lib/cache/cache.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols4(); + var { urlEquals, fieldValues: getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { kHeadersList } = require_symbols(); + var { webidl } = require_webidl(); + var { Response, cloneResponse } = require_response(); + var { Request } = require_request2(); + var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert = require('assert'); + var { getGlobalDispatcher } = require_global2(); + var Cache = class _Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList; + constructor() { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + this.#relevantRequestResponseList = arguments[1]; + } + async match(request, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }); + request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + const p = await this.matchAll(request, options); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + if (request !== void 0) request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request !== void 0) { + if (request instanceof Request) { + r = request[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request === 'string') { + r = new Request(request)[kState]; + } + } + const responses = []; + if (request === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = new Response(response.body?.source ?? null); + const body2 = responseObject[kState].body; + responseObject[kState] = response; + responseObject[kState].body = body2; + responseObject[kHeaders][kHeadersList] = response.headersList; + responseObject[kHeaders][kGuard] = 'immutable'; + responseList.push(responseObject); + } + return Object.freeze(responseList); + } + async add(request) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }); + request = webidl.converters.RequestInfo(request); + const requests = [request]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }); + requests = webidl.converters['sequence'](requests); + const responsePromises = []; + const requestList = []; + for (const request of requests) { + if (typeof request === 'string') { + continue; + } + const r = request[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }); + } + } + const fetchControllers = []; + for (const request of requests) { + const r = new Request(request)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }); + } + r.initiator = 'fetch'; + r.destination = 'subresource'; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push( + fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse(response) { + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject( + webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + }) + ); + } else if (response.headersList.contains('vary')) { + const fieldValues = getFieldValues(response.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + responsePromise.reject( + webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + }) + ); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')); + return; + } + responsePromise.resolve(response); + } + }) + ); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: 'put', + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request, response) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }); + request = webidl.converters.RequestInfo(request); + response = webidl.converters.Response(response); + let innerRequest = null; + if (request instanceof Request) { + innerRequest = request[kState]; + } else { + innerRequest = new Request(request)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }); + } + if (innerResponse.headersList.contains('vary')) { + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: 'put', + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request, options = {}) { + webidl.brandCheck(this, _Cache); + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }); + request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request instanceof Request) { + r = request[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request === 'string'); + r = new Request(request)[kState]; + } + const operations = []; + const operation = { + type: 'delete', + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys(request = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + if (request !== void 0) request = webidl.converters.RequestInfo(request); + options = webidl.converters.CacheQueryOptions(options); + let r = null; + if (request !== void 0) { + if (request instanceof Request) { + r = request[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request === 'string') { + r = new Request(request)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request2 of requests) { + const requestObject = new Request('https://a'); + requestObject[kState] = request2; + requestObject[kHeaders][kHeadersList] = request2.headersList; + requestObject[kHeaders][kGuard] = 'immutable'; + requestObject[kRealm] = request2.client; + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations(operations) { + const cache = this.#relevantRequestResponseList; + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }); + } + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError'); + } + let requestResponses; + if (operation.type === 'delete') { + requestResponses = this.#queryCache(operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === 'put') { + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }); + } + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }); + } + requestResponses = this.#queryCache(operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + this.#relevantRequestResponseList.length = 0; + this.#relevantRequestResponseList = backupCache; + throw e; + } + } + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? this.#relevantRequestResponseList; + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + } + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem(requestQuery, request, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request.url); + if (options?.ignoreSearch) { + cachedURL.search = ''; + queryURL.search = ''; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || options?.ignoreVary || !response.headersList.contains('vary')) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false; + } + const requestValue = request.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + } + }; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.RequestInfo); + module2.exports = { + Cache + }; + } +}); + +// node_modules/undici/lib/cache/cachestorage.js +var require_cachestorage = __commonJS({ + 'node_modules/undici/lib/cache/cachestorage.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var CacheStorage = class _CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }); + cacheName = webidl.converters.DOMString(cacheName); + return this.#caches.has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }); + cacheName = webidl.converters.DOMString(cacheName); + if (this.#caches.has(cacheName)) { + const cache2 = this.#caches.get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + this.#caches.set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }); + cacheName = webidl.converters.DOMString(cacheName); + return this.#caches.delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = this.#caches.keys(); + return [...keys]; + } + }; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + module2.exports = { + CacheStorage + }; + } +}); + +// node_modules/undici/lib/cookies/constants.js +var require_constants4 = __commonJS({ + 'node_modules/undici/lib/cookies/constants.js'(exports2, module2) { + 'use strict'; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// node_modules/undici/lib/cookies/util.js +var require_util6 = __commonJS({ + 'node_modules/undici/lib/cookies/util.js'(exports2, module2) { + 'use strict'; + var assert = require('assert'); + var { kHeadersList } = require_symbols(); + function isCTLExcludingHtab(value) { + if (value.length === 0) { + return false; + } + for (const char of value) { + const code = char.charCodeAt(0); + if (code >= 0 || code <= 8 || code >= 10 || code <= 31 || code === 127) { + return false; + } + } + } + function validateCookieName(name) { + for (const char of name) { + const code = char.charCodeAt(0); + if ( + code <= 32 || + code > 127 || + char === '(' || + char === ')' || + char === '>' || + char === '<' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' + ) { + throw new Error('Invalid cookie name'); + } + } + } + function validateCookieValue(value) { + for (const char of value) { + const code = char.charCodeAt(0); + if ( + code < 33 || // exclude CTLs (0-31) + code === 34 || + code === 44 || + code === 59 || + code === 92 || + code > 126 + ) { + throw new Error('Invalid header value'); + } + } + } + function validateCookiePath(path) { + for (const char of path) { + const code = char.charCodeAt(0); + if (code < 33 || char === ';') { + throw new Error('Invalid cookie path'); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith('-') || domain.endsWith('.') || domain.endsWith('-')) { + throw new Error('Invalid cookie domain'); + } + } + function toIMFDate(date) { + if (typeof date === 'number') { + date = new Date(date); + } + const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + const dayName = days[date.getUTCDay()]; + const day = date.getUTCDate().toString().padStart(2, '0'); + const month = months[date.getUTCMonth()]; + const year = date.getUTCFullYear(); + const hour = date.getUTCHours().toString().padStart(2, '0'); + const minute = date.getUTCMinutes().toString().padStart(2, '0'); + const second = date.getUTCSeconds().toString().padStart(2, '0'); + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age'); + } + } + function stringify2(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true; + } + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true; + cookie.domain = null; + cookie.path = '/'; + } + if (cookie.secure) { + out.push('Secure'); + } + if (cookie.httpOnly) { + out.push('HttpOnly'); + } + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed'); + } + const [key, ...value] = part.split('='); + out.push(`${key.trim()}=${value.join('=')}`); + } + return out.join('; '); + } + var kHeadersListNode; + function getHeadersList(headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList]; + } + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find(symbol => symbol.description === 'headers list'); + assert(kHeadersListNode, 'Headers cannot be parsed'); + } + const headersList = headers[kHeadersListNode]; + assert(headersList); + return headersList; + } + module2.exports = { + isCTLExcludingHtab, + stringify: stringify2, + getHeadersList + }; + } +}); + +// node_modules/undici/lib/cookies/parse.js +var require_parse = __commonJS({ + 'node_modules/undici/lib/cookies/parse.js'(exports2, module2) { + 'use strict'; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_dataURL(); + var assert = require('assert'); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ''; + let unparsedAttributes = ''; + let name = ''; + let value = ''; + if (header.includes(';')) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(';', header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes('=')) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast('=', nameValuePair, position); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert(unparsedAttributes[0] === ';'); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ''; + if (unparsedAttributes.includes(';')) { + cookieAv = collectASequenceOfCodePointsFast(';', unparsedAttributes, { position: 0 }); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ''; + } + let attributeName = ''; + let attributeValue = ''; + if (cookieAv.includes('=')) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast('=', cookieAv, position); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === 'expires') { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === 'max-age') { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === 'domain') { + let cookieDomain = attributeValue; + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1); + } + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === 'path') { + let cookiePath = ''; + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + cookiePath = '/'; + } else { + cookiePath = attributeValue; + } + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === 'secure') { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === 'httponly') { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === 'samesite') { + let enforcement = 'Default'; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes('none')) { + enforcement = 'None'; + } + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict'; + } + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax'; + } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ??= []; + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/undici/lib/cookies/index.js +var require_cookies = __commonJS({ + 'node_modules/undici/lib/cookies/index.js'(exports2, module2) { + 'use strict'; + var { parseSetCookie } = require_parse(); + var { stringify: stringify2, getHeadersList } = require_util6(); + var { webidl } = require_webidl(); + var { Headers } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookie = headers.get('cookie'); + const out = {}; + if (!cookie) { + return out; + } + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('='); + out[name.trim()] = value.join('='); + } + return out; + } + function deleteCookie(headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }); + webidl.brandCheck(headers, Headers, { strict: false }); + name = webidl.converters.DOMString(name); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: '', + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookies = getHeadersList(headers).cookies; + if (!cookies) { + return []; + } + return cookies.map(pair => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }); + webidl.brandCheck(headers, Headers, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify2(cookie); + if (str) { + headers.append('Set-Cookie', stringify2(cookie)); + } + } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter(value => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value); + } + return new Date(value); + }), + key: 'expires', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] + } + ]); + module2.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie + }; + } +}); + +// node_modules/undici/lib/websocket/constants.js +var require_constants5 = __commonJS({ + 'node_modules/undici/lib/websocket/constants.js'(exports2, module2) { + 'use strict'; + var uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + module2.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer + }; + } +}); + +// node_modules/undici/lib/websocket/symbols.js +var require_symbols5 = __commonJS({ + 'node_modules/undici/lib/websocket/symbols.js'(exports2, module2) { + 'use strict'; + module2.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') + }; + } +}); + +// node_modules/undici/lib/websocket/events.js +var require_events = __commonJS({ + 'node_modules/undici/lib/websocket/events.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { MessagePort } = require('worker_threads'); + var MessageEvent = class _MessageEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + } + get data() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.data; + } + get origin() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.origin; + } + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.lastEventId; + } + get source() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.source; + } + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports); + } + return this.#eventInit.ports; + } + initMessageEvent( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source, + ports + }); + } + }; + var CloseEvent = class _CloseEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + } + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.wasClean; + } + get code() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.code; + } + get reason() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.reason; + } + }; + var ErrorEvent = class _ErrorEvent extends Event { + #eventInit; + constructor(type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }); + super(type, eventInitDict); + type = webidl.converters.DOMString(type); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + this.#eventInit = eventInitDict; + } + get message() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.message; + } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.filename; + } + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.lineno; + } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.colno; + } + get error() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.error; + } + }; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.MessagePort); + var eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: 'ports', + converter: webidl.converters['sequence'], + get defaultValue() { + return []; + } + } + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' + } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'error', + converter: webidl.converters.any + } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent + }; + } +}); + +// node_modules/undici/lib/websocket/util.js +var require_util7 = __commonJS({ + 'node_modules/undici/lib/websocket/util.js'(exports2, module2) { + 'use strict'; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants5(); + var { MessageEvent, ErrorEvent } = require_events(); + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventConstructor = Event, eventInitDict) { + const event = new eventConstructor(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data); + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.'); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + dataForEvent = new Blob([data]); + } else { + dataForEvent = new Uint8Array(data).buffer; + } + } + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (const char of protocol) { + const code = char.charCodeAt(0); + if ( + code < 33 || + code > 126 || + char === '(' || + char === ')' || + char === '<' || + char === '>' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' || + code === 32 || // SP + code === 9 + ) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 + ); + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }); + } + } + module2.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived + }; + } +}); + +// node_modules/undici/lib/websocket/connection.js +var require_connection = __commonJS({ + 'node_modules/undici/lib/websocket/connection.js'(exports2, module2) { + 'use strict'; + var diagnosticsChannel = require('diagnostics_channel'); + var { uid, states } = require_constants5(); + var { kReadyState, kSentClose, kByteParser, kReceivedClose } = require_symbols5(); + var { fireEvent, failWebsocketConnection } = require_util7(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers } = require_headers(); + var { getGlobalDispatcher } = require_global2(); + var { kHeadersList } = require_symbols(); + var channels = {}; + channels.open = diagnosticsChannel.channel('undici:websocket:open'); + channels.close = diagnosticsChannel.channel('undici:websocket:close'); + channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error'); + var crypto4; + try { + crypto4 = require('crypto'); + } catch {} + function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'; + const request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }); + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList]; + request.headersList = headersList; + } + const keyValue = crypto4.randomBytes(16).toString('base64'); + request.headersList.append('sec-websocket-key', keyValue); + request.headersList.append('sec-websocket-version', '13'); + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol); + } + const permessageDeflate = ''; + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse(response) { + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.'); + return; + } + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.'); + return; + } + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept'); + const digest = crypto4 + .createHash('sha1') + .update(keyValue + uid) + .digest('base64'); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.'); + return; + } + const secExtension = response.headersList.get('Sec-WebSocket-Extensions'); + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.'); + return; + } + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol'); + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.'); + return; + } + response.socket.on('data', onSocketData); + response.socket.on('close', onSocketClose); + response.socket.on('error', onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response); + } + }); + return controller; + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const wasClean = ws[kSentClose] && ws[kReceivedClose]; + let code = 1005; + let reason = ''; + const result = ws[kByteParser].closingInfo; + if (result) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kSentClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent('close', ws, CloseEvent, { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }); + } + } + function onSocketError(error) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); + } + module2.exports = { + establishWebSocketConnection + }; + } +}); + +// node_modules/undici/lib/websocket/frame.js +var require_frame = __commonJS({ + 'node_modules/undici/lib/websocket/frame.js'(exports2, module2) { + 'use strict'; + var { maxUnsigned16Bit } = require_constants5(); + var crypto4; + try { + crypto4 = require('crypto'); + } catch {} + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; + this.maskKey = crypto4.randomBytes(4); + } + createFrame(opcode) { + const bodyLength = this.frameData?.byteLength ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const buffer = Buffer.allocUnsafe(bodyLength + offset); + buffer[0] = buffer[1] = 0; + buffer[0] |= 128; + buffer[0] = (buffer[0] & 240) + opcode; + buffer[offset - 4] = this.maskKey[0]; + buffer[offset - 3] = this.maskKey[1]; + buffer[offset - 2] = this.maskKey[2]; + buffer[offset - 1] = this.maskKey[3]; + buffer[1] = payloadLength; + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer[2] = buffer[3] = 0; + buffer.writeUIntBE(bodyLength, 4, 6); + } + buffer[1] |= 128; + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; + } + return buffer; + } + }; + module2.exports = { + WebsocketFrameSend + }; + } +}); + +// node_modules/undici/lib/websocket/receiver.js +var require_receiver = __commonJS({ + 'node_modules/undici/lib/websocket/receiver.js'(exports2, module2) { + 'use strict'; + var { Writable } = require('stream'); + var diagnosticsChannel = require('diagnostics_channel'); + var { parserStates, opcodes, states, emptyBuffer } = require_constants5(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var channels = {}; + channels.ping = diagnosticsChannel.channel('undici:websocket:ping'); + channels.pong = diagnosticsChannel.channel('undici:websocket:pong'); + var ByteParser = class extends Writable { + #buffers = []; + #byteOffset = 0; + #state = parserStates.INFO; + #info = {}; + #fragments = []; + constructor(ws) { + super(); + this.ws = ws; + } + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write(chunk, _, callback) { + this.#buffers.push(chunk); + this.#byteOffset += chunk.length; + this.run(callback); + } + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run(callback) { + while (true) { + if (this.#state === parserStates.INFO) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + this.#info.fin = (buffer[0] & 128) !== 0; + this.#info.opcode = buffer[0] & 15; + this.#info.originalOpcode ??= this.#info.opcode; + this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION; + if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.'); + return; + } + const payloadLength = buffer[1] & 127; + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength; + this.#state = parserStates.READ_DATA; + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16; + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64; + } + if (this.#info.fragmented && payloadLength > 125) { + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.'); + return; + } else if ( + (this.#info.opcode === opcodes.PING || this.#info.opcode === opcodes.PONG || this.#info.opcode === opcodes.CLOSE) && + payloadLength > 125 + ) { + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.'); + return; + } else if (this.#info.opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.'); + return; + } + const body2 = this.consume(payloadLength); + this.#info.closeInfo = this.parseCloseBody(false, body2); + if (!this.ws[kSentClose]) { + const body3 = Buffer.allocUnsafe(2); + body3.writeUInt16BE(this.#info.closeInfo.code, 0); + const closeFrame = new WebsocketFrameSend(body3); + this.ws[kResponse].socket.write(closeFrame.createFrame(opcodes.CLOSE), err => { + if (!err) { + this.ws[kSentClose] = true; + } + }); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + this.end(); + return; + } else if (this.#info.opcode === opcodes.PING) { + const body2 = this.consume(payloadLength); + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body2 + }); + } + } + this.#state = parserStates.INFO; + if (this.#byteOffset > 0) { + continue; + } else { + callback(); + return; + } + } else if (this.#info.opcode === opcodes.PONG) { + const body2 = this.consume(payloadLength); + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body2 + }); + } + if (this.#byteOffset > 0) { + continue; + } else { + callback(); + return; + } + } + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + this.#info.payloadLength = buffer.readUInt16BE(0); + this.#state = parserStates.READ_DATA; + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback(); + } + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.'); + return; + } + const lower = buffer.readUInt32BE(4); + this.#info.payloadLength = (upper << 8) + lower; + this.#state = parserStates.READ_DATA; + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + return callback(); + } else if (this.#byteOffset >= this.#info.payloadLength) { + const body2 = this.consume(this.#info.payloadLength); + this.#fragments.push(body2); + if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { + const fullMessage = Buffer.concat(this.#fragments); + websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage); + this.#info = {}; + this.#fragments.length = 0; + } + this.#state = parserStates.INFO; + } + } + if (this.#byteOffset > 0) { + continue; + } else { + callback(); + break; + } + } + } + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume(n) { + if (n > this.#byteOffset) { + return null; + } else if (n === 0) { + return emptyBuffer; + } + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length; + return this.#buffers.shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = this.#buffers[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + this.#buffers[0] = next.subarray(n - offset); + break; + } else { + buffer.set(this.#buffers.shift(), offset); + offset += next.length; + } + } + this.#byteOffset -= n; + return buffer; + } + parseCloseBody(onlyCode, data) { + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); + } + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null; + } + return { code }; + } + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); + } + if (code !== void 0 && !isValidStatusCode(code)) { + return null; + } + try { + reason = new TextDecoder('utf-8', { fatal: true }).decode(reason); + } catch { + return null; + } + return { code, reason }; + } + get closingInfo() { + return this.#info.closeInfo; + } + }; + module2.exports = { + ByteParser + }; + } +}); + +// node_modules/undici/lib/websocket/websocket.js +var require_websocket = __commonJS({ + 'node_modules/undici/lib/websocket/websocket.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var { DOMException: DOMException2 } = require_constants2(); + var { URLSerializer } = require_dataURL(); + var { getGlobalOrigin } = require_global(); + var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants5(); + var { kWebSocketURL, kReadyState, kController, kBinaryType, kResponse, kSentClose, kByteParser } = require_symbols5(); + var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util7(); + var { establishWebSocketConnection } = require_connection(); + var { WebsocketFrameSend } = require_frame(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types } = require('util'); + var experimentalWarned = false; + var WebSocket = class _WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + }; + #bufferedAmount = 0; + #protocol = ''; + #extensions = ''; + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }); + } + const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols); + url = webidl.converters.USVString(url); + protocols = options.protocols; + const baseURL = getGlobalOrigin(); + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException2(e, 'SyntaxError'); + } + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:'; + } else if (urlRecord.protocol === 'https:') { + urlRecord.protocol = 'wss:'; + } + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException2(`Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, 'SyntaxError'); + } + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException2('Got fragment', 'SyntaxError'); + } + if (typeof protocols === 'string') { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException2('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException2('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + this[kWebSocketURL] = new URL(urlRecord.href); + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + response => this.#onConnectionEstablished(response), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kBinaryType] = 'blob'; + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + if (code !== void 0) { + code = webidl.converters['unsigned short'](code, { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException2('invalid code', 'InvalidAccessError'); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException2(`Reason must be less than 123 bytes; received ${reasonByteLength}`, 'SyntaxError'); + } + } + if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) { + } else if (!isEstablished(this)) { + failWebsocketConnection(this, 'Connection was closed before it was established.'); + this[kReadyState] = _WebSocket.CLOSING; + } else if (!isClosing(this)) { + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, 'utf-8'); + } else { + frame.frameData = emptyBuffer; + } + const socket = this[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE), err => { + if (!err) { + this[kSentClose] = true; + } + }); + this[kReadyState] = states.CLOSING; + } else { + this[kReadyState] = _WebSocket.CLOSING; + } + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }); + data = webidl.converters.WebSocketSendData(data); + if (this[kReadyState] === _WebSocket.CONNECTING) { + throw new DOMException2('Sent before connected.', 'InvalidStateError'); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + const socket = this[kResponse].socket; + if (typeof data === 'string') { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.TEXT); + this.#bufferedAmount += value.byteLength; + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength; + }); + } else if (types.isArrayBuffer(data)) { + const value = Buffer.from(data); + const frame = new WebsocketFrameSend(value); + const buffer = frame.createFrame(opcodes.BINARY); + this.#bufferedAmount += value.byteLength; + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength; + }); + } else if (ArrayBuffer.isView(data)) { + const ab = Buffer.from(data, data.byteOffset, data.byteLength); + const frame = new WebsocketFrameSend(ab); + const buffer = frame.createFrame(opcodes.BINARY); + this.#bufferedAmount += ab.byteLength; + socket.write(buffer, () => { + this.#bufferedAmount -= ab.byteLength; + }); + } else if (isBlobLike(data)) { + const frame = new WebsocketFrameSend(); + data.arrayBuffer().then(ab => { + const value = Buffer.from(ab); + frame.frameData = value; + const buffer = frame.createFrame(opcodes.BINARY); + this.#bufferedAmount += value.byteLength; + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength; + }); + }); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return this.#bufferedAmount; + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); + } + get extensions() { + webidl.brandCheck(this, _WebSocket); + return this.#extensions; + } + get protocol() { + webidl.brandCheck(this, _WebSocket); + return this.#protocol; + } + get onopen() { + webidl.brandCheck(this, _WebSocket); + return this.#events.open; + } + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.open) { + this.removeEventListener('open', this.#events.open); + } + if (typeof fn === 'function') { + this.#events.open = fn; + this.addEventListener('open', fn); + } else { + this.#events.open = null; + } + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return this.#events.error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.error) { + this.removeEventListener('error', this.#events.error); + } + if (typeof fn === 'function') { + this.#events.error = fn; + this.addEventListener('error', fn); + } else { + this.#events.error = null; + } + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return this.#events.close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.close) { + this.removeEventListener('close', this.#events.close); + } + if (typeof fn === 'function') { + this.#events.close = fn; + this.addEventListener('close', fn); + } else { + this.#events.close = null; + } + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return this.#events.message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.message) { + this.removeEventListener('message', this.#events.message); + } + if (typeof fn === 'function') { + this.#events.message = fn; + this.addEventListener('message', fn); + } else { + this.#events.message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob'; + } else { + this[kBinaryType] = type; + } + } + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished(response) { + this[kResponse] = response; + const parser = new ByteParser(this); + parser.on('drain', function onParserDrain() { + this.ws[kResponse].socket.resume(); + }); + response.socket.ws = this; + this[kByteParser] = parser; + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get('sec-websocket-extensions'); + if (extensions !== null) { + this.#extensions = extensions; + } + const protocol = response.headersList.get('sec-websocket-protocol'); + if (protocol !== null) { + this.#protocol = protocol; + } + fireEvent('open', this); + } + }; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.DOMString); + webidl.converters['DOMString or sequence'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + get defaultValue() { + return []; + } + }, + { + key: 'dispatcher', + converter: V => V, + get defaultValue() { + return getGlobalDispatcher(); + } + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } + ]); + webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters['DOMString or sequence'](V) }; + }; + webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); + }; + module2.exports = { + WebSocket + }; + } +}); + +// node_modules/undici/index.js +var require_undici = __commonJS({ + 'node_modules/undici/index.js'(exports2, module2) { + 'use strict'; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var errors = require_errors(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var ProxyAgent = require_proxy_agent(); + var RetryHandler = require_RetryHandler(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_DecoratorHandler(); + var RedirectHandler = require_RedirectHandler(); + var createRedirectInterceptor = require_redirectInterceptor(); + var hasCrypto; + try { + require('crypto'); + hasCrypto = true; + } catch { + hasCrypto = false; + } + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.Agent = Agent; + module2.exports.ProxyAgent = ProxyAgent; + module2.exports.RetryHandler = RetryHandler; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.createRedirectInterceptor = createRedirectInterceptor; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + function makeDispatcher(fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts; + opts = null; + } + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url'); + } + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path'); + } + let path = opts.path; + if (!opts.path.startsWith('/')) { + path = `/${path}`; + } + url = new URL(util.parseOrigin(url).origin + path); + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?'); + } + return fn.call( + dispatcher, + { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, + handler + ); + }; + } + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { + let fetchImpl = null; + module2.exports.fetch = async function fetch(resource) { + if (!fetchImpl) { + fetchImpl = require_fetch().fetch; + } + try { + return await fetchImpl(...arguments); + } catch (err) { + if (typeof err === 'object') { + Error.captureStackTrace(err, this); + } + throw err; + } + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + module2.exports.File = require_file().File; + module2.exports.FileReader = require_filereader().FileReader; + const { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + const { CacheStorage } = require_cachestorage(); + const { kConstruct } = require_symbols4(); + module2.exports.caches = new CacheStorage(kConstruct); + } + if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + const { parseMIMEType, serializeAMimeType } = require_dataURL(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + } + if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = require_websocket(); + module2.exports.WebSocket = WebSocket; + } + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.mockErrors = mockErrors; + } +}); + +// node_modules/@actions/http-client/lib/index.js +var require_lib = __commonJS({ + 'node_modules/@actions/http-client/lib/index.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.HttpClient = + exports2.isHttps = + exports2.HttpClientResponse = + exports2.HttpClientError = + exports2.getProxyUrl = + exports2.MediaTypes = + exports2.Headers = + exports2.HttpCodes = + void 0; + var http = __importStar(require('http')); + var https = __importStar(require('https')); + var pm = __importStar(require_proxy()); + var tunnel = __importStar(require_tunnel2()); + var undici_1 = require_undici(); + var HttpCodes; + (function (HttpCodes2) { + HttpCodes2[(HttpCodes2['OK'] = 200)] = 'OK'; + HttpCodes2[(HttpCodes2['MultipleChoices'] = 300)] = 'MultipleChoices'; + HttpCodes2[(HttpCodes2['MovedPermanently'] = 301)] = 'MovedPermanently'; + HttpCodes2[(HttpCodes2['ResourceMoved'] = 302)] = 'ResourceMoved'; + HttpCodes2[(HttpCodes2['SeeOther'] = 303)] = 'SeeOther'; + HttpCodes2[(HttpCodes2['NotModified'] = 304)] = 'NotModified'; + HttpCodes2[(HttpCodes2['UseProxy'] = 305)] = 'UseProxy'; + HttpCodes2[(HttpCodes2['SwitchProxy'] = 306)] = 'SwitchProxy'; + HttpCodes2[(HttpCodes2['TemporaryRedirect'] = 307)] = 'TemporaryRedirect'; + HttpCodes2[(HttpCodes2['PermanentRedirect'] = 308)] = 'PermanentRedirect'; + HttpCodes2[(HttpCodes2['BadRequest'] = 400)] = 'BadRequest'; + HttpCodes2[(HttpCodes2['Unauthorized'] = 401)] = 'Unauthorized'; + HttpCodes2[(HttpCodes2['PaymentRequired'] = 402)] = 'PaymentRequired'; + HttpCodes2[(HttpCodes2['Forbidden'] = 403)] = 'Forbidden'; + HttpCodes2[(HttpCodes2['NotFound'] = 404)] = 'NotFound'; + HttpCodes2[(HttpCodes2['MethodNotAllowed'] = 405)] = 'MethodNotAllowed'; + HttpCodes2[(HttpCodes2['NotAcceptable'] = 406)] = 'NotAcceptable'; + HttpCodes2[(HttpCodes2['ProxyAuthenticationRequired'] = 407)] = 'ProxyAuthenticationRequired'; + HttpCodes2[(HttpCodes2['RequestTimeout'] = 408)] = 'RequestTimeout'; + HttpCodes2[(HttpCodes2['Conflict'] = 409)] = 'Conflict'; + HttpCodes2[(HttpCodes2['Gone'] = 410)] = 'Gone'; + HttpCodes2[(HttpCodes2['TooManyRequests'] = 429)] = 'TooManyRequests'; + HttpCodes2[(HttpCodes2['InternalServerError'] = 500)] = 'InternalServerError'; + HttpCodes2[(HttpCodes2['NotImplemented'] = 501)] = 'NotImplemented'; + HttpCodes2[(HttpCodes2['BadGateway'] = 502)] = 'BadGateway'; + HttpCodes2[(HttpCodes2['ServiceUnavailable'] = 503)] = 'ServiceUnavailable'; + HttpCodes2[(HttpCodes2['GatewayTimeout'] = 504)] = 'GatewayTimeout'; + })(HttpCodes || (exports2.HttpCodes = HttpCodes = {})); + var Headers; + (function (Headers2) { + Headers2['Accept'] = 'accept'; + Headers2['ContentType'] = 'content-type'; + })(Headers || (exports2.Headers = Headers = {})); + var MediaTypes; + (function (MediaTypes2) { + MediaTypes2['ApplicationJson'] = 'application/json'; + })(MediaTypes || (exports2.MediaTypes = MediaTypes = {})); + function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; + } + exports2.getProxyUrl = getProxyUrl; + var HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect + ]; + var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; + var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; + var ExponentialBackoffCeiling = 10; + var ExponentialBackoffTimeSlice = 5; + var HttpClientError = class _HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, _HttpClientError.prototype); + } + }; + exports2.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => + __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', chunk => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + }) + ); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => + __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', chunk => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + }) + ); + }); + } + }; + exports2.HttpClientResponse = HttpClientResponse; + function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; + } + exports2.isHttps = isHttps; + var HttpClient = class { + constructor(userAgent, handlers, requestOptions) { + 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 = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.ContentType, + MediaTypes.ApplicationJson + ); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.ContentType, + MediaTypes.ApplicationJson + ); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.ContentType, + MediaTypes.ApplicationJson + ); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } else { + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while ( + response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0 + ) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if ( + parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.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 response.readBody(); + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error('Unknown error')); + } else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, msg => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; + info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign( + Object.assign( + {}, + (proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + } + ), + { host: proxyUrl.hostname, port: proxyUrl.port } + ) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (!agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent( + Object.assign( + { uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, + (proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}` + } + ) + ); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => + __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } catch (err) {} + if (statusCode > 299) { + let msg; + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + msg = contents; + } else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve(response); + } + }) + ); + }); + } + }; + exports2.HttpClient = HttpClient; + var lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + } +}); + +// node_modules/@actions/http-client/lib/auth.js +var require_auth = __commonJS({ + 'node_modules/@actions/http-client/lib/auth.js'(exports2) { + 'use strict'; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.PersonalAccessTokenCredentialHandler = exports2.BearerCredentialHandler = exports2.BasicCredentialHandler = void 0; + var BasicCredentialHandler = class { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.BasicCredentialHandler = BasicCredentialHandler; + var BearerCredentialHandler = class { + constructor(token2) { + this.token = token2; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.BearerCredentialHandler = BearerCredentialHandler; + var PersonalAccessTokenCredentialHandler = class { + constructor(token2) { + this.token = token2; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + } +}); + +// node_modules/@actions/core/lib/oidc-utils.js +var require_oidc_utils = __commonJS({ + 'node_modules/@actions/core/lib/oidc-utils.js'(exports2) { + 'use strict'; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.OidcClient = void 0; + var http_client_1 = require_lib(); + var auth_1 = require_auth(); + var core_1 = require_core(); + var OidcClient = class _OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient( + 'actions/oidc-client', + [new auth_1.BearerCredentialHandler(_OidcClient.getRequestToken())], + requestOptions + ); + } + static getRequestToken() { + const token2 = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token2) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token2; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = _OidcClient.createHttpClient(); + const res = yield httpclient.getJson(id_token_url).catch(error => { + throw new Error(`Failed to get ID Token. + + Error Code : ${error.statusCode} + + Error Message: ${error.result.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + let id_token_url = _OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield _OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } + }; + exports2.OidcClient = OidcClient; + } +}); + +// node_modules/@actions/core/lib/summary.js +var require_summary = __commonJS({ + 'node_modules/@actions/core/lib/summary.js'(exports2) { + 'use strict'; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.summary = exports2.markdownSummary = exports2.SUMMARY_DOCS_URL = exports2.SUMMARY_ENV_VAR = void 0; + var os_1 = require('os'); + var fs_1 = require('fs'); + var { access, appendFile, writeFile } = fs_1.promises; + exports2.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; + exports2.SUMMARY_DOCS_URL = + 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; + var Summary = class { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error( + `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` + ); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } catch (_a) { + throw new Error( + `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.` + ); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag2, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag2}${htmlAttrs}>`; + } + return `<${tag2}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, lang && { lang }); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag2 = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag2, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag2 = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); + return this.wrap(tag2, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag2 = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag2) ? tag2 : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, cite && { cite }); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } + }; + var _summary = new Summary(); + exports2.markdownSummary = _summary; + exports2.summary = _summary; + } +}); + +// node_modules/@actions/core/lib/path-utils.js +var require_path_utils = __commonJS({ + 'node_modules/@actions/core/lib/path-utils.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + } + }); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.toPlatformPath = exports2.toWin32Path = exports2.toPosixPath = void 0; + var path = __importStar(require('path')); + function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); + } + exports2.toPosixPath = toPosixPath; + function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); + } + exports2.toWin32Path = toWin32Path; + function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); + } + exports2.toPlatformPath = toPlatformPath; + } +}); + +// node_modules/@actions/core/lib/core.js +var require_core = __commonJS({ + 'node_modules/@actions/core/lib/core.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { + enumerable: true, + get: function () { + return m[k]; + } + }); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.getIDToken = + exports2.getState = + exports2.saveState = + exports2.group = + exports2.endGroup = + exports2.startGroup = + exports2.info = + exports2.notice = + exports2.warning = + exports2.error = + exports2.debug = + exports2.isDebug = + exports2.setFailed = + exports2.setCommandEcho = + exports2.setOutput = + exports2.getBooleanInput = + exports2.getMultilineInput = + exports2.getInput = + exports2.addPath = + exports2.setSecret = + exports2.exportVariable = + exports2.ExitCode = + void 0; + var command_1 = require_command(); + var file_command_1 = require_file_command(); + var utils_1 = require_utils(); + var os = __importStar(require('os')); + var path = __importStar(require('path')); + var oidc_utils_1 = require_oidc_utils(); + var ExitCode; + (function (ExitCode2) { + ExitCode2[(ExitCode2['Success'] = 0)] = 'Success'; + ExitCode2[(ExitCode2['Failure'] = 1)] = 'Failure'; + })((ExitCode = exports2.ExitCode || (exports2.ExitCode = {}))); + function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + } + command_1.issueCommand('set-env', { name }, convertedVal); + } + exports2.exportVariable = exportVariable; + function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); + } + exports2.setSecret = setSecret; + function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueFileCommand('PATH', inputPath); + } else { + command_1.issueCommand('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; + } + exports2.addPath = addPath; + function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); + } + exports2.getInput = getInput; + function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); + } + exports2.getMultilineInput = getMultilineInput; + function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) return true; + if (falseValue.includes(val)) return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); + } + exports2.getBooleanInput = getBooleanInput; + function setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + } + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); + } + exports2.setOutput = setOutput; + function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); + } + exports2.setCommandEcho = setCommandEcho; + function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); + } + exports2.setFailed = setFailed; + function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; + } + exports2.isDebug = isDebug; + function debug(message) { + command_1.issueCommand('debug', {}, message); + } + exports2.debug = debug; + function error(message, properties = {}) { + command_1.issueCommand( + 'error', + utils_1.toCommandProperties(properties), + message instanceof Error ? message.toString() : message + ); + } + exports2.error = error; + function warning(message, properties = {}) { + command_1.issueCommand( + 'warning', + utils_1.toCommandProperties(properties), + message instanceof Error ? message.toString() : message + ); + } + exports2.warning = warning; + function notice(message, properties = {}) { + command_1.issueCommand( + 'notice', + utils_1.toCommandProperties(properties), + message instanceof Error ? message.toString() : message + ); + } + exports2.notice = notice; + function info(message) { + process.stdout.write(message + os.EOL); + } + exports2.info = info; + function startGroup(name) { + command_1.issue('group', name); + } + exports2.startGroup = startGroup; + function endGroup() { + command_1.issue('endgroup'); + } + exports2.endGroup = endGroup; + function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } finally { + endGroup(); + } + return result; + }); + } + exports2.group = group; + function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); + } + exports2.saveState = saveState; + function getState(name) { + return process.env[`STATE_${name}`] || ''; + } + exports2.getState = getState; + function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); + } + exports2.getIDToken = getIDToken; + var summary_1 = require_summary(); + Object.defineProperty(exports2, 'summary', { + enumerable: true, + get: function () { + return summary_1.summary; + } + }); + var summary_2 = require_summary(); + Object.defineProperty(exports2, 'markdownSummary', { + enumerable: true, + get: function () { + return summary_2.markdownSummary; + } + }); + var path_utils_1 = require_path_utils(); + Object.defineProperty(exports2, 'toPosixPath', { + enumerable: true, + get: function () { + return path_utils_1.toPosixPath; + } + }); + Object.defineProperty(exports2, 'toWin32Path', { + enumerable: true, + get: function () { + return path_utils_1.toWin32Path; + } + }); + Object.defineProperty(exports2, 'toPlatformPath', { + enumerable: true, + get: function () { + return path_utils_1.toPlatformPath; } - return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); - }; + }); } }); -// node_modules/whatwg-url/lib/URL-impl.js -var require_URL_impl = __commonJS({ - 'node_modules/whatwg-url/lib/URL-impl.js'(exports2) { +// node_modules/@actions/github/lib/context.js +var require_context = __commonJS({ + 'node_modules/@actions/github/lib/context.js'(exports2) { 'use strict'; - var usm = require_url_state_machine(); - exports2.implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; - let parsedBase = null; - if (base !== void 0) { - parsedBase = usm.basicURLParse(base); - if (parsedBase === 'failure') { - throw new TypeError('Invalid base URL'); + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.Context = void 0; + var fs_1 = require('fs'); + var os_1 = require('os'); + var Context = class { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + } else { + const path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); } } - const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === 'failure') { - throw new TypeError('Invalid URL'); - } - this._url = parsedURL; - } - get href() { - return usm.serializeURL(this._url); - } - set href(v) { - const parsedURL = usm.basicURLParse(v); - if (parsedURL === 'failure') { - throw new TypeError('Invalid URL'); - } - this._url = parsedURL; - } - get origin() { - return usm.serializeURLOrigin(this._url); - } - get protocol() { - return this._url.scheme + ':'; - } - set protocol(v) { - usm.basicURLParse(v + ':', { url: this._url, stateOverride: 'scheme start' }); - } - get username() { - return this._url.username; - } - set username(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - usm.setTheUsername(this._url, v); - } - get password() { - return this._url.password; + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; + this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; } - set password(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - usm.setThePassword(this._url, v); + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); } - get host() { - const url = this._url; - if (url.host === null) { - return ''; - } - if (url.port === null) { - return usm.serializeHost(url.host); + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner, repo }; } - return usm.serializeHost(url.host) + ':' + usm.serializeInteger(url.port); - } - set host(v) { - if (this._url.cannotBeABaseURL) { - return; + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; } - usm.basicURLParse(v, { url: this._url, stateOverride: 'host' }); + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); } - get hostname() { - if (this._url.host === null) { - return ''; + }; + exports2.Context = Context; + } +}); + +// node_modules/@actions/github/lib/internal/utils.js +var require_utils3 = __commonJS({ + 'node_modules/@actions/github/lib/internal/utils.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } - return usm.serializeHost(this._url.host); - } - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); } - usm.basicURLParse(v, { url: this._url, stateOverride: 'hostname' }); + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.getApiBaseUrl = + exports2.getProxyFetch = + exports2.getProxyAgentDispatcher = + exports2.getProxyAgent = + exports2.getAuthString = + void 0; + var httpClient = __importStar(require_lib()); + var undici_1 = require_undici(); + function getAuthString(token2, options) { + if (!token2 && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } else if (token2 && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); } - get port() { - if (this._url.port === null) { - return ''; - } - return usm.serializeInteger(this._url.port); + return typeof options.auth === 'string' ? options.auth : `token ${token2}`; + } + exports2.getAuthString = getAuthString; + function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); + } + exports2.getProxyAgent = getProxyAgent; + function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); + } + exports2.getProxyAgentDispatcher = getProxyAgentDispatcher; + function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => + __awaiter(this, void 0, void 0, function* () { + return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; + } + exports2.getProxyFetch = getProxyFetch; + function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; + } + exports2.getApiBaseUrl = getApiBaseUrl; + } +}); + +// node_modules/universal-user-agent/dist-node/index.js +var require_dist_node = __commonJS({ + 'node_modules/universal-user-agent/dist-node/index.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + function getUserAgent() { + if (typeof navigator === 'object' && 'userAgent' in navigator) { + return navigator.userAgent; } - set port(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - if (v === '') { - this._url.port = null; - } else { - usm.basicURLParse(v, { url: this._url, stateOverride: 'port' }); - } + if (typeof process === 'object' && process.version !== void 0) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; } - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; - } - if (this._url.path.length === 0) { - return ''; - } - return '/' + this._url.path.join('/'); + return ''; + } + exports2.getUserAgent = getUserAgent; + } +}); + +// node_modules/before-after-hook/lib/register.js +var require_register = __commonJS({ + 'node_modules/before-after-hook/lib/register.js'(exports2, module2) { + module2.exports = register; + function register(state, name, method, options) { + if (typeof method !== 'function') { + throw new Error('method for before hook must be a function'); } - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - this._url.path = []; - usm.basicURLParse(v, { url: this._url, stateOverride: 'path start' }); + if (!options) { + options = {}; } - get search() { - if (this._url.query === null || this._url.query === '') { - return ''; - } - return '?' + this._url.query; + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name2) { + return register.bind(null, state, name2, callback, options); + }, method)(); } - set search(v) { - const url = this._url; - if (v === '') { - url.query = null; - return; + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); } - const input = v[0] === '?' ? v.substring(1) : v; - url.query = ''; - usm.basicURLParse(input, { url, stateOverride: 'query' }); + return state.registry[name].reduce(function (method2, registered) { + return registered.hook.bind(null, method2, options); + }, method)(); + }); + } + } +}); + +// node_modules/before-after-hook/lib/add.js +var require_add = __commonJS({ + 'node_modules/before-after-hook/lib/add.js'(exports2, module2) { + module2.exports = addHook; + function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; } - get hash() { - if (this._url.fragment === null || this._url.fragment === '') { - return ''; - } - return '#' + this._url.fragment; + if (kind === 'before') { + hook = function (method, options) { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; } - set hash(v) { - if (v === '') { - this._url.fragment = null; - return; - } - const input = v[0] === '#' ? v.substring(1) : v; - this._url.fragment = ''; - usm.basicURLParse(input, { url: this._url, stateOverride: 'fragment' }); + if (kind === 'after') { + hook = function (method, options) { + var result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_; + return orig(result, options); + }) + .then(function () { + return result; + }); + }; } - toJSON() { - return this.href; + if (kind === 'error') { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; } - }; + state.registry[name].push({ + hook, + orig + }); + } } }); -// node_modules/whatwg-url/lib/URL.js -var require_URL = __commonJS({ - 'node_modules/whatwg-url/lib/URL.js'(exports2, module2) { - 'use strict'; - var conversions = require_lib2(); - var utils = require_utils3(); - var Impl = require_URL_impl(); - var impl = utils.implSymbol; - function URL2(url) { - if (!this || this[impl] || !(this instanceof URL2)) { - throw new TypeError( - "Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function." - ); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + ' present.'); - } - const args = []; - for (let i = 0; i < arguments.length && i < 2; ++i) { - args[i] = arguments[i]; +// node_modules/before-after-hook/lib/remove.js +var require_remove = __commonJS({ + 'node_modules/before-after-hook/lib/remove.js'(exports2, module2) { + module2.exports = removeHook; + function removeHook(state, name, method) { + if (!state.registry[name]) { + return; } - args[0] = conversions['USVString'](args[0]); - if (args[1] !== void 0) { - args[1] = conversions['USVString'](args[1]); + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); + if (index === -1) { + return; } - module2.exports.setup(this, args); + state.registry[name].splice(index, 1); } - URL2.prototype.toJSON = function toJSON() { - if (!this || !module2.exports.is(this)) { - throw new TypeError('Illegal invocation'); - } - const args = []; - for (let i = 0; i < arguments.length && i < 0; ++i) { - args[i] = arguments[i]; - } - return this[impl].toJSON.apply(this[impl], args); - }; - Object.defineProperty(URL2.prototype, 'href', { - get() { - return this[impl].href; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].href = V; - }, - enumerable: true, - configurable: true - }); - URL2.prototype.toString = function () { - if (!this || !module2.exports.is(this)) { - throw new TypeError('Illegal invocation'); - } - return this.href; - }; - Object.defineProperty(URL2.prototype, 'origin', { - get() { - return this[impl].origin; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'protocol', { - get() { - return this[impl].protocol; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].protocol = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'username', { - get() { - return this[impl].username; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].username = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'password', { - get() { - return this[impl].password; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].password = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'host', { - get() { - return this[impl].host; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].host = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'hostname', { - get() { - return this[impl].hostname; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].hostname = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'port', { - get() { - return this[impl].port; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].port = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'pathname', { - get() { - return this[impl].pathname; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].pathname = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'search', { - get() { - return this[impl].search; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].search = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'hash', { - get() { - return this[impl].hash; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].hash = V; - }, - enumerable: true, - configurable: true - }); - module2.exports = { - is(obj) { - return !!obj && obj[impl] instanceof Impl.implementation; - }, - create(constructorArgs, privateData) { - let obj = Object.create(URL2.prototype); - this.setup(obj, constructorArgs, privateData); - return obj; - }, - setup(obj, constructorArgs, privateData) { - if (!privateData) privateData = {}; - privateData.wrapper = obj; - obj[impl] = new Impl.implementation(constructorArgs, privateData); - obj[impl][utils.wrapperSymbol] = obj; - }, - interface: URL2, - expose: { - Window: { URL: URL2 }, - Worker: { URL: URL2 } - } - }; } }); -// node_modules/whatwg-url/lib/public-api.js -var require_public_api = __commonJS({ - 'node_modules/whatwg-url/lib/public-api.js'(exports2) { - 'use strict'; - exports2.URL = require_URL().interface; - exports2.serializeURL = require_url_state_machine().serializeURL; - exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; - exports2.basicURLParse = require_url_state_machine().basicURLParse; - exports2.setTheUsername = require_url_state_machine().setTheUsername; - exports2.setThePassword = require_url_state_machine().setThePassword; - exports2.serializeHost = require_url_state_machine().serializeHost; - exports2.serializeInteger = require_url_state_machine().serializeInteger; - exports2.parseURL = require_url_state_machine().parseURL; +// node_modules/before-after-hook/index.js +var require_before_after_hook = __commonJS({ + 'node_modules/before-after-hook/index.js'(exports2, module2) { + var register = require_register(); + var addHook = require_add(); + var removeHook = require_remove(); + var bind = Function.bind; + var bindable = bind.bind(bind); + function bindApi(hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); + hook.api = { remove: removeHookRef }; + hook.remove = removeHookRef; + ['before', 'error', 'after', 'wrap'].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind]; + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); + }); + } + function HookSingular() { + var singularHookName = 'h'; + var singularHookState = { + registry: {} + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; + } + function HookCollection() { + var state = { + registry: {} + }; + var hook = register.bind(null, state); + bindApi(hook, state); + return hook; + } + var collectionHookDeprecationMessageDisplayed = false; + function Hook() { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn( + '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' + ); + collectionHookDeprecationMessageDisplayed = true; + } + return HookCollection(); + } + Hook.Singular = HookSingular.bind(); + Hook.Collection = HookCollection.bind(); + module2.exports = Hook; + module2.exports.Hook = Hook; + module2.exports.Singular = Hook.Singular; + module2.exports.Collection = Hook.Collection; } }); -// node_modules/node-fetch/lib/index.js -var require_lib3 = __commonJS({ - 'node_modules/node-fetch/lib/index.js'(exports2, module2) { +// node_modules/@octokit/endpoint/dist-node/index.js +var require_dist_node2 = __commonJS({ + 'node_modules/@octokit/endpoint/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function _interopDefault(ex) { - return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex; - } - var Stream = _interopDefault(require('stream')); - var http = _interopDefault(require('http')); - var Url = _interopDefault(require('url')); - var whatwgUrl = _interopDefault(require_public_api()); - var https = _interopDefault(require('https')); - var zlib = _interopDefault(require('zlib')); - var Readable = Stream.Readable; - var BUFFER = Symbol('buffer'); - var TYPE = Symbol('type'); - var Blob = class { - constructor() { - this[TYPE] = ''; - const blobParts = arguments[0]; - const options = arguments[1]; - const buffers = []; - let size = 0; - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - this[BUFFER] = Buffer.concat(buffers); - let type = options && options.type !== void 0 && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === void 0) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === void 0) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); } + return to; }; - Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } - }); - Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + endpoint: () => endpoint }); - function FetchError(message, type, systemError) { - Error.call(this, message); - this.message = message; - this.type = type; - if (systemError) { - this.code = this.errno = systemError.code; - } - Error.captureStackTrace(this, this.constructor); - } - FetchError.prototype = Object.create(Error.prototype); - FetchError.prototype.constructor = FetchError; - FetchError.prototype.name = 'FetchError'; - var convert; - try { - convert = require('encoding').convert; - } catch (e) {} - var INTERNALS = Symbol('Body internals'); - var PassThrough = Stream.PassThrough; - function Body(body2) { - var _this = this; - var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, - _ref$size = _ref.size; - let size = _ref$size === void 0 ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; - if (body2 == null) { - body2 = null; - } else if (isURLSearchParams(body2)) { - body2 = Buffer.from(body2.toString()); - } else if (isBlob(body2)); - else if (Buffer.isBuffer(body2)); - else if (Object.prototype.toString.call(body2) === '[object ArrayBuffer]') { - body2 = Buffer.from(body2); - } else if (ArrayBuffer.isView(body2)) { - body2 = Buffer.from(body2.buffer, body2.byteOffset, body2.byteLength); - } else if (body2 instanceof Stream); - else { - body2 = Buffer.from(String(body2)); - } - this[INTERNALS] = { - body: body2, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - if (body2 instanceof Stream) { - body2.on('error', function (err) { - const error = - err.name === 'AbortError' - ? err - : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } - } - Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - blob() { - let ct = (this.headers && this.headers.get('content-type')) || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - new Blob([], { - type: ct.toLowerCase() - }), - { - [BUFFER]: buf - } - ); - }); - }, - json() { - var _this2 = this; - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject( - new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json') - ); - } - }); - }, - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - buffer() { - return consumeBody.call(this); + module2.exports = __toCommonJS2(dist_src_exports); + var import_universal_user_agent = require_dist_node(); + var VERSION = '9.0.6'; + var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; + var DEFAULTS = { + method: 'GET', + baseUrl: 'https://api.github.com', + headers: { + accept: 'application/vnd.github.v3+json', + 'user-agent': userAgent }, - textConverted() { - var _this3 = this; - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); + mediaType: { + format: '' } }; - Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } - }); - Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } + function lowercaseKeys(object) { + if (!object) { + return {}; } - }; - function consumeBody() { - var _this4 = this; - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - this[INTERNALS].disturbed = true; - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - let body2 = this.body; - if (body2 === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - if (isBlob(body2)) { - body2 = body2.stream(); - } - if (Buffer.isBuffer(body2)) { - return Body.Promise.resolve(body2); - } - if (!(body2 instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - let accum = []; - let accumBytes = 0; - let abort = false; - return new Body.Promise(function (resolve, reject) { - let resTimeout; - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject( - new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout') - ); - }, _this4.timeout); + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); + } + function isPlainObject(value) { + if (typeof value !== 'object' || value === null) return false; + if (Object.prototype.toString.call(value) !== '[object Object]') return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return ( + typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value) + ); + } + function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); + else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); } - body2.on('error', function (err) { - if (err.name === 'AbortError') { - abort = true; - reject(err); - } else { - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - body2.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - accumBytes += chunk.length; - accum.push(chunk); - }); - body2.on('end', function () { - if (abort) { - return; - } - clearTimeout(resTimeout); - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); }); + return result; } - function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - str = buffer.slice(0, 1024).toString(); - if (!res && str) { - res = / !mergedOptions.mediaType.previews.includes(preview)) + .concat(mergedOptions.mediaType.previews); } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map(preview => + preview.replace(/-preview/, '') + ); } - return convert(buffer, 'UTF-8', charset).toString(); - } - function isURLSearchParams(obj) { - if ( - typeof obj !== 'object' || - typeof obj.append !== 'function' || - typeof obj.delete !== 'function' || - typeof obj.get !== 'function' || - typeof obj.getAll !== 'function' || - typeof obj.has !== 'function' || - typeof obj.set !== 'function' - ) { - return false; - } - return ( - obj.constructor.name === 'URLSearchParams' || - Object.prototype.toString.call(obj) === '[object URLSearchParams]' || - typeof obj.sort === 'function' - ); + return mergedOptions; } - function isBlob(obj) { + function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? '&' : '?'; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } return ( - typeof obj === 'object' && - typeof obj.arrayBuffer === 'function' && - typeof obj.type === 'string' && - typeof obj.stream === 'function' && - typeof obj.constructor === 'function' && - typeof obj.constructor.name === 'string' && - /^(Blob|File)$/.test(obj.constructor.name) && - /^(Blob|File)$/.test(obj[Symbol.toStringTag]) + url + + separator + + names + .map(name => { + if (name === 'q') { + return 'q=' + parameters.q.split('+').map(encodeURIComponent).join('+'); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }) + .join('&') ); } - function clone(instance) { - let p1, p2; - let body2 = instance.body; - if (instance.bodyUsed) { - throw new Error('cannot clone body after it is used'); - } - if (body2 instanceof Stream && typeof body2.getBoundary !== 'function') { - p1 = new PassThrough(); - p2 = new PassThrough(); - body2.pipe(p1); - body2.pipe(p2); - instance[INTERNALS].body = p1; - body2 = p2; - } - return body2; + var urlVariableRegex = /\{[^{}}]+\}/g; + function removeNonChars(variableName) { + return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); } - function getTotalBytes(instance) { - const body2 = instance.body; - if (body2 === null) { - return 0; - } else if (isBlob(body2)) { - return body2.size; - } else if (Buffer.isBuffer(body2)) { - return body2.length; - } else if (body2 && typeof body2.getLengthSync === 'function') { - if ( - (body2._lengthRetrievers && body2._lengthRetrievers.length == 0) || - (body2.hasKnownLength && body2.hasKnownLength()) - ) { - return body2.getLengthSync(); + function omit(object, keysToOmit) { + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; } - return null; - } else { - return null; } + return result; } - function writeToStream(dest, instance) { - const body2 = instance.body; - if (body2 === null) { - dest.end(); - } else if (isBlob(body2)) { - body2.stream().pipe(dest); - } else if (Buffer.isBuffer(body2)) { - dest.write(body2); - dest.end(); - } else { - body2.pipe(dest); - } + function encodeReserved(str) { + return str + .split(/(%[0-9A-Fa-f]{2})/g) + .map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']'); + } + return part; + }) + .join(''); } - Body.Promise = global.Promise; - var invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; - var invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; - function validateName(name) { - name = `${name}`; - if (invalidTokenRegex.test(name) || name === '') { - throw new TypeError(`${name} is not a legal HTTP header name`); - } + function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); } - function validateValue(value) { - value = `${value}`; - if (invalidHeaderCharRegex.test(value)) { - throw new TypeError(`${value} is not a legal HTTP header value`); + function encodeValue(operator, value, key) { + value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + '=' + value; + } else { + return value; } } - function find(map, name) { - name = name.toLowerCase(); - for (const key in map) { - if (key.toLowerCase() === name) { - return key; - } - } - return void 0; + function isDefined(value) { + return value !== void 0 && value !== null; } - var MAP = Symbol('map'); - var Headers = class { - constructor() { - let init = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : void 0; - this[MAP] = Object.create(null); - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } + function isKeyOperator(operator) { + return operator === ';' || operator === '&' || operator === '?'; + } + function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + if (isDefined(value) && value !== '') { + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { + value = value.toString(); + if (modifier && modifier !== '*') { + value = value.substring(0, parseInt(modifier, 10)); } - return; - } - if (init == null); - else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : '')); + } else { + if (modifier === '*') { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : '')); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); } } else { - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + '=' + tmp.join(',')); + } else if (tmp.length !== 0) { + result.push(tmp.join(',')); } } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === void 0) { - return null; - } - return this[MAP][key].join(', '); - } - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== void 0 ? key : name] = [value]; - } - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== void 0) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; } - } - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== void 0; - } - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== void 0) { - delete this[MAP][key]; + } else { + if (operator === ';') { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === '' && (operator === '&' || operator === '?')) { + result.push(encodeUnreserved(key) + '='); + } else if (value === '') { + result.push(''); } } - raw() { - return this[MAP]; - } - keys() { - return createHeadersIterator(this, 'key'); - } - values() { - return createHeadersIterator(this, 'value'); - } - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } - }; - Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true - }); - Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } - }); - function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'key+value'; - const keys = Object.keys(headers[MAP]).sort(); - return keys.map( - kind === 'key' - ? function (k) { - return k.toLowerCase(); - } - : kind === 'value' - ? function (k) { - return headers[MAP][k].join(', '); - } - : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - } - ); + return result; } - var INTERNAL = Symbol('internal'); - function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 + function parseUrl(template) { + return { + expand: expand.bind(null, template) }; - return iterator; } - var HeadersIteratorPrototype = Object.setPrototypeOf( - { - next() { - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: void 0, - done: true - }; + function expand(template, context) { + var operators = ['+', '#', '.', '/', ';', '?', '&']; + template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ''; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); } - this[INTERNAL].index = index + 1; - return { - value: values[index], - done: false - }; - } - }, - Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) - ); - Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true - }); - function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== void 0) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - return obj; - } - function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === void 0) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== '+') { + var separator = ','; + if (operator === '?') { + separator = '&'; + } else if (operator !== '#') { + separator = operator; } + return (values.length !== 0 ? operator : '') + values.join(separator); + } else { + return values.join(','); } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; + } else { + return encodeReserved(literal); } + }); + if (template === '/') { + return template; + } else { + return template.replace(/\/$/, ''); } - return headers; } - var INTERNALS$1 = Symbol('Response internals'); - var STATUS_CODES = http.STATUS_CODES; - var Response = class { - constructor() { - let body2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - Body.call(this, body2, opts); - const status = opts.status || 200; - const headers = new Headers(opts.headers); - if (body2 != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body2); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - get url() { - return this[INTERNALS$1].url || ''; - } - get status() { - return this[INTERNALS$1].status; - } - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - get redirected() { - return this[INTERNALS$1].counter > 0; - } - get statusText() { - return this[INTERNALS$1].statusText; - } - get headers() { - return this[INTERNALS$1].headers; - } - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); + function parse2(options) { + let method = options.method.toUpperCase(); + let url = (options.url || '/').replace(/:([a-z]\w+)/g, '{$1}'); + let headers = Object.assign({}, options.headers); + let body2; + let parameters = omit(options, ['method', 'baseUrl', 'url', 'headers', 'request', 'mediaType']); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; } - }; - Body.mixIn(Response.prototype); - Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } - }); - Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true - }); - var INTERNALS$2 = Symbol('Request internals'); - var URL2 = Url.URL || whatwgUrl.URL; - var parse_url = Url.parse; - var format_url = Url.format; - function parseURL(urlStr) { - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL2(urlStr).toString(); - } - return parse_url(urlStr); - } - var streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; - } - function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); - } - var Request = class { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let parsedURL; - if (!isRequest(input)) { - if (input && input.href) { - parsedURL = parseURL(input.href); - } else { - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - if ((init.body != null || (isRequest(input) && input.body !== null)) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); + const omittedParameters = Object.keys(options) + .filter(option => urlVariableNames.includes(option)) + .concat('baseUrl'); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept + .split(/,/) + .map(format => + format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ) + .join(','); } - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - const headers = new Headers(init.headers || input.headers || {}); - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); + if (url.endsWith('/graphql')) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/(? { + const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; + return `application/vnd.github.${preview}-preview${format}`; + }) + .join(','); } } - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - this.follow = init.follow !== void 0 ? init.follow : input.follow !== void 0 ? input.follow : 20; - this.compress = init.compress !== void 0 ? init.compress : input.compress !== void 0 ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - get method() { - return this[INTERNALS$2].method; - } - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - get headers() { - return this[INTERNALS$2].headers; - } - get redirect() { - return this[INTERNALS$2].redirect; - } - get signal() { - return this[INTERNALS$2].signal; - } - clone() { - return new Request(this); - } - }; - Body.mixIn(Request.prototype); - Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true - }); - Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } - }); - function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); } - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); + if (['GET', 'HEAD'].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ('data' in remainingParameters) { + body2 = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body2 = remainingParameters; + } } } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); + if (!headers['content-type'] && typeof body2 !== 'undefined') { + headers['content-type'] = 'application/json; charset=utf-8'; } - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); + if (['PATCH', 'PUT'].includes(method) && typeof body2 === 'undefined') { + body2 = ''; } - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); + return Object.assign( + { method, url, headers }, + typeof body2 !== 'undefined' ? { body: body2 } : null, + options.request ? { request: options.request } : null + ); } - function AbortError(message) { - Error.call(this, message); - this.type = 'aborted'; - this.message = message; - Error.captureStackTrace(this, this.constructor); - } - AbortError.prototype = Object.create(Error.prototype); - AbortError.prototype.constructor = AbortError; - AbortError.prototype.name = 'AbortError'; - var URL$1 = Url.URL || whatwgUrl.URL; - var PassThrough$1 = Stream.PassThrough; - var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { - const orig = new URL$1(original).hostname; - const dest = new URL$1(destination).hostname; - return orig === dest || (orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest)); - }; - function fetch(url, opts) { - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - Body.Promise = fetch.Promise; - return new fetch.Promise(function (resolve, reject) { - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - let response = null; - const abort = function abort2() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - if (signal && signal.aborted) { - abort(); - return; - } - const abortAndFinalize = function abortAndFinalize2() { - abort(); - finalize(); - }; - const req = send(options); - let reqTimeout; - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - req.on('response', function (res) { - clearTimeout(reqTimeout); - const headers = createHeadersLenient(res.headers); - if (fetch.isRedirect(res.statusCode)) { - const location = headers.get('Location'); - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1(location, request.url).toString(); - } catch (err) { - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } - switch (request.redirect) { - case 'error': - reject( - new FetchError( - `uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, - 'no-redirect' - ) - ); - finalize(); - return; - case 'manual': - if (locationURL !== null) { - try { - headers.set('Location', locationURL); - } catch (err) { - reject(err); - } - } - break; - case 'follow': - if (locationURL === null) { - break; - } - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - if (res.statusCode === 303 || ((res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST')) { - requestOpts.method = 'GET'; - requestOpts.body = void 0; - requestOpts.headers.delete('content-length'); - } - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body2 = res.pipe(new PassThrough$1()); - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - const codings = headers.get('Content-Encoding'); - if ( - !request.compress || - request.method === 'HEAD' || - codings === null || - res.statusCode === 204 || - res.statusCode === 304 - ) { - response = new Response(body2, response_options); - resolve(response); - return; - } - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - if (codings == 'gzip' || codings == 'x-gzip') { - body2 = body2.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body2, response_options); - resolve(response); - return; - } - if (codings == 'deflate' || codings == 'x-deflate') { - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - if ((chunk[0] & 15) === 8) { - body2 = body2.pipe(zlib.createInflate()); - } else { - body2 = body2.pipe(zlib.createInflateRaw()); - } - response = new Response(body2, response_options); - resolve(response); - }); - return; - } - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body2 = body2.pipe(zlib.createBrotliDecompress()); - response = new Response(body2, response_options); - resolve(response); - return; - } - response = new Response(body2, response_options); - resolve(response); - }); - writeToStream(req, request); + function endpointWithDefaults(defaults, route, options) { + return parse2(merge(defaults, route, options)); + } + function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse: parse2 }); } - fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; - }; - fetch.Promise = global.Promise; - module2.exports = exports2 = fetch; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.default = exports2; - exports2.Headers = Headers; - exports2.Request = Request; - exports2.Response = Response; - exports2.FetchError = FetchError; + var endpoint = withDefaults(null, DEFAULTS); } }); @@ -14190,16 +19872,46 @@ var require_once = __commonJS({ // node_modules/@octokit/request-error/dist-node/index.js var require_dist_node4 = __commonJS({ - 'node_modules/@octokit/request-error/dist-node/index.js'(exports2) { + 'node_modules/@octokit/request-error/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function _interopDefault(ex) { - return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex; - } - var deprecation = require_dist_node3(); - var once = _interopDefault(require_once()); - var logOnceCode = once(deprecation2 => console.warn(deprecation2)); - var logOnceHeaders = once(deprecation2 => console.warn(deprecation2)); + var __create2 = Object.create; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __getProtoOf2 = Object.getPrototypeOf; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM2 = (mod, isNodeMode, target) => ( + (target = mod != null ? __create2(__getProtoOf2(mod)) : {}), + __copyProps2( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp2(target, 'default', { value: mod, enumerable: true }) : target, + mod + ) + ); + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + RequestError: () => RequestError + }); + module2.exports = __toCommonJS2(dist_src_exports); + var import_deprecation = require_dist_node3(); + var import_once = __toESM2(require_once()); + var logOnceCode = (0, import_once.default)(deprecation => console.warn(deprecation)); + var logOnceHeaders = (0, import_once.default)(deprecation => console.warn(deprecation)); var RequestError = class extends Error { constructor(message, statusCode, options) { super(message); @@ -14219,7 +19931,7 @@ var require_dist_node4 = __commonJS({ const requestCopy = Object.assign({}, options.request); if (options.request.headers.authorization) { requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, ' [REDACTED]') + authorization: options.request.headers.authorization.replace(/(? { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + request: () => request + }); + module2.exports = __toCommonJS2(dist_src_exports); + var import_endpoint = require_dist_node2(); + var import_universal_user_agent = require_dist_node(); + var VERSION = '8.4.0'; + function isPlainObject(value) { + if (typeof value !== 'object' || value === null) return false; + if (Object.prototype.toString.call(value) !== '[object Object]') return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return ( + typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value) + ); + } + var import_request_error = require_dist_node4(); function getBufferResponse(response) { return response.arrayBuffer(); } function fetchWrapper(requestOptions) { + var _a, _b, _c, _d; const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; + if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { requestOptions.body = JSON.stringify(requestOptions.body); } let headers = {}; let status; let url; - const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch; - return fetch( - requestOptions.url, - Object.assign( - { - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, - requestOptions.request - ) - ) + let { fetch } = globalThis; + if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { + fetch = requestOptions.request.fetch; + } + if (!fetch) { + throw new Error( + 'fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing' + ); + } + return fetch(requestOptions.url, { + method: requestOptions.method, + body: requestOptions.body, + redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect, + headers: requestOptions.headers, + signal: (_d = requestOptions.request) == null ? void 0 : _d.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...(requestOptions.body && { duplex: 'half' }) + }) .then(async response => { url = response.url; status = response.status; @@ -14308,7 +20056,7 @@ var require_dist_node5 = __commonJS({ if (status < 400) { return; } - throw new requestError.RequestError(response.statusText, status, { + throw new import_request_error.RequestError(response.statusText, status, { response: { url, status, @@ -14319,7 +20067,7 @@ var require_dist_node5 = __commonJS({ }); } if (status === 304) { - throw new requestError.RequestError('Not modified', status, { + throw new import_request_error.RequestError('Not modified', status, { response: { url, status, @@ -14331,7 +20079,7 @@ var require_dist_node5 = __commonJS({ } if (status >= 400) { const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { + const error = new import_request_error.RequestError(toErrorMessage(data), status, { response: { url, status, @@ -14342,7 +20090,7 @@ var require_dist_node5 = __commonJS({ }); throw error; } - return getResponseData(response); + return parseSuccessResponseBody ? await getResponseData(response) : response.body; }) .then(data => { return { @@ -14353,8 +20101,17 @@ var require_dist_node5 = __commonJS({ }; }) .catch(error => { - if (error instanceof requestError.RequestError) throw error; - throw new requestError.RequestError(error.message, 500, { + if (error instanceof import_request_error.RequestError) throw error; + else if (error.name === 'AbortError') throw error; + let message = error.message; + if (error.name === 'TypeError' && 'cause' in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === 'string') { + message = error.cause; + } + } + throw new import_request_error.RequestError(message, 500, { request: requestOptions }); }); @@ -14362,7 +20119,10 @@ var require_dist_node5 = __commonJS({ async function getResponseData(response) { const contentType = response.headers.get('content-type'); if (/application\/json/.test(contentType)) { - return response.json(); + return response + .json() + .catch(() => response.text()) + .catch(() => ''); } if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { return response.text(); @@ -14371,11 +20131,17 @@ var require_dist_node5 = __commonJS({ } function toErrorMessage(data) { if (typeof data === 'string') return data; + let suffix; + if ('documentation_url' in data) { + suffix = ` - ${data.documentation_url}`; + } else { + suffix = ''; + } if ('message' in data) { if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(', ')}`; + return `${data.message}: ${data.errors.map(JSON.stringify).join(', ')}${suffix}`; } - return data.message; + return `${data.message}${suffix}`; } return `Unknown error: ${JSON.stringify(data)}`; } @@ -14400,23 +20166,46 @@ var require_dist_node5 = __commonJS({ defaults: withDefaults.bind(null, endpoint2) }); } - var request = withDefaults(endpoint.endpoint, { + var request = withDefaults(import_endpoint.endpoint, { headers: { - 'user-agent': `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + 'user-agent': `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` } }); - exports2.request = request; } }); // node_modules/@octokit/graphql/dist-node/index.js var require_dist_node6 = __commonJS({ - 'node_modules/@octokit/graphql/dist-node/index.js'(exports2) { + 'node_modules/@octokit/graphql/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var request = require_dist_node5(); - var universalUserAgent = require_dist_node(); - var VERSION = '4.8.0'; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + GraphqlResponseError: () => GraphqlResponseError, + graphql: () => graphql2, + withCustomRequest: () => withCustomRequest + }); + module2.exports = __toCommonJS2(dist_src_exports); + var import_request3 = require_dist_node5(); + var import_universal_user_agent = require_dist_node(); + var VERSION = '7.1.0'; + var import_request2 = require_dist_node5(); + var import_request = require_dist_node5(); function _buildMessageForResponseErrors(data) { return ( `Request failed due to following response errors: @@ -14450,15 +20239,7 @@ var require_dist_node6 = __commonJS({ return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); } } - const parsedOptions = - typeof query === 'string' - ? Object.assign( - { - query - }, - options - ) - : query; + const parsedOptions = typeof query === 'string' ? Object.assign({ query }, options) : query; const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { if (NON_VARIABLE_OPTIONS.includes(key)) { result[key] = parsedOptions[key]; @@ -14485,19 +20266,19 @@ var require_dist_node6 = __commonJS({ return response.data.data; }); } - function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); + function withDefaults(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); const newApi = (query, options) => { return graphql(newRequest, query, options); }; return Object.assign(newApi, { defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint + endpoint: newRequest.endpoint }); } - var graphql$1 = withDefaults(request.request, { + var graphql2 = withDefaults(import_request3.request, { headers: { - 'user-agent': `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` + 'user-agent': `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` }, method: 'POST', url: '/graphql' @@ -14508,17 +20289,34 @@ var require_dist_node6 = __commonJS({ url: '/graphql' }); } - exports2.GraphqlResponseError = GraphqlResponseError; - exports2.graphql = graphql$1; - exports2.withCustomRequest = withCustomRequest; } }); // node_modules/@octokit/auth-token/dist-node/index.js var require_dist_node7 = __commonJS({ - 'node_modules/@octokit/auth-token/dist-node/index.js'(exports2) { + 'node_modules/@octokit/auth-token/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + } + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + createTokenAuth: () => createTokenAuth + }); + module2.exports = __toCommonJS2(dist_src_exports); var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; var REGEX_IS_INSTALLATION = /^ghs_/; var REGEX_IS_USER_TO_SERVER = /^ghu_/; @@ -14556,56 +20354,97 @@ var require_dist_node7 = __commonJS({ hook: hook.bind(null, token2) }); }; - exports2.createTokenAuth = createTokenAuth; } }); // node_modules/@octokit/core/dist-node/index.js var require_dist_node8 = __commonJS({ - 'node_modules/@octokit/core/dist-node/index.js'(exports2) { + 'node_modules/@octokit/core/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var universalUserAgent = require_dist_node(); - var beforeAfterHook = require_before_after_hook(); - var request = require_dist_node5(); - var graphql = require_dist_node6(); - var authToken = require_dist_node7(); - function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - return target; - } - function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - var target = _objectWithoutPropertiesLoose(source, excluded); - var key, i; - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); } - return target; - } - var VERSION = '3.6.0'; - var _excluded = ['authStrategy']; + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + Octokit: () => Octokit + }); + module2.exports = __toCommonJS2(dist_src_exports); + var import_universal_user_agent = require_dist_node(); + var import_before_after_hook = require_before_after_hook(); + var import_request = require_dist_node5(); + var import_graphql = require_dist_node6(); + var import_auth_token = require_dist_node7(); + var VERSION = '5.2.0'; + var noop = () => {}; + var consoleWarn = console.warn.bind(console); + var consoleError = console.error.bind(console); + var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; var Octokit = class { + static { + this.VERSION = VERSION; + } + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults === 'function') { + super(defaults(options)); + return; + } + super( + Object.assign( + {}, + defaults, + options, + options.userAgent && defaults.userAgent + ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } + : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static { + this.plugins = []; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static { + this.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))); + } + }; + return NewOctokit; + } constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); + const hook = new import_before_after_hook.Collection(); const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, + baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, headers: {}, request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type hook: hook.bind(null, 'request') }), mediaType: { @@ -14613,12 +20452,7 @@ var require_dist_node8 = __commonJS({ format: '' } }; - requestDefaults.headers['user-agent'] = [ - options.userAgent, - `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}` - ] - .filter(Boolean) - .join(' '); + requestDefaults.headers['user-agent'] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; if (options.baseUrl) { requestDefaults.baseUrl = options.baseUrl; } @@ -14628,14 +20462,14 @@ var require_dist_node8 = __commonJS({ if (options.timeZone) { requestDefaults.headers['time-zone'] = options.timeZone; } - this.request = request.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); + this.request = import_request.request.defaults(requestDefaults); + this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults); this.log = Object.assign( { - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) + debug: noop, + info: noop, + warn: consoleWarn, + error: consoleError }, options.log ); @@ -14646,18 +20480,22 @@ var require_dist_node8 = __commonJS({ type: 'unauthenticated' }); } else { - const auth = authToken.createTokenAuth(options.auth); + const auth = (0, import_auth_token.createTokenAuth)(options.auth); hook.wrap('request', auth.hook); this.auth = auth; } } else { - const { authStrategy } = options, - otherOptions = _objectWithoutProperties(options, _excluded); + const { authStrategy, ...otherOptions } = options; const auth = authStrategy( Object.assign( { request: this.request, log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. octokit: this, octokitOptions: otherOptions }, @@ -14668,121 +20506,71 @@ var require_dist_node8 = __commonJS({ this.auth = auth; } const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === 'function') { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } - : null - ) - ); - } - }; - return OctokitWithDefaults; - } - static plugin(...newPlugins) { - var _a; - const currentPlugins = this.plugins; - const NewOctokit = - ((_a = class extends this {}), - (_a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin)))), - _a); - return NewOctokit; - } - }; - Octokit.VERSION = VERSION; - Octokit.plugins = []; - exports2.Octokit = Octokit; - } -}); - -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js -var require_dist_node9 = __commonJS({ - 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) { - symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - } - keys.push.apply(keys, symbols); - } - return keys; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); } } - return target; - } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; + }; + } +}); + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js +var require_dist_node9 = __commonJS({ + 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js'(exports2, module2) { + 'use strict'; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); } - return obj; - } + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + legacyRestEndpointMethods: () => legacyRestEndpointMethods, + restEndpointMethods: () => restEndpointMethods + }); + module2.exports = __toCommonJS2(dist_src_exports); + var VERSION = '10.4.1'; var Endpoints = { actions: { addCustomLabelsToSelfHostedRunnerForOrg: ['POST /orgs/{org}/actions/runners/{runner_id}/labels'], addCustomLabelsToSelfHostedRunnerForRepo: ['POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels'], addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}'], + addSelectedRepoToOrgVariable: ['PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}'], approveWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve'], cancelWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel'], + createEnvironmentVariable: ['POST /repositories/{repository_id}/environments/{environment_name}/variables'], createOrUpdateEnvironmentSecret: [ 'PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}' ], createOrUpdateOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}'], createOrUpdateRepoSecret: ['PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}'], + createOrgVariable: ['POST /orgs/{org}/actions/variables'], createRegistrationTokenForOrg: ['POST /orgs/{org}/actions/runners/registration-token'], createRegistrationTokenForRepo: ['POST /repos/{owner}/{repo}/actions/runners/registration-token'], createRemoveTokenForOrg: ['POST /orgs/{org}/actions/runners/remove-token'], createRemoveTokenForRepo: ['POST /repos/{owner}/{repo}/actions/runners/remove-token'], + createRepoVariable: ['POST /repos/{owner}/{repo}/actions/variables'], createWorkflowDispatch: ['POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches'], deleteActionsCacheById: ['DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}'], deleteActionsCacheByKey: ['DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}'], deleteArtifact: ['DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}'], deleteEnvironmentSecret: ['DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}'], + deleteEnvironmentVariable: ['DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], deleteOrgSecret: ['DELETE /orgs/{org}/actions/secrets/{secret_name}'], + deleteOrgVariable: ['DELETE /orgs/{org}/actions/variables/{name}'], deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}'], + deleteRepoVariable: ['DELETE /repos/{owner}/{repo}/actions/variables/{name}'], deleteSelfHostedRunnerFromOrg: ['DELETE /orgs/{org}/actions/runners/{runner_id}'], deleteSelfHostedRunnerFromRepo: ['DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}'], deleteWorkflowRun: ['DELETE /repos/{owner}/{repo}/actions/runs/{run_id}'], @@ -14797,17 +20585,20 @@ var require_dist_node9 = __commonJS({ downloadWorkflowRunLogs: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs'], enableSelectedRepositoryGithubActionsOrganization: ['PUT /orgs/{org}/actions/permissions/repositories/{repository_id}'], enableWorkflow: ['PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable'], + forceCancelWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel'], + generateRunnerJitconfigForOrg: ['POST /orgs/{org}/actions/runners/generate-jitconfig'], + generateRunnerJitconfigForRepo: ['POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig'], getActionsCacheList: ['GET /repos/{owner}/{repo}/actions/caches'], getActionsCacheUsage: ['GET /repos/{owner}/{repo}/actions/cache/usage'], getActionsCacheUsageByRepoForOrg: ['GET /orgs/{org}/actions/cache/usage-by-repository'], - getActionsCacheUsageForEnterprise: ['GET /enterprises/{enterprise}/actions/cache/usage'], getActionsCacheUsageForOrg: ['GET /orgs/{org}/actions/cache/usage'], getAllowedActionsOrganization: ['GET /orgs/{org}/actions/permissions/selected-actions'], getAllowedActionsRepository: ['GET /repos/{owner}/{repo}/actions/permissions/selected-actions'], getArtifact: ['GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}'], + getCustomOidcSubClaimForRepo: ['GET /repos/{owner}/{repo}/actions/oidc/customization/sub'], getEnvironmentPublicKey: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key'], getEnvironmentSecret: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}'], - getGithubActionsDefaultWorkflowPermissionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions/workflow'], + getEnvironmentVariable: ['GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], getGithubActionsDefaultWorkflowPermissionsOrganization: ['GET /orgs/{org}/actions/permissions/workflow'], getGithubActionsDefaultWorkflowPermissionsRepository: ['GET /repos/{owner}/{repo}/actions/permissions/workflow'], getGithubActionsPermissionsOrganization: ['GET /orgs/{org}/actions/permissions'], @@ -14815,16 +20606,16 @@ var require_dist_node9 = __commonJS({ getJobForWorkflowRun: ['GET /repos/{owner}/{repo}/actions/jobs/{job_id}'], getOrgPublicKey: ['GET /orgs/{org}/actions/secrets/public-key'], getOrgSecret: ['GET /orgs/{org}/actions/secrets/{secret_name}'], + getOrgVariable: ['GET /orgs/{org}/actions/variables/{name}'], getPendingDeploymentsForRun: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments'], getRepoPermissions: [ 'GET /repos/{owner}/{repo}/actions/permissions', {}, - { - renamed: ['actions', 'getGithubActionsPermissionsRepository'] - } + { renamed: ['actions', 'getGithubActionsPermissionsRepository'] } ], getRepoPublicKey: ['GET /repos/{owner}/{repo}/actions/secrets/public-key'], getRepoSecret: ['GET /repos/{owner}/{repo}/actions/secrets/{secret_name}'], + getRepoVariable: ['GET /repos/{owner}/{repo}/actions/variables/{name}'], getReviewsForRun: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals'], getSelfHostedRunnerForOrg: ['GET /orgs/{org}/actions/runners/{runner_id}'], getSelfHostedRunnerForRepo: ['GET /repos/{owner}/{repo}/actions/runners/{runner_id}'], @@ -14836,16 +20627,22 @@ var require_dist_node9 = __commonJS({ getWorkflowUsage: ['GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing'], listArtifactsForRepo: ['GET /repos/{owner}/{repo}/actions/artifacts'], listEnvironmentSecrets: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets'], + listEnvironmentVariables: ['GET /repositories/{repository_id}/environments/{environment_name}/variables'], listJobsForWorkflowRun: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs'], listJobsForWorkflowRunAttempt: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs'], listLabelsForSelfHostedRunnerForOrg: ['GET /orgs/{org}/actions/runners/{runner_id}/labels'], listLabelsForSelfHostedRunnerForRepo: ['GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels'], listOrgSecrets: ['GET /orgs/{org}/actions/secrets'], + listOrgVariables: ['GET /orgs/{org}/actions/variables'], + listRepoOrganizationSecrets: ['GET /repos/{owner}/{repo}/actions/organization-secrets'], + listRepoOrganizationVariables: ['GET /repos/{owner}/{repo}/actions/organization-variables'], listRepoSecrets: ['GET /repos/{owner}/{repo}/actions/secrets'], + listRepoVariables: ['GET /repos/{owner}/{repo}/actions/variables'], listRepoWorkflows: ['GET /repos/{owner}/{repo}/actions/workflows'], listRunnerApplicationsForOrg: ['GET /orgs/{org}/actions/runners/downloads'], listRunnerApplicationsForRepo: ['GET /repos/{owner}/{repo}/actions/runners/downloads'], listSelectedReposForOrgSecret: ['GET /orgs/{org}/actions/secrets/{secret_name}/repositories'], + listSelectedReposForOrgVariable: ['GET /orgs/{org}/actions/variables/{name}/repositories'], listSelectedRepositoriesEnabledGithubActionsOrganization: ['GET /orgs/{org}/actions/permissions/repositories'], listSelfHostedRunnersForOrg: ['GET /orgs/{org}/actions/runners'], listSelfHostedRunnersForRepo: ['GET /repos/{owner}/{repo}/actions/runners'], @@ -14860,19 +20657,25 @@ var require_dist_node9 = __commonJS({ removeCustomLabelFromSelfHostedRunnerForOrg: ['DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}'], removeCustomLabelFromSelfHostedRunnerForRepo: ['DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}'], removeSelectedRepoFromOrgSecret: ['DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}'], + removeSelectedRepoFromOrgVariable: ['DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}'], + reviewCustomGatesForRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule'], reviewPendingDeploymentsForRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments'], setAllowedActionsOrganization: ['PUT /orgs/{org}/actions/permissions/selected-actions'], setAllowedActionsRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/selected-actions'], setCustomLabelsForSelfHostedRunnerForOrg: ['PUT /orgs/{org}/actions/runners/{runner_id}/labels'], setCustomLabelsForSelfHostedRunnerForRepo: ['PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels'], - setGithubActionsDefaultWorkflowPermissionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions/workflow'], + setCustomOidcSubClaimForRepo: ['PUT /repos/{owner}/{repo}/actions/oidc/customization/sub'], setGithubActionsDefaultWorkflowPermissionsOrganization: ['PUT /orgs/{org}/actions/permissions/workflow'], setGithubActionsDefaultWorkflowPermissionsRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/workflow'], setGithubActionsPermissionsOrganization: ['PUT /orgs/{org}/actions/permissions'], setGithubActionsPermissionsRepository: ['PUT /repos/{owner}/{repo}/actions/permissions'], setSelectedReposForOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}/repositories'], + setSelectedReposForOrgVariable: ['PUT /orgs/{org}/actions/variables/{name}/repositories'], setSelectedRepositoriesEnabledGithubActionsOrganization: ['PUT /orgs/{org}/actions/permissions/repositories'], - setWorkflowAccessToRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/access'] + setWorkflowAccessToRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/access'], + updateEnvironmentVariable: ['PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], + updateOrgVariable: ['PATCH /orgs/{org}/actions/variables/{name}'], + updateRepoVariable: ['PATCH /repos/{owner}/{repo}/actions/variables/{name}'] }, activity: { checkRepoIsStarredByAuthenticatedUser: ['GET /user/starred/{owner}/{repo}'], @@ -14901,6 +20704,7 @@ var require_dist_node9 = __commonJS({ listWatchersForRepo: ['GET /repos/{owner}/{repo}/subscribers'], markNotificationsAsRead: ['PUT /notifications'], markRepoNotificationsAsRead: ['PUT /repos/{owner}/{repo}/notifications'], + markThreadAsDone: ['DELETE /notifications/threads/{thread_id}'], markThreadAsRead: ['PATCH /notifications/threads/{thread_id}'], setRepoSubscription: ['PUT /repos/{owner}/{repo}/subscription'], setThreadSubscription: ['PUT /notifications/threads/{thread_id}/subscription'], @@ -14911,9 +20715,7 @@ var require_dist_node9 = __commonJS({ addRepoToInstallation: [ 'PUT /user/installations/{installation_id}/repositories/{repository_id}', {}, - { - renamed: ['apps', 'addRepoToInstallationForAuthenticatedUser'] - } + { renamed: ['apps', 'addRepoToInstallationForAuthenticatedUser'] } ], addRepoToInstallationForAuthenticatedUser: ['PUT /user/installations/{installation_id}/repositories/{repository_id}'], checkToken: ['POST /applications/{client_id}/token'], @@ -14935,6 +20737,7 @@ var require_dist_node9 = __commonJS({ listAccountsForPlan: ['GET /marketplace_listing/plans/{plan_id}/accounts'], listAccountsForPlanStubbed: ['GET /marketplace_listing/stubbed/plans/{plan_id}/accounts'], listInstallationReposForAuthenticatedUser: ['GET /user/installations/{installation_id}/repositories'], + listInstallationRequestsForAuthenticatedApp: ['GET /app/installation-requests'], listInstallations: ['GET /app/installations'], listInstallationsForAuthenticatedUser: ['GET /user/installations'], listPlans: ['GET /marketplace_listing/plans'], @@ -14947,9 +20750,7 @@ var require_dist_node9 = __commonJS({ removeRepoFromInstallation: [ 'DELETE /user/installations/{installation_id}/repositories/{repository_id}', {}, - { - renamed: ['apps', 'removeRepoFromInstallationForAuthenticatedUser'] - } + { renamed: ['apps', 'removeRepoFromInstallationForAuthenticatedUser'] } ], removeRepoFromInstallationForAuthenticatedUser: [ 'DELETE /user/installations/{installation_id}/repositories/{repository_id}' @@ -14964,8 +20765,6 @@ var require_dist_node9 = __commonJS({ billing: { getGithubActionsBillingOrg: ['GET /orgs/{org}/settings/billing/actions'], getGithubActionsBillingUser: ['GET /users/{username}/settings/billing/actions'], - getGithubAdvancedSecurityBillingGhe: ['GET /enterprises/{enterprise}/settings/billing/advanced-security'], - getGithubAdvancedSecurityBillingOrg: ['GET /orgs/{org}/settings/billing/advanced-security'], getGithubPackagesBillingOrg: ['GET /orgs/{org}/settings/billing/packages'], getGithubPackagesBillingUser: ['GET /users/{username}/settings/billing/packages'], getSharedStorageBillingOrg: ['GET /orgs/{org}/settings/billing/shared-storage'], @@ -14990,13 +20789,11 @@ var require_dist_node9 = __commonJS({ getAlert: [ 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}', {}, - { - renamedParameters: { - alert_id: 'alert_number' - } - } + { renamedParameters: { alert_id: 'alert_number' } } ], getAnalysis: ['GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}'], + getCodeqlDatabase: ['GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}'], + getDefaultSetup: ['GET /repos/{owner}/{repo}/code-scanning/default-setup'], getSarif: ['GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}'], listAlertInstances: ['GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances'], listAlertsForOrg: ['GET /orgs/{org}/code-scanning/alerts'], @@ -15004,12 +20801,12 @@ var require_dist_node9 = __commonJS({ listAlertsInstances: [ 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances', {}, - { - renamed: ['codeScanning', 'listAlertInstances'] - } + { renamed: ['codeScanning', 'listAlertInstances'] } ], + listCodeqlDatabases: ['GET /repos/{owner}/{repo}/code-scanning/codeql/databases'], listRecentAnalyses: ['GET /repos/{owner}/{repo}/code-scanning/analyses'], updateAlert: ['PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}'], + updateDefaultSetup: ['PATCH /repos/{owner}/{repo}/code-scanning/default-setup'], uploadSarif: ['POST /repos/{owner}/{repo}/code-scanning/sarifs'] }, codesOfConduct: { @@ -15018,99 +20815,89 @@ var require_dist_node9 = __commonJS({ }, codespaces: { addRepositoryForSecretForAuthenticatedUser: ['PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}'], + addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}'], + checkPermissionsForDevcontainer: ['GET /repos/{owner}/{repo}/codespaces/permissions_check'], codespaceMachinesForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}/machines'], createForAuthenticatedUser: ['POST /user/codespaces'], + createOrUpdateOrgSecret: ['PUT /orgs/{org}/codespaces/secrets/{secret_name}'], createOrUpdateRepoSecret: ['PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}'], createOrUpdateSecretForAuthenticatedUser: ['PUT /user/codespaces/secrets/{secret_name}'], createWithPrForAuthenticatedUser: ['POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces'], createWithRepoForAuthenticatedUser: ['POST /repos/{owner}/{repo}/codespaces'], deleteForAuthenticatedUser: ['DELETE /user/codespaces/{codespace_name}'], deleteFromOrganization: ['DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}'], + deleteOrgSecret: ['DELETE /orgs/{org}/codespaces/secrets/{secret_name}'], deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}'], deleteSecretForAuthenticatedUser: ['DELETE /user/codespaces/secrets/{secret_name}'], exportForAuthenticatedUser: ['POST /user/codespaces/{codespace_name}/exports'], + getCodespacesForUserInOrg: ['GET /orgs/{org}/members/{username}/codespaces'], getExportDetailsForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}/exports/{export_id}'], getForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}'], + getOrgPublicKey: ['GET /orgs/{org}/codespaces/secrets/public-key'], + getOrgSecret: ['GET /orgs/{org}/codespaces/secrets/{secret_name}'], getPublicKeyForAuthenticatedUser: ['GET /user/codespaces/secrets/public-key'], getRepoPublicKey: ['GET /repos/{owner}/{repo}/codespaces/secrets/public-key'], getRepoSecret: ['GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}'], getSecretForAuthenticatedUser: ['GET /user/codespaces/secrets/{secret_name}'], listDevcontainersInRepositoryForAuthenticatedUser: ['GET /repos/{owner}/{repo}/codespaces/devcontainers'], listForAuthenticatedUser: ['GET /user/codespaces'], - listInOrganization: [ - 'GET /orgs/{org}/codespaces', - {}, - { - renamedParameters: { - org_id: 'org' - } - } - ], + listInOrganization: ['GET /orgs/{org}/codespaces', {}, { renamedParameters: { org_id: 'org' } }], listInRepositoryForAuthenticatedUser: ['GET /repos/{owner}/{repo}/codespaces'], + listOrgSecrets: ['GET /orgs/{org}/codespaces/secrets'], listRepoSecrets: ['GET /repos/{owner}/{repo}/codespaces/secrets'], listRepositoriesForSecretForAuthenticatedUser: ['GET /user/codespaces/secrets/{secret_name}/repositories'], listSecretsForAuthenticatedUser: ['GET /user/codespaces/secrets'], + listSelectedReposForOrgSecret: ['GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories'], + preFlightWithRepoForAuthenticatedUser: ['GET /repos/{owner}/{repo}/codespaces/new'], + publishForAuthenticatedUser: ['POST /user/codespaces/{codespace_name}/publish'], removeRepositoryForSecretForAuthenticatedUser: [ 'DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}' ], + removeSelectedRepoFromOrgSecret: ['DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}'], repoMachinesForAuthenticatedUser: ['GET /repos/{owner}/{repo}/codespaces/machines'], setRepositoriesForSecretForAuthenticatedUser: ['PUT /user/codespaces/secrets/{secret_name}/repositories'], + setSelectedReposForOrgSecret: ['PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories'], startForAuthenticatedUser: ['POST /user/codespaces/{codespace_name}/start'], stopForAuthenticatedUser: ['POST /user/codespaces/{codespace_name}/stop'], stopInOrganization: ['POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop'], updateForAuthenticatedUser: ['PATCH /user/codespaces/{codespace_name}'] }, + copilot: { + addCopilotSeatsForTeams: ['POST /orgs/{org}/copilot/billing/selected_teams'], + addCopilotSeatsForUsers: ['POST /orgs/{org}/copilot/billing/selected_users'], + cancelCopilotSeatAssignmentForTeams: ['DELETE /orgs/{org}/copilot/billing/selected_teams'], + cancelCopilotSeatAssignmentForUsers: ['DELETE /orgs/{org}/copilot/billing/selected_users'], + getCopilotOrganizationDetails: ['GET /orgs/{org}/copilot/billing'], + getCopilotSeatDetailsForUser: ['GET /orgs/{org}/members/{username}/copilot'], + listCopilotSeats: ['GET /orgs/{org}/copilot/billing/seats'] + }, dependabot: { addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}'], createOrUpdateOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}'], createOrUpdateRepoSecret: ['PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}'], deleteOrgSecret: ['DELETE /orgs/{org}/dependabot/secrets/{secret_name}'], deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}'], + getAlert: ['GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}'], getOrgPublicKey: ['GET /orgs/{org}/dependabot/secrets/public-key'], getOrgSecret: ['GET /orgs/{org}/dependabot/secrets/{secret_name}'], getRepoPublicKey: ['GET /repos/{owner}/{repo}/dependabot/secrets/public-key'], getRepoSecret: ['GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}'], + listAlertsForEnterprise: ['GET /enterprises/{enterprise}/dependabot/alerts'], + listAlertsForOrg: ['GET /orgs/{org}/dependabot/alerts'], + listAlertsForRepo: ['GET /repos/{owner}/{repo}/dependabot/alerts'], listOrgSecrets: ['GET /orgs/{org}/dependabot/secrets'], listRepoSecrets: ['GET /repos/{owner}/{repo}/dependabot/secrets'], listSelectedReposForOrgSecret: ['GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories'], removeSelectedRepoFromOrgSecret: ['DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}'], - setSelectedReposForOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories'] + setSelectedReposForOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories'], + updateAlert: ['PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}'] }, dependencyGraph: { createRepositorySnapshot: ['POST /repos/{owner}/{repo}/dependency-graph/snapshots'], - diffRange: ['GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}'] - }, - emojis: { - get: ['GET /emojis'] - }, - enterpriseAdmin: { - addCustomLabelsToSelfHostedRunnerForEnterprise: ['POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels'], - disableSelectedOrganizationGithubActionsEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}' - ], - enableSelectedOrganizationGithubActionsEnterprise: [ - 'PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}' - ], - getAllowedActionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions/selected-actions'], - getGithubActionsPermissionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions'], - getServerStatistics: ['GET /enterprise-installation/{enterprise_or_org}/server-statistics'], - listLabelsForSelfHostedRunnerForEnterprise: ['GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels'], - listSelectedOrganizationsEnabledGithubActionsEnterprise: [ - 'GET /enterprises/{enterprise}/actions/permissions/organizations' - ], - removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels' - ], - removeCustomLabelFromSelfHostedRunnerForEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}' - ], - setAllowedActionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions/selected-actions'], - setCustomLabelsForSelfHostedRunnerForEnterprise: ['PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels'], - setGithubActionsPermissionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions'], - setSelectedOrganizationsEnabledGithubActionsEnterprise: [ - 'PUT /enterprises/{enterprise}/actions/permissions/organizations' - ] + diffRange: ['GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}'], + exportSbom: ['GET /repos/{owner}/{repo}/dependency-graph/sbom'] }, + emojis: { get: ['GET /emojis'] }, gists: { checkIsStarred: ['GET /gists/{gist_id}/star'], create: ['POST /gists'], @@ -15159,9 +20946,7 @@ var require_dist_node9 = __commonJS({ getRestrictionsForYourPublicRepos: [ 'GET /user/interaction-limits', {}, - { - renamed: ['interactions', 'getRestrictionsForAuthenticatedUser'] - } + { renamed: ['interactions', 'getRestrictionsForAuthenticatedUser'] } ], removeRestrictionsForAuthenticatedUser: ['DELETE /user/interaction-limits'], removeRestrictionsForOrg: ['DELETE /orgs/{org}/interaction-limits'], @@ -15169,9 +20954,7 @@ var require_dist_node9 = __commonJS({ removeRestrictionsForYourPublicRepos: [ 'DELETE /user/interaction-limits', {}, - { - renamed: ['interactions', 'removeRestrictionsForAuthenticatedUser'] - } + { renamed: ['interactions', 'removeRestrictionsForAuthenticatedUser'] } ], setRestrictionsForAuthenticatedUser: ['PUT /user/interaction-limits'], setRestrictionsForOrg: ['PUT /orgs/{org}/interaction-limits'], @@ -15179,15 +20962,14 @@ var require_dist_node9 = __commonJS({ setRestrictionsForYourPublicRepos: [ 'PUT /user/interaction-limits', {}, - { - renamed: ['interactions', 'setRestrictionsForAuthenticatedUser'] - } + { renamed: ['interactions', 'setRestrictionsForAuthenticatedUser'] } ] }, issues: { addAssignees: ['POST /repos/{owner}/{repo}/issues/{issue_number}/assignees'], addLabels: ['POST /repos/{owner}/{repo}/issues/{issue_number}/labels'], checkUserCanBeAssigned: ['GET /repos/{owner}/{repo}/assignees/{assignee}'], + checkUserCanBeAssignedToIssue: ['GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}'], create: ['POST /repos/{owner}/{repo}/issues'], createComment: ['POST /repos/{owner}/{repo}/issues/{issue_number}/comments'], createLabel: ['POST /repos/{owner}/{repo}/labels'], @@ -15232,30 +21014,52 @@ var require_dist_node9 = __commonJS({ }, markdown: { render: ['POST /markdown'], - renderRaw: [ - 'POST /markdown/raw', - { - headers: { - 'content-type': 'text/plain; charset=utf-8' - } - } - ] + renderRaw: ['POST /markdown/raw', { headers: { 'content-type': 'text/plain; charset=utf-8' } }] }, meta: { get: ['GET /meta'], + getAllVersions: ['GET /versions'], getOctocat: ['GET /octocat'], getZen: ['GET /zen'], root: ['GET /'] }, migrations: { - cancelImport: ['DELETE /repos/{owner}/{repo}/import'], + cancelImport: [ + 'DELETE /repos/{owner}/{repo}/import', + {}, + { + deprecated: + 'octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import' + } + ], deleteArchiveForAuthenticatedUser: ['DELETE /user/migrations/{migration_id}/archive'], deleteArchiveForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/archive'], downloadArchiveForOrg: ['GET /orgs/{org}/migrations/{migration_id}/archive'], getArchiveForAuthenticatedUser: ['GET /user/migrations/{migration_id}/archive'], - getCommitAuthors: ['GET /repos/{owner}/{repo}/import/authors'], - getImportStatus: ['GET /repos/{owner}/{repo}/import'], - getLargeFiles: ['GET /repos/{owner}/{repo}/import/large_files'], + getCommitAuthors: [ + 'GET /repos/{owner}/{repo}/import/authors', + {}, + { + deprecated: + 'octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors' + } + ], + getImportStatus: [ + 'GET /repos/{owner}/{repo}/import', + {}, + { + deprecated: + 'octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status' + } + ], + getLargeFiles: [ + 'GET /repos/{owner}/{repo}/import/large_files', + {}, + { + deprecated: + 'octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files' + } + ], getStatusForAuthenticatedUser: ['GET /user/migrations/{migration_id}'], getStatusForOrg: ['GET /orgs/{org}/migrations/{migration_id}'], listForAuthenticatedUser: ['GET /user/migrations'], @@ -15265,61 +21069,124 @@ var require_dist_node9 = __commonJS({ listReposForUser: [ 'GET /user/migrations/{migration_id}/repositories', {}, + { renamed: ['migrations', 'listReposForAuthenticatedUser'] } + ], + mapCommitAuthor: [ + 'PATCH /repos/{owner}/{repo}/import/authors/{author_id}', + {}, + { + deprecated: + 'octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author' + } + ], + setLfsPreference: [ + 'PATCH /repos/{owner}/{repo}/import/lfs', + {}, { - renamed: ['migrations', 'listReposForAuthenticatedUser'] + deprecated: + 'octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference' } ], - mapCommitAuthor: ['PATCH /repos/{owner}/{repo}/import/authors/{author_id}'], - setLfsPreference: ['PATCH /repos/{owner}/{repo}/import/lfs'], startForAuthenticatedUser: ['POST /user/migrations'], startForOrg: ['POST /orgs/{org}/migrations'], - startImport: ['PUT /repos/{owner}/{repo}/import'], + startImport: [ + 'PUT /repos/{owner}/{repo}/import', + {}, + { + deprecated: + 'octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import' + } + ], unlockRepoForAuthenticatedUser: ['DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock'], unlockRepoForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock'], - updateImport: ['PATCH /repos/{owner}/{repo}/import'] + updateImport: [ + 'PATCH /repos/{owner}/{repo}/import', + {}, + { + deprecated: + 'octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import' + } + ] + }, + oidc: { + getOidcCustomSubTemplateForOrg: ['GET /orgs/{org}/actions/oidc/customization/sub'], + updateOidcCustomSubTemplateForOrg: ['PUT /orgs/{org}/actions/oidc/customization/sub'] }, orgs: { + addSecurityManagerTeam: ['PUT /orgs/{org}/security-managers/teams/{team_slug}'], + assignTeamToOrgRole: ['PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}'], + assignUserToOrgRole: ['PUT /orgs/{org}/organization-roles/users/{username}/{role_id}'], blockUser: ['PUT /orgs/{org}/blocks/{username}'], cancelInvitation: ['DELETE /orgs/{org}/invitations/{invitation_id}'], checkBlockedUser: ['GET /orgs/{org}/blocks/{username}'], checkMembershipForUser: ['GET /orgs/{org}/members/{username}'], checkPublicMembershipForUser: ['GET /orgs/{org}/public_members/{username}'], convertMemberToOutsideCollaborator: ['PUT /orgs/{org}/outside_collaborators/{username}'], + createCustomOrganizationRole: ['POST /orgs/{org}/organization-roles'], createInvitation: ['POST /orgs/{org}/invitations'], + createOrUpdateCustomProperties: ['PATCH /orgs/{org}/properties/schema'], + createOrUpdateCustomPropertiesValuesForRepos: ['PATCH /orgs/{org}/properties/values'], + createOrUpdateCustomProperty: ['PUT /orgs/{org}/properties/schema/{custom_property_name}'], createWebhook: ['POST /orgs/{org}/hooks'], + delete: ['DELETE /orgs/{org}'], + deleteCustomOrganizationRole: ['DELETE /orgs/{org}/organization-roles/{role_id}'], deleteWebhook: ['DELETE /orgs/{org}/hooks/{hook_id}'], + enableOrDisableSecurityProductOnAllOrgRepos: ['POST /orgs/{org}/{security_product}/{enablement}'], get: ['GET /orgs/{org}'], + getAllCustomProperties: ['GET /orgs/{org}/properties/schema'], + getCustomProperty: ['GET /orgs/{org}/properties/schema/{custom_property_name}'], getMembershipForAuthenticatedUser: ['GET /user/memberships/orgs/{org}'], getMembershipForUser: ['GET /orgs/{org}/memberships/{username}'], + getOrgRole: ['GET /orgs/{org}/organization-roles/{role_id}'], getWebhook: ['GET /orgs/{org}/hooks/{hook_id}'], getWebhookConfigForOrg: ['GET /orgs/{org}/hooks/{hook_id}/config'], getWebhookDelivery: ['GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}'], list: ['GET /organizations'], listAppInstallations: ['GET /orgs/{org}/installations'], listBlockedUsers: ['GET /orgs/{org}/blocks'], - listCustomRoles: ['GET /organizations/{organization_id}/custom_roles'], + listCustomPropertiesValuesForRepos: ['GET /orgs/{org}/properties/values'], listFailedInvitations: ['GET /orgs/{org}/failed_invitations'], listForAuthenticatedUser: ['GET /user/orgs'], listForUser: ['GET /users/{username}/orgs'], listInvitationTeams: ['GET /orgs/{org}/invitations/{invitation_id}/teams'], listMembers: ['GET /orgs/{org}/members'], listMembershipsForAuthenticatedUser: ['GET /user/memberships/orgs'], + listOrgRoleTeams: ['GET /orgs/{org}/organization-roles/{role_id}/teams'], + listOrgRoleUsers: ['GET /orgs/{org}/organization-roles/{role_id}/users'], + listOrgRoles: ['GET /orgs/{org}/organization-roles'], + listOrganizationFineGrainedPermissions: ['GET /orgs/{org}/organization-fine-grained-permissions'], listOutsideCollaborators: ['GET /orgs/{org}/outside_collaborators'], + listPatGrantRepositories: ['GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories'], + listPatGrantRequestRepositories: ['GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories'], + listPatGrantRequests: ['GET /orgs/{org}/personal-access-token-requests'], + listPatGrants: ['GET /orgs/{org}/personal-access-tokens'], listPendingInvitations: ['GET /orgs/{org}/invitations'], listPublicMembers: ['GET /orgs/{org}/public_members'], + listSecurityManagerTeams: ['GET /orgs/{org}/security-managers'], listWebhookDeliveries: ['GET /orgs/{org}/hooks/{hook_id}/deliveries'], listWebhooks: ['GET /orgs/{org}/hooks'], + patchCustomOrganizationRole: ['PATCH /orgs/{org}/organization-roles/{role_id}'], pingWebhook: ['POST /orgs/{org}/hooks/{hook_id}/pings'], redeliverWebhookDelivery: ['POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts'], + removeCustomProperty: ['DELETE /orgs/{org}/properties/schema/{custom_property_name}'], removeMember: ['DELETE /orgs/{org}/members/{username}'], removeMembershipForUser: ['DELETE /orgs/{org}/memberships/{username}'], removeOutsideCollaborator: ['DELETE /orgs/{org}/outside_collaborators/{username}'], removePublicMembershipForAuthenticatedUser: ['DELETE /orgs/{org}/public_members/{username}'], + removeSecurityManagerTeam: ['DELETE /orgs/{org}/security-managers/teams/{team_slug}'], + reviewPatGrantRequest: ['POST /orgs/{org}/personal-access-token-requests/{pat_request_id}'], + reviewPatGrantRequestsInBulk: ['POST /orgs/{org}/personal-access-token-requests'], + revokeAllOrgRolesTeam: ['DELETE /orgs/{org}/organization-roles/teams/{team_slug}'], + revokeAllOrgRolesUser: ['DELETE /orgs/{org}/organization-roles/users/{username}'], + revokeOrgRoleTeam: ['DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}'], + revokeOrgRoleUser: ['DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}'], setMembershipForUser: ['PUT /orgs/{org}/memberships/{username}'], setPublicMembershipForAuthenticatedUser: ['PUT /orgs/{org}/public_members/{username}'], unblockUser: ['DELETE /orgs/{org}/blocks/{username}'], update: ['PATCH /orgs/{org}'], updateMembershipForAuthenticatedUser: ['PATCH /user/memberships/orgs/{org}'], + updatePatAccess: ['POST /orgs/{org}/personal-access-tokens/{pat_id}'], + updatePatAccesses: ['POST /orgs/{org}/personal-access-tokens'], updateWebhook: ['PATCH /orgs/{org}/hooks/{hook_id}'], updateWebhookConfigForOrg: ['PATCH /orgs/{org}/hooks/{hook_id}/config'] }, @@ -15337,9 +21204,7 @@ var require_dist_node9 = __commonJS({ getAllPackageVersionsForAPackageOwnedByAnOrg: [ 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', {}, - { - renamed: ['packages', 'getAllPackageVersionsForPackageOwnedByOrg'] - } + { renamed: ['packages', 'getAllPackageVersionsForPackageOwnedByOrg'] } ], getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ 'GET /user/packages/{package_type}/{package_name}/versions', @@ -15359,6 +21224,9 @@ var require_dist_node9 = __commonJS({ 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}' ], getPackageVersionForUser: ['GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}'], + listDockerMigrationConflictingPackagesForAuthenticatedUser: ['GET /user/docker/conflicts'], + listDockerMigrationConflictingPackagesForOrganization: ['GET /orgs/{org}/docker/conflicts'], + listDockerMigrationConflictingPackagesForUser: ['GET /users/{username}/docker/conflicts'], listPackagesForAuthenticatedUser: ['GET /user/packages'], listPackagesForOrganization: ['GET /orgs/{org}/packages'], listPackagesForUser: ['GET /users/{username}/packages'], @@ -15431,9 +21299,7 @@ var require_dist_node9 = __commonJS({ updateReview: ['PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}'], updateReviewComment: ['PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}'] }, - rateLimit: { - get: ['GET /rate_limit'] - }, + rateLimit: { get: ['GET /rate_limit'] }, reactions: { createForCommitComment: ['POST /repos/{owner}/{repo}/comments/{comment_id}/reactions'], createForIssue: ['POST /repos/{owner}/{repo}/issues/{issue_number}/reactions'], @@ -15467,40 +21333,32 @@ var require_dist_node9 = __commonJS({ acceptInvitation: [ 'PATCH /user/repository_invitations/{invitation_id}', {}, - { - renamed: ['repos', 'acceptInvitationForAuthenticatedUser'] - } + { renamed: ['repos', 'acceptInvitationForAuthenticatedUser'] } ], acceptInvitationForAuthenticatedUser: ['PATCH /user/repository_invitations/{invitation_id}'], addAppAccessRestrictions: [ 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', {}, - { - mapToData: 'apps' - } + { mapToData: 'apps' } ], addCollaborator: ['PUT /repos/{owner}/{repo}/collaborators/{username}'], addStatusCheckContexts: [ 'POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', {}, - { - mapToData: 'contexts' - } + { mapToData: 'contexts' } ], addTeamAccessRestrictions: [ 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', {}, - { - mapToData: 'teams' - } + { mapToData: 'teams' } ], addUserAccessRestrictions: [ 'POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', {}, - { - mapToData: 'users' - } + { mapToData: 'users' } ], + cancelPagesDeployment: ['POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel'], + checkAutomatedSecurityFixes: ['GET /repos/{owner}/{repo}/automated-security-fixes'], checkCollaborator: ['GET /repos/{owner}/{repo}/collaborators/{username}'], checkVulnerabilityAlerts: ['GET /repos/{owner}/{repo}/vulnerability-alerts'], codeownersErrors: ['GET /repos/{owner}/{repo}/codeowners/errors'], @@ -15512,24 +21370,30 @@ var require_dist_node9 = __commonJS({ createCommitStatus: ['POST /repos/{owner}/{repo}/statuses/{sha}'], createDeployKey: ['POST /repos/{owner}/{repo}/keys'], createDeployment: ['POST /repos/{owner}/{repo}/deployments'], + createDeploymentBranchPolicy: ['POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies'], + createDeploymentProtectionRule: [ + 'POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules' + ], createDeploymentStatus: ['POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses'], createDispatchEvent: ['POST /repos/{owner}/{repo}/dispatches'], createForAuthenticatedUser: ['POST /user/repos'], createFork: ['POST /repos/{owner}/{repo}/forks'], createInOrg: ['POST /orgs/{org}/repos'], + createOrUpdateCustomPropertiesValues: ['PATCH /repos/{owner}/{repo}/properties/values'], createOrUpdateEnvironment: ['PUT /repos/{owner}/{repo}/environments/{environment_name}'], createOrUpdateFileContents: ['PUT /repos/{owner}/{repo}/contents/{path}'], + createOrgRuleset: ['POST /orgs/{org}/rulesets'], + createPagesDeployment: ['POST /repos/{owner}/{repo}/pages/deployments'], createPagesSite: ['POST /repos/{owner}/{repo}/pages'], createRelease: ['POST /repos/{owner}/{repo}/releases'], + createRepoRuleset: ['POST /repos/{owner}/{repo}/rulesets'], createTagProtection: ['POST /repos/{owner}/{repo}/tags/protection'], createUsingTemplate: ['POST /repos/{template_owner}/{template_repo}/generate'], createWebhook: ['POST /repos/{owner}/{repo}/hooks'], declineInvitation: [ 'DELETE /user/repository_invitations/{invitation_id}', {}, - { - renamed: ['repos', 'declineInvitationForAuthenticatedUser'] - } + { renamed: ['repos', 'declineInvitationForAuthenticatedUser'] } ], declineInvitationForAuthenticatedUser: ['DELETE /user/repository_invitations/{invitation_id}'], delete: ['DELETE /repos/{owner}/{repo}'], @@ -15542,35 +21406,40 @@ var require_dist_node9 = __commonJS({ deleteCommitSignatureProtection: ['DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures'], deleteDeployKey: ['DELETE /repos/{owner}/{repo}/keys/{key_id}'], deleteDeployment: ['DELETE /repos/{owner}/{repo}/deployments/{deployment_id}'], + deleteDeploymentBranchPolicy: [ + 'DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}' + ], deleteFile: ['DELETE /repos/{owner}/{repo}/contents/{path}'], deleteInvitation: ['DELETE /repos/{owner}/{repo}/invitations/{invitation_id}'], + deleteOrgRuleset: ['DELETE /orgs/{org}/rulesets/{ruleset_id}'], deletePagesSite: ['DELETE /repos/{owner}/{repo}/pages'], deletePullRequestReviewProtection: [ 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews' ], deleteRelease: ['DELETE /repos/{owner}/{repo}/releases/{release_id}'], deleteReleaseAsset: ['DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}'], + deleteRepoRuleset: ['DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}'], deleteTagProtection: ['DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}'], deleteWebhook: ['DELETE /repos/{owner}/{repo}/hooks/{hook_id}'], disableAutomatedSecurityFixes: ['DELETE /repos/{owner}/{repo}/automated-security-fixes'], - disableLfsForRepo: ['DELETE /repos/{owner}/{repo}/lfs'], - disableVulnerabilityAlerts: ['DELETE /repos/{owner}/{repo}/vulnerability-alerts'], - downloadArchive: [ - 'GET /repos/{owner}/{repo}/zipball/{ref}', - {}, - { - renamed: ['repos', 'downloadZipballArchive'] - } + disableDeploymentProtectionRule: [ + 'DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}' ], + disablePrivateVulnerabilityReporting: ['DELETE /repos/{owner}/{repo}/private-vulnerability-reporting'], + disableVulnerabilityAlerts: ['DELETE /repos/{owner}/{repo}/vulnerability-alerts'], + downloadArchive: ['GET /repos/{owner}/{repo}/zipball/{ref}', {}, { renamed: ['repos', 'downloadZipballArchive'] }], downloadTarballArchive: ['GET /repos/{owner}/{repo}/tarball/{ref}'], downloadZipballArchive: ['GET /repos/{owner}/{repo}/zipball/{ref}'], enableAutomatedSecurityFixes: ['PUT /repos/{owner}/{repo}/automated-security-fixes'], - enableLfsForRepo: ['PUT /repos/{owner}/{repo}/lfs'], + enablePrivateVulnerabilityReporting: ['PUT /repos/{owner}/{repo}/private-vulnerability-reporting'], enableVulnerabilityAlerts: ['PUT /repos/{owner}/{repo}/vulnerability-alerts'], generateReleaseNotes: ['POST /repos/{owner}/{repo}/releases/generate-notes'], get: ['GET /repos/{owner}/{repo}'], getAccessRestrictions: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions'], getAdminBranchProtection: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins'], + getAllDeploymentProtectionRules: [ + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules' + ], getAllEnvironments: ['GET /repos/{owner}/{repo}/environments'], getAllStatusCheckContexts: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts'], getAllTopics: ['GET /repos/{owner}/{repo}/topics'], @@ -15578,6 +21447,7 @@ var require_dist_node9 = __commonJS({ getAutolink: ['GET /repos/{owner}/{repo}/autolinks/{autolink_id}'], getBranch: ['GET /repos/{owner}/{repo}/branches/{branch}'], getBranchProtection: ['GET /repos/{owner}/{repo}/branches/{branch}/protection'], + getBranchRules: ['GET /repos/{owner}/{repo}/rules/branches/{branch}'], getClones: ['GET /repos/{owner}/{repo}/traffic/clones'], getCodeFrequencyStats: ['GET /repos/{owner}/{repo}/stats/code_frequency'], getCollaboratorPermissionLevel: ['GET /repos/{owner}/{repo}/collaborators/{username}/permission'], @@ -15589,14 +21459,26 @@ var require_dist_node9 = __commonJS({ getCommunityProfileMetrics: ['GET /repos/{owner}/{repo}/community/profile'], getContent: ['GET /repos/{owner}/{repo}/contents/{path}'], getContributorsStats: ['GET /repos/{owner}/{repo}/stats/contributors'], + getCustomDeploymentProtectionRule: [ + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}' + ], + getCustomPropertiesValues: ['GET /repos/{owner}/{repo}/properties/values'], getDeployKey: ['GET /repos/{owner}/{repo}/keys/{key_id}'], getDeployment: ['GET /repos/{owner}/{repo}/deployments/{deployment_id}'], + getDeploymentBranchPolicy: [ + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}' + ], getDeploymentStatus: ['GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}'], getEnvironment: ['GET /repos/{owner}/{repo}/environments/{environment_name}'], getLatestPagesBuild: ['GET /repos/{owner}/{repo}/pages/builds/latest'], getLatestRelease: ['GET /repos/{owner}/{repo}/releases/latest'], + getOrgRuleSuite: ['GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}'], + getOrgRuleSuites: ['GET /orgs/{org}/rulesets/rule-suites'], + getOrgRuleset: ['GET /orgs/{org}/rulesets/{ruleset_id}'], + getOrgRulesets: ['GET /orgs/{org}/rulesets'], getPages: ['GET /repos/{owner}/{repo}/pages'], getPagesBuild: ['GET /repos/{owner}/{repo}/pages/builds/{build_id}'], + getPagesDeployment: ['GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}'], getPagesHealthCheck: ['GET /repos/{owner}/{repo}/pages/health'], getParticipationStats: ['GET /repos/{owner}/{repo}/stats/participation'], getPullRequestReviewProtection: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews'], @@ -15606,6 +21488,10 @@ var require_dist_node9 = __commonJS({ getRelease: ['GET /repos/{owner}/{repo}/releases/{release_id}'], getReleaseAsset: ['GET /repos/{owner}/{repo}/releases/assets/{asset_id}'], getReleaseByTag: ['GET /repos/{owner}/{repo}/releases/tags/{tag}'], + getRepoRuleSuite: ['GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}'], + getRepoRuleSuites: ['GET /repos/{owner}/{repo}/rulesets/rule-suites'], + getRepoRuleset: ['GET /repos/{owner}/{repo}/rulesets/{ruleset_id}'], + getRepoRulesets: ['GET /repos/{owner}/{repo}/rulesets'], getStatusChecksProtection: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks'], getTeamsWithAccessToProtectedBranch: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams'], getTopPaths: ['GET /repos/{owner}/{repo}/traffic/popular/paths'], @@ -15615,6 +21501,7 @@ var require_dist_node9 = __commonJS({ getWebhook: ['GET /repos/{owner}/{repo}/hooks/{hook_id}'], getWebhookConfigForRepo: ['GET /repos/{owner}/{repo}/hooks/{hook_id}/config'], getWebhookDelivery: ['GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}'], + listActivities: ['GET /repos/{owner}/{repo}/activity'], listAutolinks: ['GET /repos/{owner}/{repo}/autolinks'], listBranches: ['GET /repos/{owner}/{repo}/branches'], listBranchesForHeadCommit: ['GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head'], @@ -15624,7 +21511,11 @@ var require_dist_node9 = __commonJS({ listCommitStatusesForRef: ['GET /repos/{owner}/{repo}/commits/{ref}/statuses'], listCommits: ['GET /repos/{owner}/{repo}/commits'], listContributors: ['GET /repos/{owner}/{repo}/contributors'], + listCustomDeploymentRuleIntegrations: [ + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps' + ], listDeployKeys: ['GET /repos/{owner}/{repo}/keys'], + listDeploymentBranchPolicies: ['GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies'], listDeploymentStatuses: ['GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses'], listDeployments: ['GET /repos/{owner}/{repo}/deployments'], listForAuthenticatedUser: ['GET /user/repos'], @@ -15651,32 +21542,24 @@ var require_dist_node9 = __commonJS({ removeAppAccessRestrictions: [ 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', {}, - { - mapToData: 'apps' - } + { mapToData: 'apps' } ], removeCollaborator: ['DELETE /repos/{owner}/{repo}/collaborators/{username}'], removeStatusCheckContexts: [ 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', {}, - { - mapToData: 'contexts' - } + { mapToData: 'contexts' } ], removeStatusCheckProtection: ['DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks'], removeTeamAccessRestrictions: [ 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', {}, - { - mapToData: 'teams' - } + { mapToData: 'teams' } ], removeUserAccessRestrictions: [ 'DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', {}, - { - mapToData: 'users' - } + { mapToData: 'users' } ], renameBranch: ['POST /repos/{owner}/{repo}/branches/{branch}/rename'], replaceAllTopics: ['PUT /repos/{owner}/{repo}/topics'], @@ -15685,58 +21568,51 @@ var require_dist_node9 = __commonJS({ setAppAccessRestrictions: [ 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps', {}, - { - mapToData: 'apps' - } + { mapToData: 'apps' } ], setStatusCheckContexts: [ 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts', {}, - { - mapToData: 'contexts' - } + { mapToData: 'contexts' } ], setTeamAccessRestrictions: [ 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams', {}, - { - mapToData: 'teams' - } + { mapToData: 'teams' } ], setUserAccessRestrictions: [ 'PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users', {}, - { - mapToData: 'users' - } + { mapToData: 'users' } ], testPushWebhook: ['POST /repos/{owner}/{repo}/hooks/{hook_id}/tests'], transfer: ['POST /repos/{owner}/{repo}/transfer'], update: ['PATCH /repos/{owner}/{repo}'], updateBranchProtection: ['PUT /repos/{owner}/{repo}/branches/{branch}/protection'], updateCommitComment: ['PATCH /repos/{owner}/{repo}/comments/{comment_id}'], + updateDeploymentBranchPolicy: [ + 'PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}' + ], updateInformationAboutPagesSite: ['PUT /repos/{owner}/{repo}/pages'], updateInvitation: ['PATCH /repos/{owner}/{repo}/invitations/{invitation_id}'], + updateOrgRuleset: ['PUT /orgs/{org}/rulesets/{ruleset_id}'], updatePullRequestReviewProtection: [ 'PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews' ], updateRelease: ['PATCH /repos/{owner}/{repo}/releases/{release_id}'], updateReleaseAsset: ['PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}'], + updateRepoRuleset: ['PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}'], updateStatusCheckPotection: [ 'PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks', {}, - { - renamed: ['repos', 'updateStatusCheckProtection'] - } + { renamed: ['repos', 'updateStatusCheckProtection'] } ], updateStatusCheckProtection: ['PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks'], updateWebhook: ['PATCH /repos/{owner}/{repo}/hooks/{hook_id}'], updateWebhookConfigForRepo: ['PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config'], uploadReleaseAsset: [ 'POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}', - { - baseUrl: 'https://uploads.github.com' - } + { baseUrl: 'https://uploads.github.com' } ] }, search: { @@ -15756,6 +21632,18 @@ var require_dist_node9 = __commonJS({ listLocationsForAlert: ['GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations'], updateAlert: ['PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'] }, + securityAdvisories: { + createFork: ['POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks'], + createPrivateVulnerabilityReport: ['POST /repos/{owner}/{repo}/security-advisories/reports'], + createRepositoryAdvisory: ['POST /repos/{owner}/{repo}/security-advisories'], + createRepositoryAdvisoryCveRequest: ['POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve'], + getGlobalAdvisory: ['GET /advisories/{ghsa_id}'], + getRepositoryAdvisory: ['GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}'], + listGlobalAdvisories: ['GET /advisories'], + listOrgRepositoryAdvisories: ['GET /orgs/{org}/security-advisories'], + listRepositoryAdvisories: ['GET /repos/{owner}/{repo}/security-advisories'], + updateRepositoryAdvisory: ['PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}'] + }, teams: { addOrUpdateMembershipForUserInOrg: ['PUT /orgs/{org}/teams/{team_slug}/memberships/{username}'], addOrUpdateProjectPermissionsInOrg: ['PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}'], @@ -15795,58 +21683,38 @@ var require_dist_node9 = __commonJS({ updateInOrg: ['PATCH /orgs/{org}/teams/{team_slug}'] }, users: { - addEmailForAuthenticated: [ - 'POST /user/emails', - {}, - { - renamed: ['users', 'addEmailForAuthenticatedUser'] - } - ], + addEmailForAuthenticated: ['POST /user/emails', {}, { renamed: ['users', 'addEmailForAuthenticatedUser'] }], addEmailForAuthenticatedUser: ['POST /user/emails'], + addSocialAccountForAuthenticatedUser: ['POST /user/social_accounts'], block: ['PUT /user/blocks/{username}'], checkBlocked: ['GET /user/blocks/{username}'], checkFollowingForUser: ['GET /users/{username}/following/{target_user}'], checkPersonIsFollowedByAuthenticated: ['GET /user/following/{username}'], - createGpgKeyForAuthenticated: [ - 'POST /user/gpg_keys', - {}, - { - renamed: ['users', 'createGpgKeyForAuthenticatedUser'] - } - ], + createGpgKeyForAuthenticated: ['POST /user/gpg_keys', {}, { renamed: ['users', 'createGpgKeyForAuthenticatedUser'] }], createGpgKeyForAuthenticatedUser: ['POST /user/gpg_keys'], createPublicSshKeyForAuthenticated: [ 'POST /user/keys', {}, - { - renamed: ['users', 'createPublicSshKeyForAuthenticatedUser'] - } + { renamed: ['users', 'createPublicSshKeyForAuthenticatedUser'] } ], createPublicSshKeyForAuthenticatedUser: ['POST /user/keys'], - deleteEmailForAuthenticated: [ - 'DELETE /user/emails', - {}, - { - renamed: ['users', 'deleteEmailForAuthenticatedUser'] - } - ], + createSshSigningKeyForAuthenticatedUser: ['POST /user/ssh_signing_keys'], + deleteEmailForAuthenticated: ['DELETE /user/emails', {}, { renamed: ['users', 'deleteEmailForAuthenticatedUser'] }], deleteEmailForAuthenticatedUser: ['DELETE /user/emails'], deleteGpgKeyForAuthenticated: [ 'DELETE /user/gpg_keys/{gpg_key_id}', {}, - { - renamed: ['users', 'deleteGpgKeyForAuthenticatedUser'] - } + { renamed: ['users', 'deleteGpgKeyForAuthenticatedUser'] } ], deleteGpgKeyForAuthenticatedUser: ['DELETE /user/gpg_keys/{gpg_key_id}'], deletePublicSshKeyForAuthenticated: [ 'DELETE /user/keys/{key_id}', {}, - { - renamed: ['users', 'deletePublicSshKeyForAuthenticatedUser'] - } + { renamed: ['users', 'deletePublicSshKeyForAuthenticatedUser'] } ], deletePublicSshKeyForAuthenticatedUser: ['DELETE /user/keys/{key_id}'], + deleteSocialAccountForAuthenticatedUser: ['DELETE /user/social_accounts'], + deleteSshSigningKeyForAuthenticatedUser: ['DELETE /user/ssh_signing_keys/{ssh_signing_key_id}'], follow: ['PUT /user/following/{username}'], getAuthenticated: ['GET /user'], getByUsername: ['GET /users/{username}'], @@ -15854,79 +21722,50 @@ var require_dist_node9 = __commonJS({ getGpgKeyForAuthenticated: [ 'GET /user/gpg_keys/{gpg_key_id}', {}, - { - renamed: ['users', 'getGpgKeyForAuthenticatedUser'] - } + { renamed: ['users', 'getGpgKeyForAuthenticatedUser'] } ], getGpgKeyForAuthenticatedUser: ['GET /user/gpg_keys/{gpg_key_id}'], getPublicSshKeyForAuthenticated: [ 'GET /user/keys/{key_id}', {}, - { - renamed: ['users', 'getPublicSshKeyForAuthenticatedUser'] - } + { renamed: ['users', 'getPublicSshKeyForAuthenticatedUser'] } ], getPublicSshKeyForAuthenticatedUser: ['GET /user/keys/{key_id}'], + getSshSigningKeyForAuthenticatedUser: ['GET /user/ssh_signing_keys/{ssh_signing_key_id}'], list: ['GET /users'], - listBlockedByAuthenticated: [ - 'GET /user/blocks', - {}, - { - renamed: ['users', 'listBlockedByAuthenticatedUser'] - } - ], + listBlockedByAuthenticated: ['GET /user/blocks', {}, { renamed: ['users', 'listBlockedByAuthenticatedUser'] }], listBlockedByAuthenticatedUser: ['GET /user/blocks'], - listEmailsForAuthenticated: [ - 'GET /user/emails', - {}, - { - renamed: ['users', 'listEmailsForAuthenticatedUser'] - } - ], + listEmailsForAuthenticated: ['GET /user/emails', {}, { renamed: ['users', 'listEmailsForAuthenticatedUser'] }], listEmailsForAuthenticatedUser: ['GET /user/emails'], - listFollowedByAuthenticated: [ - 'GET /user/following', - {}, - { - renamed: ['users', 'listFollowedByAuthenticatedUser'] - } - ], + listFollowedByAuthenticated: ['GET /user/following', {}, { renamed: ['users', 'listFollowedByAuthenticatedUser'] }], listFollowedByAuthenticatedUser: ['GET /user/following'], listFollowersForAuthenticatedUser: ['GET /user/followers'], listFollowersForUser: ['GET /users/{username}/followers'], listFollowingForUser: ['GET /users/{username}/following'], - listGpgKeysForAuthenticated: [ - 'GET /user/gpg_keys', - {}, - { - renamed: ['users', 'listGpgKeysForAuthenticatedUser'] - } - ], + listGpgKeysForAuthenticated: ['GET /user/gpg_keys', {}, { renamed: ['users', 'listGpgKeysForAuthenticatedUser'] }], listGpgKeysForAuthenticatedUser: ['GET /user/gpg_keys'], listGpgKeysForUser: ['GET /users/{username}/gpg_keys'], listPublicEmailsForAuthenticated: [ 'GET /user/public_emails', {}, - { - renamed: ['users', 'listPublicEmailsForAuthenticatedUser'] - } + { renamed: ['users', 'listPublicEmailsForAuthenticatedUser'] } ], listPublicEmailsForAuthenticatedUser: ['GET /user/public_emails'], listPublicKeysForUser: ['GET /users/{username}/keys'], listPublicSshKeysForAuthenticated: [ 'GET /user/keys', {}, - { - renamed: ['users', 'listPublicSshKeysForAuthenticatedUser'] - } + { renamed: ['users', 'listPublicSshKeysForAuthenticatedUser'] } ], listPublicSshKeysForAuthenticatedUser: ['GET /user/keys'], + listSocialAccountsForAuthenticatedUser: ['GET /user/social_accounts'], + listSocialAccountsForUser: ['GET /users/{username}/social_accounts'], + listSshSigningKeysForAuthenticatedUser: ['GET /user/ssh_signing_keys'], + listSshSigningKeysForUser: ['GET /users/{username}/ssh_signing_keys'], setPrimaryEmailVisibilityForAuthenticated: [ 'PATCH /user/email/visibility', {}, - { - renamed: ['users', 'setPrimaryEmailVisibilityForAuthenticatedUser'] - } + { renamed: ['users', 'setPrimaryEmailVisibilityForAuthenticatedUser'] } ], setPrimaryEmailVisibilityForAuthenticatedUser: ['PATCH /user/email/visibility'], unblock: ['DELETE /user/blocks/{username}'], @@ -15934,30 +21773,78 @@ var require_dist_node9 = __commonJS({ updateAuthenticated: ['PATCH /user'] } }; - var VERSION = '5.16.2'; - function endpointsToMethods(octokit2, endpointsMap) { - const newMethods = {}; - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url - }, - defaults - ); - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - const scopeMethods = newMethods[scope]; - if (decorations) { - scopeMethods[methodName] = decorate(octokit2, scope, methodName, endpointDefaults, decorations); - continue; - } - scopeMethods[methodName] = octokit2.request.defaults(endpointDefaults); + var endpoints_default = Endpoints; + var endpointMethodsMap = /* @__PURE__ */ new Map(); + for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } + } + var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return (target.cache[methodName] = value); + }, + get({ octokit: octokit2, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate(octokit2, scope, methodName, endpointDefaults, decorations); + } else { + cache[methodName] = octokit2.request.defaults(endpointDefaults); } + return cache[methodName]; + } + }; + function endpointsToMethods(octokit2) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit: octokit2, scope, cache: {} }, handler); } return newMethods; } @@ -15999,83 +21886,58 @@ var require_dist_node9 = __commonJS({ return Object.assign(withDecorations, requestWithDefaults); } function restEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2, Endpoints); + const api = endpointsToMethods(octokit2); return { rest: api }; } restEndpointMethods.VERSION = VERSION; function legacyRestEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2, Endpoints); - return _objectSpread2( - _objectSpread2({}, api), - {}, - { - rest: api - } - ); + const api = endpointsToMethods(octokit2); + return { + ...api, + rest: api + }; } legacyRestEndpointMethods.VERSION = VERSION; - exports2.legacyRestEndpointMethods = legacyRestEndpointMethods; - exports2.restEndpointMethods = restEndpointMethods; } }); // node_modules/@octokit/plugin-paginate-rest/dist-node/index.js var require_dist_node10 = __commonJS({ - 'node_modules/@octokit/plugin-paginate-rest/dist-node/index.js'(exports2) { + 'node_modules/@octokit/plugin-paginate-rest/dist-node/index.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var VERSION = '2.21.3'; - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - enumerableOnly && - (symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - })), - keys.push.apply(keys, symbols); - } - return keys; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - i % 2 - ? ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }) - : Object.getOwnPropertyDescriptors - ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) - : ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - return target; - } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __export2 = (target, all) => { + for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps2 = (to, from, except, desc) => { + if ((from && typeof from === 'object') || typeof from === 'function') { + for (let key of __getOwnPropNames2(from)) + if (!__hasOwnProp2.call(to, key) && key !== except) + __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); } - return obj; - } + return to; + }; + var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); + var dist_src_exports = {}; + __export2(dist_src_exports, { + composePaginateRest: () => composePaginateRest, + isPaginatingEndpoint: () => isPaginatingEndpoint, + paginateRest: () => paginateRest, + paginatingEndpoints: () => paginatingEndpoints + }); + module2.exports = __toCommonJS2(dist_src_exports); + var VERSION = '9.2.1'; function normalizePaginatedListResponse(response) { if (!response.data) { - return _objectSpread2( - _objectSpread2({}, response), - {}, - { - data: [] - } - ); + return { + ...response, + data: [] + }; } const responseNeedsNormalization = 'total_count' in response.data && !('url' in response.data); if (!responseNeedsNormalization) return response; @@ -16106,21 +21968,12 @@ var require_dist_node10 = __commonJS({ return { [Symbol.asyncIterator]: () => ({ async next() { - if (!url) - return { - done: true - }; + if (!url) return { done: true }; try { - const response = await requestMethod({ - method, - url, - headers - }); + const response = await requestMethod({ method, url, headers }); const normalizedResponse = normalizePaginatedListResponse(response); url = ((normalizedResponse.headers.link || '').match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { - value: normalizedResponse - }; + return { value: normalizedResponse }; } catch (error) { if (error.status !== 409) throw error; url = ''; @@ -16163,18 +22016,15 @@ var require_dist_node10 = __commonJS({ iterator }); var paginatingEndpoints = [ + 'GET /advisories', 'GET /app/hook/deliveries', + 'GET /app/installation-requests', 'GET /app/installations', - 'GET /applications/grants', - 'GET /authorizations', - 'GET /enterprises/{enterprise}/actions/permissions/organizations', - 'GET /enterprises/{enterprise}/actions/runner-groups', - 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations', - 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners', - 'GET /enterprises/{enterprise}/actions/runners', - 'GET /enterprises/{enterprise}/audit-log', + 'GET /assignments/{assignment_id}/accepted_assignments', + 'GET /classrooms', + 'GET /classrooms/{classroom_id}/assignments', + 'GET /enterprises/{enterprise}/dependabot/alerts', 'GET /enterprises/{enterprise}/secret-scanning/alerts', - 'GET /enterprises/{enterprise}/settings/billing/advanced-security', 'GET /events', 'GET /gists', 'GET /gists/public', @@ -16194,21 +22044,21 @@ var require_dist_node10 = __commonJS({ 'GET /organizations', 'GET /orgs/{org}/actions/cache/usage-by-repository', 'GET /orgs/{org}/actions/permissions/repositories', - 'GET /orgs/{org}/actions/runner-groups', - 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories', - 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners', 'GET /orgs/{org}/actions/runners', 'GET /orgs/{org}/actions/secrets', 'GET /orgs/{org}/actions/secrets/{secret_name}/repositories', - 'GET /orgs/{org}/audit-log', + 'GET /orgs/{org}/actions/variables', + 'GET /orgs/{org}/actions/variables/{name}/repositories', 'GET /orgs/{org}/blocks', 'GET /orgs/{org}/code-scanning/alerts', 'GET /orgs/{org}/codespaces', - 'GET /orgs/{org}/credential-authorizations', + 'GET /orgs/{org}/codespaces/secrets', + 'GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories', + 'GET /orgs/{org}/copilot/billing/seats', + 'GET /orgs/{org}/dependabot/alerts', 'GET /orgs/{org}/dependabot/secrets', 'GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories', 'GET /orgs/{org}/events', - 'GET /orgs/{org}/external-groups', 'GET /orgs/{org}/failed_invitations', 'GET /orgs/{org}/hooks', 'GET /orgs/{org}/hooks/{hook_id}/deliveries', @@ -16217,17 +22067,26 @@ var require_dist_node10 = __commonJS({ 'GET /orgs/{org}/invitations/{invitation_id}/teams', 'GET /orgs/{org}/issues', 'GET /orgs/{org}/members', + 'GET /orgs/{org}/members/{username}/codespaces', 'GET /orgs/{org}/migrations', 'GET /orgs/{org}/migrations/{migration_id}/repositories', + 'GET /orgs/{org}/organization-roles/{role_id}/teams', + 'GET /orgs/{org}/organization-roles/{role_id}/users', 'GET /orgs/{org}/outside_collaborators', 'GET /orgs/{org}/packages', 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', + 'GET /orgs/{org}/personal-access-token-requests', + 'GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories', + 'GET /orgs/{org}/personal-access-tokens', + 'GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories', 'GET /orgs/{org}/projects', + 'GET /orgs/{org}/properties/values', 'GET /orgs/{org}/public_members', 'GET /orgs/{org}/repos', + 'GET /orgs/{org}/rulesets', + 'GET /orgs/{org}/rulesets/rule-suites', 'GET /orgs/{org}/secret-scanning/alerts', - 'GET /orgs/{org}/settings/billing/advanced-security', - 'GET /orgs/{org}/team-sync/groups', + 'GET /orgs/{org}/security-advisories', 'GET /orgs/{org}/teams', 'GET /orgs/{org}/teams/{team_slug}/discussions', 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', @@ -16243,14 +22102,18 @@ var require_dist_node10 = __commonJS({ 'GET /projects/{project_id}/columns', 'GET /repos/{owner}/{repo}/actions/artifacts', 'GET /repos/{owner}/{repo}/actions/caches', + 'GET /repos/{owner}/{repo}/actions/organization-secrets', + 'GET /repos/{owner}/{repo}/actions/organization-variables', 'GET /repos/{owner}/{repo}/actions/runners', 'GET /repos/{owner}/{repo}/actions/runs', 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs', 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs', 'GET /repos/{owner}/{repo}/actions/secrets', + 'GET /repos/{owner}/{repo}/actions/variables', 'GET /repos/{owner}/{repo}/actions/workflows', 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', + 'GET /repos/{owner}/{repo}/activity', 'GET /repos/{owner}/{repo}/assignees', 'GET /repos/{owner}/{repo}/branches', 'GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations', @@ -16272,13 +22135,15 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/commits/{ref}/status', 'GET /repos/{owner}/{repo}/commits/{ref}/statuses', 'GET /repos/{owner}/{repo}/contributors', + 'GET /repos/{owner}/{repo}/dependabot/alerts', 'GET /repos/{owner}/{repo}/dependabot/secrets', 'GET /repos/{owner}/{repo}/deployments', 'GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses', 'GET /repos/{owner}/{repo}/environments', + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies', + 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps', 'GET /repos/{owner}/{repo}/events', 'GET /repos/{owner}/{repo}/forks', - 'GET /repos/{owner}/{repo}/git/matching-refs/{ref}', 'GET /repos/{owner}/{repo}/hooks', 'GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries', 'GET /repos/{owner}/{repo}/invitations', @@ -16304,14 +22169,17 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/pulls/{pull_number}/comments', 'GET /repos/{owner}/{repo}/pulls/{pull_number}/commits', 'GET /repos/{owner}/{repo}/pulls/{pull_number}/files', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews', 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments', 'GET /repos/{owner}/{repo}/releases', 'GET /repos/{owner}/{repo}/releases/{release_id}/assets', 'GET /repos/{owner}/{repo}/releases/{release_id}/reactions', + 'GET /repos/{owner}/{repo}/rules/branches/{branch}', + 'GET /repos/{owner}/{repo}/rulesets', + 'GET /repos/{owner}/{repo}/rulesets/rule-suites', 'GET /repos/{owner}/{repo}/secret-scanning/alerts', 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations', + 'GET /repos/{owner}/{repo}/security-advisories', 'GET /repos/{owner}/{repo}/stargazers', 'GET /repos/{owner}/{repo}/subscribers', 'GET /repos/{owner}/{repo}/tags', @@ -16319,6 +22187,7 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/topics', 'GET /repositories', 'GET /repositories/{repository_id}/environments/{environment_name}/secrets', + 'GET /repositories/{repository_id}/environments/{environment_name}/variables', 'GET /search/code', 'GET /search/commits', 'GET /search/issues', @@ -16357,6 +22226,8 @@ var require_dist_node10 = __commonJS({ 'GET /user/public_emails', 'GET /user/repos', 'GET /user/repository_invitations', + 'GET /user/social_accounts', + 'GET /user/ssh_signing_keys', 'GET /user/starred', 'GET /user/subscriptions', 'GET /user/teams', @@ -16375,6 +22246,8 @@ var require_dist_node10 = __commonJS({ 'GET /users/{username}/received_events', 'GET /users/{username}/received_events/public', 'GET /users/{username}/repos', + 'GET /users/{username}/social_accounts', + 'GET /users/{username}/ssh_signing_keys', 'GET /users/{username}/starred', 'GET /users/{username}/subscriptions' ]; @@ -16393,10 +22266,6 @@ var require_dist_node10 = __commonJS({ }; } paginateRest.VERSION = VERSION; - exports2.composePaginateRest = composePaginateRest; - exports2.isPaginatingEndpoint = isPaginatingEndpoint; - exports2.paginateRest = paginateRest; - exports2.paginatingEndpoints = paginatingEndpoints; } }); @@ -16409,12 +22278,16 @@ var require_utils4 = __commonJS({ (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -16435,7 +22308,7 @@ var require_utils4 = __commonJS({ if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; @@ -16443,7 +22316,7 @@ var require_utils4 = __commonJS({ Object.defineProperty(exports2, '__esModule', { value: true }); exports2.getOctokitOptions = exports2.GitHub = exports2.defaults = exports2.context = void 0; var Context = __importStar(require_context()); - var Utils = __importStar(require_utils2()); + var Utils = __importStar(require_utils3()); var core_1 = require_dist_node8(); var plugin_rest_endpoint_methods_1 = require_dist_node9(); var plugin_paginate_rest_1 = require_dist_node10(); @@ -16452,7 +22325,8 @@ var require_utils4 = __commonJS({ exports2.defaults = { baseUrl, request: { - agent: Utils.getProxyAgent(baseUrl) + agent: Utils.getProxyAgent(baseUrl), + fetch: Utils.getProxyFetch(baseUrl) } }; exports2.GitHub = core_1.Octokit.plugin( @@ -16480,12 +22354,16 @@ var require_github = __commonJS({ (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -16506,7 +22384,7 @@ var require_github = __commonJS({ if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; @@ -16518,7 +22396,7 @@ var require_github = __commonJS({ exports2.context = new Context.Context(); function getOctokit(token2, options, ...additionalPlugins) { const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); - return new GitHubWithPlugins(utils_1.getOctokitOptions(token2, options)); + return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token2, options)); } exports2.getOctokit = getOctokit; } @@ -16656,10 +22534,12 @@ async function run() { if (isEmpty(assetPath) && isEmpty(assetName) && isEmpty(assetContentType)) { hasAssetToUpload = false; } else if (isEmpty(assetPath) || isEmpty(assetName) || isEmpty(assetContentType)) { - core.setFailed(`One or more arguments required to upload an asset were not provided: + core.setFailed( + `One or more arguments required to upload an asset were not provided: asset-name:'${assetName}' asset-path:'${assetPath}' - asset-content-type:'${assetContentType}'`); + asset-content-type:'${assetContentType}'` + ); return; } if (shouldDeleteExistingRelease) { @@ -16678,9 +22558,11 @@ async function run() { core.info(` Asset Browser Download URL: '${asset_browser_download_url}'`); } run(); -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ +/*! Bundled license information: + +undici/lib/fetch/body.js: + (*! formdata-polyfill. MIT License. Jimmy Wärting *) + +undici/lib/websocket/frame.js: + (*! ws. MIT License. Einar Otto Stangvik *) +*/ diff --git a/package-lock.json b/package-lock.json index 0d3b4c8..a6ce33f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@actions/github": "^6.0.0" }, "devDependencies": { - "esbuild": "^0.12.8", + "esbuild": "^0.20.2", "install": "^0.13.0", "prettier": "^2.3.0" } @@ -49,6 +49,397 @@ "undici": "^5.25.4" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -229,13 +620,42 @@ "license": "ISC" }, "node_modules/esbuild": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", - "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/install": { @@ -339,6 +759,167 @@ "undici": "^5.25.4" } }, + "@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "dev": true, + "optional": true + }, "@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -473,10 +1054,35 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "esbuild": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", - "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", - "dev": true + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } }, "install": { "version": "0.13.0", diff --git a/package.json b/package.json index 7be8875..5fbb559 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "build": "npm ci && esbuild ./src/main.js --bundle --platform=node --outfile=dist/index.js && npm run format && git add dist/*", - "bundle": "esbuild ./src/main.js --bundle --platform=node --outfile=dist/index.js", + "build": "npm ci && esbuild ./src/main.js --bundle --platform=node --external:node:* --outfile=dist/index.js && npm run format && git add dist/*", + "bundle": "esbuild ./src/main.js --bundle --platform=node --external:node:* --outfile=dist/index.js", "format": "prettier --write **/*.js", "format-check": "prettier --check **/*.js" }, @@ -17,7 +17,7 @@ "@actions/github": "^6.0.0" }, "devDependencies": { - "esbuild": "^0.12.8", + "esbuild": "^0.20.2", "install": "^0.13.0", "prettier": "^2.3.0" } From b4df41bb495a4b4c237cdde8444ac003669fe611 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:07:31 +0000 Subject: [PATCH 4/7] Update README to v3.2.1 and recompile with formatting fixes Co-authored-by: ahernandez411 <11199284+ahernandez411@users.noreply.github.com> --- README.md | 2 +- dist/index.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 973e8a0..32d1f3b 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ jobs: if: env.DO_BUILD == 'true' id: create_release # You may also reference just the major or major.minor version. - uses: im-open/create-release@v3.2.0 + uses: im-open/create-release@v3.2.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} tag-name: ${{ steps.version.outputs.VERSION }} diff --git a/dist/index.js b/dist/index.js index af6b79d..a3940e9 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6334,7 +6334,10 @@ var require_dispatcher_base = __commonJS({ if (callback === void 0) { return new Promise((resolve, reject) => { this.destroy(err, (err2, data) => { - return err2 ? /* istanbul ignore next: should never error */ reject(err2) : resolve(data); + return err2 + ? /* istanbul ignore next: should never error */ + reject(err2) + : resolve(data); }); }); } From e26d7e2098c4aa9b3ffe019210b12c2ad6dcd846 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:20:31 +0000 Subject: [PATCH 5/7] Fix test expectations for auto-generated release notes format Co-authored-by: ahernandez411 <11199284+ahernandez411@users.noreply.github.com> --- test/files/test-notes-start.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/files/test-notes-start.txt b/test/files/test-notes-start.txt index 0fba446..31ecfc9 100644 --- a/test/files/test-notes-start.txt +++ b/test/files/test-notes-start.txt @@ -1,2 +1,2 @@ ## What's Changed -* Bump semver-regex from 3.1.2 to 3.1.3 by @dependabot in https://github.com/im-open/create-release/pull/2 \ No newline at end of file +* Bump semver-regex from 3.1.2 to 3.1.3 by @dependabot[bot] in https://github.com/im-open/create-release/pull/2 \ No newline at end of file From b20a8d555272359942896cf0413cd919132044ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:32:40 +0000 Subject: [PATCH 6/7] Initial plan From 88ee234714cb99fe4621bfecc54b863d41b5410b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:37:36 +0000 Subject: [PATCH 7/7] Upgrade @actions/core to 2.0.3 and @actions/github to 8.0.1 to fix SHA-1 vulnerability Co-authored-by: ahernandez411 <11199284+ahernandez411@users.noreply.github.com> --- dist/index.js | 36263 ++++++++++++++++++++++++-------------------- package-lock.json | 529 +- package.json | 4 +- 3 files changed, 19726 insertions(+), 17070 deletions(-) diff --git a/dist/index.js b/dist/index.js index a3940e9..1828a69 100644 --- a/dist/index.js +++ b/dist/index.js @@ -41,7 +41,8 @@ var require_utils = __commonJS({ 'node_modules/@actions/core/lib/utils.js'(exports2) { 'use strict'; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.toCommandProperties = exports2.toCommandValue = void 0; + exports2.toCommandValue = toCommandValue; + exports2.toCommandProperties = toCommandProperties; function toCommandValue(input) { if (input === null || input === void 0) { return ''; @@ -50,7 +51,6 @@ var require_utils = __commonJS({ } return JSON.stringify(input); } - exports2.toCommandValue = toCommandValue; function toCommandProperties(annotationProperties) { if (!Object.keys(annotationProperties).length) { return {}; @@ -64,7 +64,6 @@ var require_utils = __commonJS({ endColumn: annotationProperties.endColumn }; } - exports2.toCommandProperties = toCommandProperties; } }); @@ -77,12 +76,16 @@ var require_command = __commonJS({ (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -99,28 +102,39 @@ var require_command = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.issue = exports2.issueCommand = void 0; + exports2.issueCommand = issueCommand; + exports2.issue = issue; var os = __importStar(require('os')); var utils_1 = require_utils(); function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); process.stdout.write(cmd.toString() + os.EOL); } - exports2.issueCommand = issueCommand; function issue(name, message = '') { issueCommand(name, {}, message); } - exports2.issue = issue; var CMD_STRING = '::'; var Command = class { constructor(command, properties, message) { @@ -155,11 +169,10 @@ var require_command = __commonJS({ } }; function escapeData(s) { - return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); + return (0, utils_1.toCommandValue)(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); } function escapeProperty(s) { - return utils_1 - .toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A') @@ -169,360 +182,6 @@ var require_command = __commonJS({ } }); -// node_modules/uuid/dist/esm-node/rng.js -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - import_crypto.default.randomFillSync(rnds8Pool); - poolPtr = 0; - } - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); -} -var import_crypto, rnds8Pool, poolPtr; -var init_rng = __esm({ - 'node_modules/uuid/dist/esm-node/rng.js'() { - import_crypto = __toESM(require('crypto')); - rnds8Pool = new Uint8Array(256); - poolPtr = rnds8Pool.length; - } -}); - -// node_modules/uuid/dist/esm-node/regex.js -var regex_default; -var init_regex = __esm({ - 'node_modules/uuid/dist/esm-node/regex.js'() { - regex_default = - /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - } -}); - -// node_modules/uuid/dist/esm-node/validate.js -function validate(uuid) { - return typeof uuid === 'string' && regex_default.test(uuid); -} -var validate_default; -var init_validate = __esm({ - 'node_modules/uuid/dist/esm-node/validate.js'() { - init_regex(); - validate_default = validate; - } -}); - -// node_modules/uuid/dist/esm-node/stringify.js -function stringify(arr, offset = 0) { - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - '-' + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - '-' + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - '-' + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - '-' + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); - if (!validate_default(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} -var byteToHex, stringify_default; -var init_stringify = __esm({ - 'node_modules/uuid/dist/esm-node/stringify.js'() { - init_validate(); - byteToHex = []; - for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 256).toString(16).substr(1)); - } - stringify_default = stringify; - } -}); - -// node_modules/uuid/dist/esm-node/v1.js -function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - if (clockseq == null) { - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 16383; - } - } - let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); - let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; - if (dt < 0 && options.clockseq === void 0) { - clockseq = (clockseq + 1) & 16383; - } - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { - nsecs = 0; - } - if (nsecs >= 1e4) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - msecs += 122192928e5; - const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; - b[i++] = (tl >>> 24) & 255; - b[i++] = (tl >>> 16) & 255; - b[i++] = (tl >>> 8) & 255; - b[i++] = tl & 255; - const tmh = ((msecs / 4294967296) * 1e4) & 268435455; - b[i++] = (tmh >>> 8) & 255; - b[i++] = tmh & 255; - b[i++] = ((tmh >>> 24) & 15) | 16; - b[i++] = (tmh >>> 16) & 255; - b[i++] = (clockseq >>> 8) | 128; - b[i++] = clockseq & 255; - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - return buf || stringify_default(b); -} -var _nodeId, _clockseq, _lastMSecs, _lastNSecs, v1_default; -var init_v1 = __esm({ - 'node_modules/uuid/dist/esm-node/v1.js'() { - init_rng(); - init_stringify(); - _lastMSecs = 0; - _lastNSecs = 0; - v1_default = v1; - } -}); - -// node_modules/uuid/dist/esm-node/parse.js -function parse(uuid) { - if (!validate_default(uuid)) { - throw TypeError('Invalid UUID'); - } - let v; - const arr = new Uint8Array(16); - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 255; - arr[2] = (v >>> 8) & 255; - arr[3] = v & 255; - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 255; - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 255; - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 255; - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776) & 255; - arr[11] = (v / 4294967296) & 255; - arr[12] = (v >>> 24) & 255; - arr[13] = (v >>> 16) & 255; - arr[14] = (v >>> 8) & 255; - arr[15] = v & 255; - return arr; -} -var parse_default; -var init_parse = __esm({ - 'node_modules/uuid/dist/esm-node/parse.js'() { - init_validate(); - parse_default = parse; - } -}); - -// node_modules/uuid/dist/esm-node/v35.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; -} -function v35_default(name, version2, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - if (typeof namespace === 'string') { - namespace = parse_default(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 15) | version2; - bytes[8] = (bytes[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - return buf; - } - return stringify_default(bytes); - } - try { - generateUUID.name = name; - } catch (err) {} - generateUUID.DNS = DNS; - generateUUID.URL = URL2; - return generateUUID; -} -var DNS, URL2; -var init_v35 = __esm({ - 'node_modules/uuid/dist/esm-node/v35.js'() { - init_stringify(); - init_parse(); - DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - URL2 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - } -}); - -// node_modules/uuid/dist/esm-node/md5.js -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return import_crypto2.default.createHash('md5').update(bytes).digest(); -} -var import_crypto2, md5_default; -var init_md5 = __esm({ - 'node_modules/uuid/dist/esm-node/md5.js'() { - import_crypto2 = __toESM(require('crypto')); - md5_default = md5; - } -}); - -// node_modules/uuid/dist/esm-node/v3.js -var v3, v3_default; -var init_v3 = __esm({ - 'node_modules/uuid/dist/esm-node/v3.js'() { - init_v35(); - init_md5(); - v3 = v35_default('v3', 48, md5_default); - v3_default = v3; - } -}); - -// node_modules/uuid/dist/esm-node/v4.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); - rnds[6] = (rnds[6] & 15) | 64; - rnds[8] = (rnds[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return stringify_default(rnds); -} -var v4_default; -var init_v4 = __esm({ - 'node_modules/uuid/dist/esm-node/v4.js'() { - init_rng(); - init_stringify(); - v4_default = v4; - } -}); - -// node_modules/uuid/dist/esm-node/sha1.js -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return import_crypto3.default.createHash('sha1').update(bytes).digest(); -} -var import_crypto3, sha1_default; -var init_sha1 = __esm({ - 'node_modules/uuid/dist/esm-node/sha1.js'() { - import_crypto3 = __toESM(require('crypto')); - sha1_default = sha1; - } -}); - -// node_modules/uuid/dist/esm-node/v5.js -var v5, v5_default; -var init_v5 = __esm({ - 'node_modules/uuid/dist/esm-node/v5.js'() { - init_v35(); - init_sha1(); - v5 = v35_default('v5', 80, sha1_default); - v5_default = v5; - } -}); - -// node_modules/uuid/dist/esm-node/nil.js -var nil_default; -var init_nil = __esm({ - 'node_modules/uuid/dist/esm-node/nil.js'() { - nil_default = '00000000-0000-0000-0000-000000000000'; - } -}); - -// node_modules/uuid/dist/esm-node/version.js -function version(uuid) { - if (!validate_default(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -var version_default; -var init_version = __esm({ - 'node_modules/uuid/dist/esm-node/version.js'() { - init_validate(); - version_default = version; - } -}); - -// node_modules/uuid/dist/esm-node/index.js -var esm_node_exports = {}; -__export(esm_node_exports, { - NIL: () => nil_default, - parse: () => parse_default, - stringify: () => stringify_default, - v1: () => v1_default, - v3: () => v3_default, - v4: () => v4_default, - v5: () => v5_default, - validate: () => validate_default, - version: () => version_default -}); -var init_esm_node = __esm({ - 'node_modules/uuid/dist/esm-node/index.js'() { - init_v1(); - init_v3(); - init_v4(); - init_v5(); - init_nil(); - init_version(); - init_validate(); - init_stringify(); - init_parse(); - } -}); - // node_modules/@actions/core/lib/file-command.js var require_file_command = __commonJS({ 'node_modules/@actions/core/lib/file-command.js'(exports2) { @@ -532,12 +191,16 @@ var require_file_command = __commonJS({ (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -554,20 +217,33 @@ var require_file_command = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.prepareKeyValueMessage = exports2.issueFileCommand = void 0; + exports2.issueFileCommand = issueFileCommand; + exports2.prepareKeyValueMessage = prepareKeyValueMessage; + var crypto = __importStar(require('crypto')); var fs2 = __importStar(require('fs')); var os = __importStar(require('os')); - var uuid_1 = (init_esm_node(), __toCommonJS(esm_node_exports)); var utils_1 = require_utils(); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -577,14 +253,13 @@ var require_file_command = __commonJS({ if (!fs2.existsSync(filePath)) { throw new Error(`Missing file at path: ${filePath}`); } - fs2.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + fs2.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { encoding: 'utf8' }); } - exports2.issueFileCommand = issueFileCommand; function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); if (key.includes(delimiter)) { throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); } @@ -593,7 +268,6 @@ var require_file_command = __commonJS({ } return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; } - exports2.prepareKeyValueMessage = prepareKeyValueMessage; } }); @@ -602,7 +276,8 @@ var require_proxy = __commonJS({ 'node_modules/@actions/http-client/lib/proxy.js'(exports2) { 'use strict'; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.checkBypass = exports2.getProxyUrl = void 0; + exports2.getProxyUrl = getProxyUrl; + exports2.checkBypass = checkBypass; function getProxyUrl(reqUrl) { const usingSsl = reqUrl.protocol === 'https:'; if (checkBypass(reqUrl)) { @@ -625,7 +300,6 @@ var require_proxy = __commonJS({ return void 0; } } - exports2.getProxyUrl = getProxyUrl; function checkBypass(reqUrl) { if (!reqUrl.hostname) { return false; @@ -668,7 +342,6 @@ var require_proxy = __commonJS({ } return false; } - exports2.checkBypass = checkBypass; function isLoopbackAddress(host) { const hostLower = host.toLowerCase(); return ( @@ -936,7 +609,6 @@ var require_symbols = __commonJS({ kQueue: Symbol('queue'), kConnect: Symbol('connect'), kConnecting: Symbol('connecting'), - kHeadersList: Symbol('headers list'), kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), @@ -949,6 +621,7 @@ var require_symbols = __commonJS({ kHost: Symbol('host'), kNoRef: Symbol('no ref'), kBodyUsed: Symbol('used'), + kBody: Symbol('abstracted request body'), kRunning: Symbol('running'), kBlocking: Symbol('blocking'), kPending: Symbol('pending'), @@ -961,6 +634,8 @@ var require_symbols = __commonJS({ 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'), @@ -982,12 +657,14 @@ var require_symbols = __commonJS({ kMaxResponseSize: Symbol('max response size'), kHTTP2Session: Symbol('http2Session'), kHTTP2SessionState: Symbol('http2Session state'), - kHTTP2BuildRequest: Symbol('http2 build request'), - kHTTP1BuildRequest: Symbol('http1 build request'), - kHTTP2CopyHeaders: Symbol('http2 copy headers'), - kHTTPConnVersion: Symbol('http connection version'), kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), - kConstruct: Symbol('constructable') + 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') }; } }); @@ -996,53 +673,74 @@ var require_symbols = __commonJS({ var require_errors = __commonJS({ 'node_modules/undici/lib/core/errors.js'(exports2, module2) { 'use strict'; + var kUndiciError = Symbol.for('undici.error.UND_ERR'); var UndiciError = class extends Error { constructor(message) { super(message); this.name = 'UndiciError'; this.code = 'UND_ERR'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kUndiciError] === true; + } + [kUndiciError] = true; }; - var ConnectTimeoutError = class _ConnectTimeoutError extends UndiciError { + var kConnectTimeoutError = Symbol.for('undici.error.UND_ERR_CONNECT_TIMEOUT'); + var ConnectTimeoutError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _ConnectTimeoutError); this.name = 'ConnectTimeoutError'; this.message = message || 'Connect Timeout Error'; this.code = 'UND_ERR_CONNECT_TIMEOUT'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kConnectTimeoutError] === true; + } + [kConnectTimeoutError] = true; }; - var HeadersTimeoutError = class _HeadersTimeoutError extends UndiciError { + var kHeadersTimeoutError = Symbol.for('undici.error.UND_ERR_HEADERS_TIMEOUT'); + var HeadersTimeoutError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _HeadersTimeoutError); this.name = 'HeadersTimeoutError'; this.message = message || 'Headers Timeout Error'; this.code = 'UND_ERR_HEADERS_TIMEOUT'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersTimeoutError] === true; + } + [kHeadersTimeoutError] = true; }; - var HeadersOverflowError = class _HeadersOverflowError extends UndiciError { + var kHeadersOverflowError = Symbol.for('undici.error.UND_ERR_HEADERS_OVERFLOW'); + var HeadersOverflowError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _HeadersOverflowError); this.name = 'HeadersOverflowError'; this.message = message || 'Headers Overflow Error'; this.code = 'UND_ERR_HEADERS_OVERFLOW'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersOverflowError] === true; + } + [kHeadersOverflowError] = true; }; - var BodyTimeoutError = class _BodyTimeoutError extends UndiciError { + var kBodyTimeoutError = Symbol.for('undici.error.UND_ERR_BODY_TIMEOUT'); + var BodyTimeoutError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _BodyTimeoutError); this.name = 'BodyTimeoutError'; this.message = message || 'Body Timeout Error'; this.code = 'UND_ERR_BODY_TIMEOUT'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kBodyTimeoutError] === true; + } + [kBodyTimeoutError] = true; }; - var ResponseStatusCodeError = class _ResponseStatusCodeError extends UndiciError { + var kResponseStatusCodeError = Symbol.for('undici.error.UND_ERR_RESPONSE_STATUS_CODE'); + var ResponseStatusCodeError = class extends UndiciError { constructor(message, statusCode, headers, body2) { super(message); - Error.captureStackTrace(this, _ResponseStatusCodeError); this.name = 'ResponseStatusCodeError'; this.message = message || 'Response Status Code Error'; this.code = 'UND_ERR_RESPONSE_STATUS_CODE'; @@ -1051,129 +749,198 @@ var require_errors = __commonJS({ this.statusCode = statusCode; this.headers = headers; } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseStatusCodeError] === true; + } + [kResponseStatusCodeError] = true; }; - var InvalidArgumentError = class _InvalidArgumentError extends UndiciError { + var kInvalidArgumentError = Symbol.for('undici.error.UND_ERR_INVALID_ARG'); + var InvalidArgumentError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _InvalidArgumentError); this.name = 'InvalidArgumentError'; this.message = message || 'Invalid Argument Error'; this.code = 'UND_ERR_INVALID_ARG'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidArgumentError] === true; + } + [kInvalidArgumentError] = true; }; - var InvalidReturnValueError = class _InvalidReturnValueError extends UndiciError { + var kInvalidReturnValueError = Symbol.for('undici.error.UND_ERR_INVALID_RETURN_VALUE'); + var InvalidReturnValueError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _InvalidReturnValueError); this.name = 'InvalidReturnValueError'; this.message = message || 'Invalid Return Value Error'; this.code = 'UND_ERR_INVALID_RETURN_VALUE'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidReturnValueError] === true; + } + [kInvalidReturnValueError] = true; + }; + var kAbortError = Symbol.for('undici.error.UND_ERR_ABORT'); + var AbortError = class extends UndiciError { + constructor(message) { + super(message); + this.name = 'AbortError'; + this.message = message || 'The operation was aborted'; + this.code = 'UND_ERR_ABORT'; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kAbortError] === true; + } + [kAbortError] = true; }; - var RequestAbortedError = class _RequestAbortedError extends UndiciError { + var kRequestAbortedError = Symbol.for('undici.error.UND_ERR_ABORTED'); + var RequestAbortedError = class extends AbortError { constructor(message) { super(message); - Error.captureStackTrace(this, _RequestAbortedError); this.name = 'AbortError'; this.message = message || 'Request aborted'; this.code = 'UND_ERR_ABORTED'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestAbortedError] === true; + } + [kRequestAbortedError] = true; }; - var InformationalError = class _InformationalError extends UndiciError { + var kInformationalError = Symbol.for('undici.error.UND_ERR_INFO'); + var InformationalError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _InformationalError); this.name = 'InformationalError'; this.message = message || 'Request information'; this.code = 'UND_ERR_INFO'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kInformationalError] === true; + } + [kInformationalError] = true; }; - var RequestContentLengthMismatchError = class _RequestContentLengthMismatchError extends UndiciError { + var kRequestContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'); + var RequestContentLengthMismatchError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _RequestContentLengthMismatchError); this.name = 'RequestContentLengthMismatchError'; this.message = message || 'Request body length does not match content-length header'; this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestContentLengthMismatchError] === true; + } + [kRequestContentLengthMismatchError] = true; }; - var ResponseContentLengthMismatchError = class _ResponseContentLengthMismatchError extends UndiciError { + var kResponseContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH'); + var ResponseContentLengthMismatchError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _ResponseContentLengthMismatchError); this.name = 'ResponseContentLengthMismatchError'; this.message = message || 'Response body length does not match content-length header'; this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseContentLengthMismatchError] === true; + } + [kResponseContentLengthMismatchError] = true; }; - var ClientDestroyedError = class _ClientDestroyedError extends UndiciError { + var kClientDestroyedError = Symbol.for('undici.error.UND_ERR_DESTROYED'); + var ClientDestroyedError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _ClientDestroyedError); this.name = 'ClientDestroyedError'; this.message = message || 'The client is destroyed'; this.code = 'UND_ERR_DESTROYED'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kClientDestroyedError] === true; + } + [kClientDestroyedError] = true; }; - var ClientClosedError = class _ClientClosedError extends UndiciError { + var kClientClosedError = Symbol.for('undici.error.UND_ERR_CLOSED'); + var ClientClosedError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _ClientClosedError); this.name = 'ClientClosedError'; this.message = message || 'The client is closed'; this.code = 'UND_ERR_CLOSED'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kClientClosedError] === true; + } + [kClientClosedError] = true; }; - var SocketError = class _SocketError extends UndiciError { + var kSocketError = Symbol.for('undici.error.UND_ERR_SOCKET'); + var SocketError = class extends UndiciError { constructor(message, socket) { super(message); - Error.captureStackTrace(this, _SocketError); this.name = 'SocketError'; this.message = message || 'Socket error'; this.code = 'UND_ERR_SOCKET'; this.socket = socket; } + static [Symbol.hasInstance](instance) { + return instance && instance[kSocketError] === true; + } + [kSocketError] = true; }; - var NotSupportedError = class _NotSupportedError extends UndiciError { + var kNotSupportedError = Symbol.for('undici.error.UND_ERR_NOT_SUPPORTED'); + var NotSupportedError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _NotSupportedError); this.name = 'NotSupportedError'; this.message = message || 'Not supported error'; this.code = 'UND_ERR_NOT_SUPPORTED'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kNotSupportedError] === true; + } + [kNotSupportedError] = true; }; + var kBalancedPoolMissingUpstreamError = Symbol.for('undici.error.UND_ERR_BPL_MISSING_UPSTREAM'); var BalancedPoolMissingUpstreamError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, NotSupportedError); this.name = 'MissingUpstreamError'; this.message = message || 'No upstream has been added to the BalancedPool'; this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kBalancedPoolMissingUpstreamError] === true; + } + [kBalancedPoolMissingUpstreamError] = true; }; - var HTTPParserError = class _HTTPParserError extends Error { + var kHTTPParserError = Symbol.for('undici.error.UND_ERR_HTTP_PARSER'); + var HTTPParserError = class extends Error { constructor(message, code, data) { super(message); - Error.captureStackTrace(this, _HTTPParserError); this.name = 'HTTPParserError'; this.code = code ? `HPE_${code}` : void 0; this.data = data ? data.toString() : void 0; } + static [Symbol.hasInstance](instance) { + return instance && instance[kHTTPParserError] === true; + } + [kHTTPParserError] = true; }; - var ResponseExceededMaxSizeError = class _ResponseExceededMaxSizeError extends UndiciError { + var kResponseExceededMaxSizeError = Symbol.for('undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE'); + var ResponseExceededMaxSizeError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, _ResponseExceededMaxSizeError); this.name = 'ResponseExceededMaxSizeError'; this.message = message || 'Response content exceeded max size'; this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'; } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseExceededMaxSizeError] === true; + } + [kResponseExceededMaxSizeError] = true; }; - var RequestRetryError = class _RequestRetryError extends UndiciError { + var kRequestRetryError = Symbol.for('undici.error.UND_ERR_REQ_RETRY'); + var RequestRetryError = class extends UndiciError { constructor(message, code, { headers, data }) { super(message); - Error.captureStackTrace(this, _RequestRetryError); this.name = 'RequestRetryError'; this.message = message || 'Request retry error'; this.code = 'UND_ERR_REQ_RETRY'; @@ -1181,8 +948,43 @@ var require_errors = __commonJS({ this.data = data; this.headers = headers; } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestRetryError] === true; + } + [kRequestRetryError] = true; + }; + var kResponseError = Symbol.for('undici.error.UND_ERR_RESPONSE'); + var ResponseError = class extends UndiciError { + constructor(message, code, { headers, data }) { + super(message); + this.name = 'ResponseError'; + this.message = message || 'Response error'; + this.code = 'UND_ERR_RESPONSE'; + this.statusCode = code; + this.data = data; + this.headers = headers; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseError] === true; + } + [kResponseError] = true; + }; + var kSecureProxyConnectionError = Symbol.for('undici.error.UND_ERR_PRX_TLS'); + var SecureProxyConnectionError = class extends UndiciError { + constructor(cause, message, options) { + super(message, { cause, ...(options ?? {}) }); + this.name = 'SecureProxyConnectionError'; + this.message = message || 'Secure Proxy Connection failed'; + this.code = 'UND_ERR_PRX_TLS'; + this.cause = cause; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kSecureProxyConnectionError] === true; + } + [kSecureProxyConnectionError] = true; }; module2.exports = { + AbortError, HTTPParserError, UndiciError, HeadersTimeoutError, @@ -1202,7 +1004,9 @@ var require_errors = __commonJS({ ResponseContentLengthMismatchError, BalancedPoolMissingUpstreamError, ResponseExceededMaxSizeError, - RequestRetryError + RequestRetryError, + ResponseError, + SecureProxyConnectionError }; } }); @@ -1322,48 +1126,241 @@ var require_constants = __commonJS({ } }); +// node_modules/undici/lib/core/tree.js +var require_tree = __commonJS({ + 'node_modules/undici/lib/core/tree.js'(exports2, module2) { + 'use strict'; + var { wellknownHeaderNames, headerNameLowerCasedRecord } = require_constants(); + var TstNode = class _TstNode { + /** @type {any} */ + value = null; + /** @type {null | TstNode} */ + left = null; + /** @type {null | TstNode} */ + middle = null; + /** @type {null | TstNode} */ + right = null; + /** @type {number} */ + code; + /** + * @param {string} key + * @param {any} value + * @param {number} index + */ + constructor(key, value, index) { + if (index === void 0 || index >= key.length) { + throw new TypeError('Unreachable'); + } + const code = (this.code = key.charCodeAt(index)); + if (code > 127) { + throw new TypeError('key must be ascii string'); + } + if (key.length !== ++index) { + this.middle = new _TstNode(key, value, index); + } else { + this.value = value; + } + } + /** + * @param {string} key + * @param {any} value + */ + add(key, value) { + const length = key.length; + if (length === 0) { + throw new TypeError('Unreachable'); + } + let index = 0; + let node = this; + while (true) { + const code = key.charCodeAt(index); + if (code > 127) { + throw new TypeError('key must be ascii string'); + } + if (node.code === code) { + if (length === ++index) { + node.value = value; + break; + } else if (node.middle !== null) { + node = node.middle; + } else { + node.middle = new _TstNode(key, value, index); + break; + } + } else if (node.code < code) { + if (node.left !== null) { + node = node.left; + } else { + node.left = new _TstNode(key, value, index); + break; + } + } else if (node.right !== null) { + node = node.right; + } else { + node.right = new _TstNode(key, value, index); + break; + } + } + } + /** + * @param {Uint8Array} key + * @return {TstNode | null} + */ + search(key) { + const keylength = key.length; + let index = 0; + let node = this; + while (node !== null && index < keylength) { + let code = key[index]; + if (code <= 90 && code >= 65) { + code |= 32; + } + while (node !== null) { + if (code === node.code) { + if (keylength === ++index) { + return node; + } + node = node.middle; + break; + } + node = node.code < code ? node.left : node.right; + } + } + return null; + } + }; + var TernarySearchTree = class { + /** @type {TstNode | null} */ + node = null; + /** + * @param {string} key + * @param {any} value + * */ + insert(key, value) { + if (this.node === null) { + this.node = new TstNode(key, value, 0); + } else { + this.node.add(key, value); + } + } + /** + * @param {Uint8Array} key + * @return {any} + */ + lookup(key) { + return this.node?.search(key)?.value ?? null; + } + }; + var tree = new TernarySearchTree(); + for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]; + tree.insert(key, key); + } + module2.exports = { + TernarySearchTree, + tree + }; + } +}); + // node_modules/undici/lib/core/util.js var require_util = __commonJS({ 'node_modules/undici/lib/core/util.js'(exports2, module2) { 'use strict'; - var assert = require('assert'); - var { kDestroyed, kBodyUsed } = require_symbols(); - var { IncomingMessage } = require('http'); - var stream = require('stream'); - var net = require('net'); + var assert = require('node:assert'); + var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols(); + var { IncomingMessage } = require('node:http'); + var stream = require('node:stream'); + var net = require('node:net'); + var { Blob: Blob2 } = require('node:buffer'); + var nodeUtil = require('node:util'); + var { stringify } = require('node:querystring'); + var { EventEmitter: EE } = require('node:events'); var { InvalidArgumentError } = require_errors(); - var { Blob: Blob2 } = require('buffer'); - var nodeUtil = require('util'); - var { stringify: stringify2 } = require('querystring'); var { headerNameLowerCasedRecord } = require_constants(); + var { tree } = require_tree(); var [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)); + var BodyAsyncIterable = class { + constructor(body2) { + this[kBody] = body2; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], 'disturbed'); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + function wrapRequestBody(body2) { + if (isStream(body2)) { + if (bodyLength(body2) === 0) { + body2.on('data', function () { + assert(false); + }); + } + if (typeof body2.readableDidRead !== 'boolean') { + body2[kBodyUsed] = false; + EE.prototype.on.call(body2, 'data', function () { + this[kBodyUsed] = true; + }); + } + return body2; + } else if (body2 && typeof body2.pipeTo === 'function') { + return new BodyAsyncIterable(body2); + } else if (body2 && typeof body2 !== 'string' && !ArrayBuffer.isView(body2) && isIterable(body2)) { + return new BodyAsyncIterable(body2); + } else { + return body2; + } + } function nop() {} function isStream(obj) { return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'; } function isBlobLike(object) { - return ( - (Blob2 && object instanceof Blob2) || - (object && - typeof object === 'object' && - (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && - /^(Blob|File)$/.test(object[Symbol.toStringTag])) - ); + if (object === null) { + return false; + } else if (object instanceof Blob2) { + return true; + } else if (typeof object !== 'object') { + return false; + } else { + const sTag = object[Symbol.toStringTag]; + return ( + (sTag === 'Blob' || sTag === 'File') && + (('stream' in object && typeof object.stream === 'function') || + ('arrayBuffer' in object && typeof object.arrayBuffer === 'function')) + ); + } } function buildURL(url, queryParams) { if (url.includes('?') || url.includes('#')) { throw new Error('Query params cannot be passed when url already contains "?" or "#".'); } - const stringified = stringify2(queryParams); + const stringified = stringify(queryParams); if (stringified) { url += '?' + stringified; } return url; } - function parseURL(url) { - if (typeof url === 'string') { - url = new URL(url); - if (!/^https?:/.test(url.origin || url.protocol)) { + function isValidPort(port) { + const value = parseInt(port, 10); + return value === Number(port) && value >= 0 && value <= 65535; + } + function isHttpOrHttpsPrefixed(value) { + return ( + value != null && + value[0] === 'h' && + value[1] === 't' && + value[2] === 't' && + value[3] === 'p' && + (value[4] === ':' || (value[4] === 's' && value[5] === ':')) + ); + } + function parseURL(url) { + if (typeof url === 'string') { + url = new URL(url); + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); } return url; @@ -1371,11 +1368,8 @@ var require_util = __commonJS({ if (!url || typeof url !== 'object') { throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.'); } - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); - } if (!(url instanceof URL)) { - if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + if (url.port != null && url.port !== '' && isValidPort(url.port) === false) { throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.'); } if (url.path != null && typeof url.path !== 'string') { @@ -1390,16 +1384,22 @@ var require_util = __commonJS({ if (url.origin != null && typeof url.origin !== 'string') { throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.'); } + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); + } const port = url.port != null ? url.port : url.protocol === 'https:' ? 443 : 80; - let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + let origin = url.origin != null ? url.origin : `${url.protocol || ''}//${url.hostname || ''}:${port}`; let path = url.path != null ? url.path : `${url.pathname || ''}${url.search || ''}`; - if (origin.endsWith('/')) { - origin = origin.substring(0, origin.length - 1); + if (origin[origin.length - 1] === '/') { + origin = origin.slice(0, origin.length - 1); } - if (path && !path.startsWith('/')) { + if (path && path[0] !== '/') { path = `/${path}`; } - url = new URL(origin + path); + return new URL(`${origin}${path}`); + } + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.'); } return url; } @@ -1424,7 +1424,7 @@ var require_util = __commonJS({ if (!host) { return null; } - assert.strictEqual(typeof host, 'string'); + assert(typeof host === 'string'); const servername = getHostname(host); if (net.isIP(servername)) { return ''; @@ -1453,12 +1453,8 @@ var require_util = __commonJS({ } return null; } - function isDestroyed(stream2) { - return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); - } - function isReadableAborted(stream2) { - const state = stream2 && stream2._readableState; - return isDestroyed(stream2) && state && !state.endEmitted; + function isDestroyed(body2) { + return body2 && !!(body2.destroyed || body2[kDestroyed] || stream.isDestroyed?.(body2)); } function destroy(stream2, err) { if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) { @@ -1470,13 +1466,9 @@ var require_util = __commonJS({ } stream2.destroy(err); } else if (err) { - process.nextTick( - (stream3, err2) => { - stream3.emit('error', err2); - }, - stream2, - err - ); + queueMicrotask(() => { + stream2.emit('error', err); + }); } if (stream2.destroyed !== true) { stream2[kDestroyed] = true; @@ -1488,25 +1480,31 @@ var require_util = __commonJS({ return m ? parseInt(m[1], 10) * 1e3 : null; } function headerNameToString(value) { - return headerNameLowerCasedRecord[value] || value.toLowerCase(); + return typeof value === 'string' + ? headerNameLowerCasedRecord[value] ?? value.toLowerCase() + : tree.lookup(value) ?? value.toString('latin1').toLowerCase(); } - function parseHeaders(headers, obj = {}) { - if (!Array.isArray(headers)) return headers; + function bufferToLowerCasedHeaderName(value) { + return tree.lookup(value) ?? value.toString('latin1').toLowerCase(); + } + function parseHeaders(headers, obj) { + if (obj === void 0) obj = {}; for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase(); + const key = headerNameToString(headers[i]); let val = obj[key]; - if (!val) { - if (Array.isArray(headers[i + 1])) { - obj[key] = headers[i + 1].map(x => x.toString('utf8')); - } else { - obj[key] = headers[i + 1].toString('utf8'); - } - } else { - if (!Array.isArray(val)) { + if (val) { + if (typeof val === 'string') { val = [val]; obj[key] = val; } val.push(headers[i + 1].toString('utf8')); + } else { + const headersValue = headers[i + 1]; + if (typeof headersValue === 'string') { + obj[key] = headersValue; + } else { + obj[key] = Array.isArray(headersValue) ? headersValue.map(x => x.toString('utf8')) : headersValue.toString('utf8'); + } } } if ('content-length' in obj && 'content-disposition' in obj) { @@ -1515,20 +1513,30 @@ var require_util = __commonJS({ return obj; } function parseRawHeaders(headers) { - const ret = []; + const len = headers.length; + const ret = new Array(len); let hasContentLength = false; let contentDispositionIdx = -1; + let key; + let val; + let kLen = 0; for (let n = 0; n < headers.length; n += 2) { - const key = headers[n + 0].toString(); - const val = headers[n + 1].toString('utf8'); - if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { - ret.push(key, val); + key = headers[n]; + val = headers[n + 1]; + typeof key !== 'string' && (key = key.toString()); + typeof val !== 'string' && (val = val.toString('utf8')); + kLen = key.length; + if (kLen === 14 && key[7] === '-' && (key === 'content-length' || key.toLowerCase() === 'content-length')) { hasContentLength = true; - } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { - contentDispositionIdx = ret.push(key, val) - 1; - } else { - ret.push(key, val); + } else if ( + kLen === 19 && + key[7] === '-' && + (key === 'content-disposition' || key.toLowerCase() === 'content-disposition') + ) { + contentDispositionIdx = n + 1; } + ret[n] = key; + ret[n + 1] = val; } if (hasContentLength && contentDispositionIdx !== -1) { ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1'); @@ -1538,51 +1546,43 @@ var require_util = __commonJS({ function isBuffer(buffer) { return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); } - function validateHandler(handler, method, upgrade) { - if (!handler || typeof handler !== 'object') { + function validateHandler(handler2, method, upgrade) { + if (!handler2 || typeof handler2 !== 'object') { throw new InvalidArgumentError('handler must be an object'); } - if (typeof handler.onConnect !== 'function') { + if (typeof handler2.onConnect !== 'function') { throw new InvalidArgumentError('invalid onConnect method'); } - if (typeof handler.onError !== 'function') { + if (typeof handler2.onError !== 'function') { throw new InvalidArgumentError('invalid onError method'); } - if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== void 0) { + if (typeof handler2.onBodySent !== 'function' && handler2.onBodySent !== void 0) { throw new InvalidArgumentError('invalid onBodySent method'); } if (upgrade || method === 'CONNECT') { - if (typeof handler.onUpgrade !== 'function') { + if (typeof handler2.onUpgrade !== 'function') { throw new InvalidArgumentError('invalid onUpgrade method'); } } else { - if (typeof handler.onHeaders !== 'function') { + if (typeof handler2.onHeaders !== 'function') { throw new InvalidArgumentError('invalid onHeaders method'); } - if (typeof handler.onData !== 'function') { + if (typeof handler2.onData !== 'function') { throw new InvalidArgumentError('invalid onData method'); } - if (typeof handler.onComplete !== 'function') { + if (typeof handler2.onComplete !== 'function') { throw new InvalidArgumentError('invalid onComplete method'); } } } function isDisturbed(body2) { - return !!( - body2 && - (stream.isDisturbed - ? stream.isDisturbed(body2) || body2[kBodyUsed] - : body2[kBodyUsed] || - body2.readableDidRead || - (body2._readableState && body2._readableState.dataEmitted) || - isReadableAborted(body2)) - ); + return !!(body2 && (stream.isDisturbed(body2) || body2[kBodyUsed])); } function isErrored(body2) { - return !!(body2 && (stream.isErrored ? stream.isErrored(body2) : /state: 'errored'/.test(nodeUtil.inspect(body2)))); + return !!(body2 && stream.isErrored(body2)); } function isReadable(body2) { - return !!(body2 && (stream.isReadable ? stream.isReadable(body2) : /state: 'readable'/.test(nodeUtil.inspect(body2)))); + return !!(body2 && stream.isReadable(body2)); } function getSocketInfo(socket) { return { @@ -1596,43 +1596,32 @@ var require_util = __commonJS({ bytesRead: socket.bytesRead }; } - async function* convertIterableToBuffer(iterable) { - for await (const chunk of iterable) { - yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); - } - } - var ReadableStream; function ReadableStreamFrom(iterable) { - if (!ReadableStream) { - ReadableStream = require('stream/web').ReadableStream; - } - if (ReadableStream.from) { - return ReadableStream.from(convertIterableToBuffer(iterable)); - } - let iterator; - return new ReadableStream( - { - async start() { - iterator = iterable[Symbol.asyncIterator](); - }, - async pull(controller) { - const { done, value } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + let iterator2; + return new ReadableStream({ + async start() { + iterator2 = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator2.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + controller.byobRequest?.respond(0); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + if (buf.byteLength) { controller.enqueue(new Uint8Array(buf)); } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); } + return controller.desiredSize > 0; }, - 0 - ); + async cancel(reason) { + await iterator2.return(); + }, + type: 'bytes' + }); } function isFormDataLike(object) { return ( @@ -1647,20 +1636,6 @@ var require_util = __commonJS({ object[Symbol.toStringTag] === 'FormData' ); } - function throwIfAborted(signal) { - if (!signal) { - return; - } - if (typeof signal.throwIfAborted === 'function') { - signal.throwIfAborted(); - } else { - if (signal.aborted) { - const err = new Error('The operation was aborted'); - err.name = 'AbortError'; - throw err; - } - } - } function addAbortListener(signal, listener) { if ('addEventListener' in signal) { signal.addEventListener('abort', listener, { once: true }); @@ -1669,14 +1644,52 @@ var require_util = __commonJS({ signal.addListener('abort', listener); return () => signal.removeListener('abort', listener); } - var hasToWellFormed = !!String.prototype.toWellFormed; + var hasToWellFormed = typeof String.prototype.toWellFormed === 'function'; + var hasIsWellFormed = typeof String.prototype.isWellFormed === 'function'; function toUSVString(val) { - if (hasToWellFormed) { - return `${val}`.toWellFormed(); - } else if (nodeUtil.toUSVString) { - return nodeUtil.toUSVString(val); + return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val); + } + function isUSVString(val) { + return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}`; + } + function isTokenCharCode(c) { + switch (c) { + 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 c >= 33 && c <= 126; + } + } + function isValidHTTPToken(characters) { + if (characters.length === 0) { + return false; + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false; + } } - return `${val}`; + return true; + } + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + function isValidHeaderValue(characters) { + return !headerCharRegex.test(characters); } function parseRangeHeader(range) { if (range == null || range === '') return { start: 0, end: null, size: null }; @@ -1689,8 +1702,49 @@ var require_util = __commonJS({ } : null; } + function addListener(obj, name, listener) { + const listeners = (obj[kListeners] ??= []); + listeners.push([name, listener]); + obj.on(name, listener); + return obj; + } + function removeAllListeners(obj) { + for (const [name, listener] of obj[kListeners] ?? []) { + obj.removeListener(name, listener); + } + obj[kListeners] = null; + } + function errorRequest(client, request2, err) { + try { + request2.onError(err); + assert(request2.aborted); + } catch (err2) { + client.emit('error', err2); + } + } var kEnumerableProperty = /* @__PURE__ */ Object.create(null); kEnumerableProperty.enumerable = true; + var normalizedMethodRecordsBase = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' + }; + var normalizedMethodRecords = { + ...normalizedMethodRecordsBase, + patch: 'patch', + PATCH: 'PATCH' + }; + Object.setPrototypeOf(normalizedMethodRecordsBase, null); + Object.setPrototypeOf(normalizedMethodRecords, null); module2.exports = { kEnumerableProperty, nop, @@ -1698,7 +1752,7 @@ var require_util = __commonJS({ isErrored, isReadable, toUSVString, - isReadableAborted, + isUSVString, isBlobLike, parseOrigin, parseURL, @@ -1708,6 +1762,10 @@ var require_util = __commonJS({ isAsyncIterable, isDestroyed, headerNameToString, + bufferToLowerCasedHeaderName, + addListener, + removeAllListeners, + errorRequest, parseRawHeaders, parseHeaders, parseKeepAliveTimeout, @@ -1720,3175 +1778,1710 @@ var require_util = __commonJS({ getSocketInfo, isFormDataLike, buildURL, - throwIfAborted, addAbortListener, + isValidHTTPToken, + isValidHeaderValue, + isTokenCharCode, parseRangeHeader, + normalizedMethodRecordsBase, + normalizedMethodRecords, + isValidPort, + isHttpOrHttpsPrefixed, nodeMajor, nodeMinor, - nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), - safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'], + wrapRequestBody }; } }); -// node_modules/undici/lib/timers.js -var require_timers = __commonJS({ - 'node_modules/undici/lib/timers.js'(exports2, module2) { +// node_modules/undici/lib/core/diagnostics.js +var require_diagnostics = __commonJS({ + 'node_modules/undici/lib/core/diagnostics.js'(exports2, module2) { 'use strict'; - var fastNow = Date.now(); - var fastNowTimeout; - var fastTimers = []; - function onTimeout() { - fastNow = Date.now(); - let len = fastTimers.length; - let idx = 0; - while (idx < len) { - const timer = fastTimers[idx]; - if (timer.state === 0) { - timer.state = fastNow + timer.delay; - } else if (timer.state > 0 && fastNow >= timer.state) { - timer.state = -1; - timer.callback(timer.opaque); - } - if (timer.state === -1) { - timer.state = -2; - if (idx !== len - 1) { - fastTimers[idx] = fastTimers.pop(); - } else { - fastTimers.pop(); - } - len -= 1; - } else { - idx += 1; - } - } - if (fastTimers.length > 0) { - refreshTimeout(); - } - } - function refreshTimeout() { - if (fastNowTimeout && fastNowTimeout.refresh) { - fastNowTimeout.refresh(); - } else { - clearTimeout(fastNowTimeout); - fastNowTimeout = setTimeout(onTimeout, 1e3); - if (fastNowTimeout.unref) { - fastNowTimeout.unref(); - } + var diagnosticsChannel = require('node:diagnostics_channel'); + var util = require('node:util'); + var undiciDebugLog = util.debuglog('undici'); + var fetchDebuglog = util.debuglog('fetch'); + var websocketDebuglog = util.debuglog('websocket'); + var isClientSet = false; + var channels = { + // Client + beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'), + connected: diagnosticsChannel.channel('undici:client:connected'), + connectError: diagnosticsChannel.channel('undici:client:connectError'), + sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'), + // Request + create: diagnosticsChannel.channel('undici:request:create'), + bodySent: diagnosticsChannel.channel('undici:request:bodySent'), + headers: diagnosticsChannel.channel('undici:request:headers'), + trailers: diagnosticsChannel.channel('undici:request:trailers'), + error: diagnosticsChannel.channel('undici:request:error'), + // WebSocket + open: diagnosticsChannel.channel('undici:websocket:open'), + close: diagnosticsChannel.channel('undici:websocket:close'), + socketError: diagnosticsChannel.channel('undici:websocket:socket_error'), + ping: diagnosticsChannel.channel('undici:websocket:ping'), + pong: diagnosticsChannel.channel('undici:websocket:pong') + }; + if (undiciDebugLog.enabled || fetchDebuglog.enabled) { + const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog; + diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog('connecting to %s using %s%s', `${host}${port ? `:${port}` : ''}`, protocol, version); + }); + diagnosticsChannel.channel('undici:client:connected').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog('connected to %s using %s%s', `${host}${port ? `:${port}` : ''}`, protocol, version); + }); + diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => { + const { + connectParams: { version, protocol, port, host }, + error + } = evt; + debuglog( + 'connection to %s using %s%s errored - %s', + `${host}${port ? `:${port}` : ''}`, + protocol, + version, + error.message + ); + }); + diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => { + const { + request: { method, path, origin } + } = evt; + debuglog('sending request to %s %s/%s', method, origin, path); + }); + diagnosticsChannel.channel('undici:request:headers').subscribe(evt => { + const { + request: { method, path, origin }, + response: { statusCode } + } = evt; + debuglog('received response to %s %s/%s - HTTP %d', method, origin, path, statusCode); + }); + diagnosticsChannel.channel('undici:request:trailers').subscribe(evt => { + const { + request: { method, path, origin } + } = evt; + debuglog('trailers received from %s %s/%s', method, origin, path); + }); + diagnosticsChannel.channel('undici:request:error').subscribe(evt => { + const { + request: { method, path, origin }, + error + } = evt; + debuglog('request to %s %s/%s errored - %s', method, origin, path, error.message); + }); + isClientSet = true; + } + if (websocketDebuglog.enabled) { + if (!isClientSet) { + const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog; + diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog('connecting to %s%s using %s%s', host, port ? `:${port}` : '', protocol, version); + }); + diagnosticsChannel.channel('undici:client:connected').subscribe(evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog('connected to %s%s using %s%s', host, port ? `:${port}` : '', protocol, version); + }); + diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => { + const { + connectParams: { version, protocol, port, host }, + error + } = evt; + debuglog('connection to %s%s using %s%s errored - %s', host, port ? `:${port}` : '', protocol, version, error.message); + }); + diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => { + const { + request: { method, path, origin } + } = evt; + debuglog('sending request to %s %s/%s', method, origin, path); + }); } + diagnosticsChannel.channel('undici:websocket:open').subscribe(evt => { + const { + address: { address, port } + } = evt; + websocketDebuglog('connection opened %s%s', address, port ? `:${port}` : ''); + }); + diagnosticsChannel.channel('undici:websocket:close').subscribe(evt => { + const { websocket, code, reason } = evt; + websocketDebuglog('closed connection to %s - %s %s', websocket.url, code, reason); + }); + diagnosticsChannel.channel('undici:websocket:socket_error').subscribe(err => { + websocketDebuglog('connection errored - %s', err.message); + }); + diagnosticsChannel.channel('undici:websocket:ping').subscribe(evt => { + websocketDebuglog('ping received'); + }); + diagnosticsChannel.channel('undici:websocket:pong').subscribe(evt => { + websocketDebuglog('pong received'); + }); } - var Timeout = class { - constructor(callback, delay, opaque) { - this.callback = callback; - this.delay = delay; - this.opaque = opaque; - this.state = -2; - this.refresh(); - } - refresh() { - if (this.state === -2) { - fastTimers.push(this); - if (!fastNowTimeout || fastTimers.length === 1) { - refreshTimeout(); - } - } - this.state = 0; - } - clear() { - this.state = -1; - } - }; module2.exports = { - setTimeout(callback, delay, opaque) { - return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque); - }, - clearTimeout(timeout) { - if (timeout instanceof Timeout) { - timeout.clear(); - } else { - clearTimeout(timeout); - } - } + channels }; } }); -// node_modules/@fastify/busboy/deps/streamsearch/sbmh.js -var require_sbmh = __commonJS({ - 'node_modules/@fastify/busboy/deps/streamsearch/sbmh.js'(exports2, module2) { +// node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + 'node_modules/undici/lib/core/request.js'(exports2, module2) { 'use strict'; - var EventEmitter = require('node:events').EventEmitter; - var inherits = require('node:util').inherits; - function SBMH(needle) { - if (typeof needle === 'string') { - needle = Buffer.from(needle); - } - if (!Buffer.isBuffer(needle)) { - throw new TypeError('The needle has to be a String or a Buffer.'); - } - const needleLength = needle.length; - if (needleLength === 0) { - throw new Error('The needle cannot be an empty String/Buffer.'); - } - if (needleLength > 256) { - throw new Error('The needle cannot have a length bigger than 256.'); - } - this.maxMatches = Infinity; - this.matches = 0; - this._occ = new Array(256).fill(needleLength); - this._lookbehind_size = 0; - this._needle = needle; - this._bufpos = 0; - this._lookbehind = Buffer.alloc(needleLength); - for (var i = 0; i < needleLength - 1; ++i) { - this._occ[needle[i]] = needleLength - 1 - i; - } - } - inherits(SBMH, EventEmitter); - SBMH.prototype.reset = function () { - this._lookbehind_size = 0; - this.matches = 0; - this._bufpos = 0; - }; - SBMH.prototype.push = function (chunk, pos) { - if (!Buffer.isBuffer(chunk)) { - chunk = Buffer.from(chunk, 'binary'); - } - const chlen = chunk.length; - this._bufpos = pos || 0; - let r; - while (r !== chlen && this.matches < this.maxMatches) { - r = this._sbmh_feed(chunk); - } - return r; - }; - SBMH.prototype._sbmh_feed = function (data) { - const len = data.length; - const needle = this._needle; - const needleLength = needle.length; - const lastNeedleChar = needle[needleLength - 1]; - let pos = -this._lookbehind_size; - let ch; - if (pos < 0) { - while (pos < 0 && pos <= len - needleLength) { - ch = this._sbmh_lookup_char(data, pos + needleLength - 1); - if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { - this._lookbehind_size = 0; - ++this.matches; - this.emit('info', true); - return (this._bufpos = pos + needleLength); - } - pos += this._occ[ch]; - } - if (pos < 0) { - while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { - ++pos; - } - } - if (pos >= 0) { - this.emit('info', false, this._lookbehind, 0, this._lookbehind_size); - this._lookbehind_size = 0; - } else { - const bytesToCutOff = this._lookbehind_size + pos; - if (bytesToCutOff > 0) { - this.emit('info', false, this._lookbehind, 0, bytesToCutOff); - } - this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, this._lookbehind_size - bytesToCutOff); - this._lookbehind_size -= bytesToCutOff; - data.copy(this._lookbehind, this._lookbehind_size); - this._lookbehind_size += len; - this._bufpos = len; - return len; - } - } - pos += (pos >= 0) * this._bufpos; - if (data.indexOf(needle, pos) !== -1) { - pos = data.indexOf(needle, pos); - ++this.matches; - if (pos > 0) { - this.emit('info', true, data, this._bufpos, pos); - } else { - this.emit('info', true); - } - return (this._bufpos = pos + needleLength); - } else { - pos = len - needleLength; - } - while ( - pos < len && - (data[pos] !== needle[0] || Buffer.compare(data.subarray(pos, pos + len - pos), needle.subarray(0, len - pos)) !== 0) + var { InvalidArgumentError, NotSupportedError } = require_errors(); + var assert = require('node:assert'); + var { + isValidHTTPToken, + isValidHeaderValue, + isStream, + destroy, + isBuffer, + isFormDataLike, + isIterable, + isBlobLike, + buildURL, + validateHandler, + getServerName, + normalizedMethodRecords + } = require_util(); + var { channels } = require_diagnostics(); + var { headerNameLowerCasedRecord } = require_constants(); + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol('handler'); + var Request = class { + constructor( + origin, + { + path, + method, + body: body2, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue, + servername + }, + handler2 ) { - ++pos; - } - if (pos < len) { - data.copy(this._lookbehind, 0, pos, pos + (len - pos)); - this._lookbehind_size = len - pos; - } - if (pos > 0) { - this.emit('info', false, data, this._bufpos, pos < len ? pos : len); - } - this._bufpos = len; - return len; - }; - SBMH.prototype._sbmh_lookup_char = function (data, pos) { - return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; - }; - SBMH.prototype._sbmh_memcmp = function (data, pos, len) { - for (var i = 0; i < len; ++i) { - if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { - return false; + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string'); + } else if (path[0] !== '/' && !(path.startsWith('http://') || path.startsWith('https://')) && method !== 'CONNECT') { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash'); + } else if (invalidPathRegex.test(path)) { + throw new InvalidArgumentError('invalid request path'); } - } - return true; - }; - module2.exports = SBMH; - } -}); - -// node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js -var require_PartStream = __commonJS({ - 'node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js'(exports2, module2) { - 'use strict'; - var inherits = require('node:util').inherits; - var ReadableStream = require('node:stream').Readable; - function PartStream(opts) { - ReadableStream.call(this, opts); - } - inherits(PartStream, ReadableStream); - PartStream.prototype._read = function (n) {}; - module2.exports = PartStream; - } -}); - -// node_modules/@fastify/busboy/lib/utils/getLimit.js -var require_getLimit = __commonJS({ - 'node_modules/@fastify/busboy/lib/utils/getLimit.js'(exports2, module2) { - 'use strict'; - module2.exports = function getLimit(limits, name, defaultLimit) { - if (!limits || limits[name] === void 0 || limits[name] === null) { - return defaultLimit; - } - if (typeof limits[name] !== 'number' || isNaN(limits[name])) { - throw new TypeError('Limit ' + name + ' is not a valid number'); - } - return limits[name]; - }; - } -}); - -// node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js -var require_HeaderParser = __commonJS({ - 'node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js'(exports2, module2) { - 'use strict'; - var EventEmitter = require('node:events').EventEmitter; - var inherits = require('node:util').inherits; - var getLimit = require_getLimit(); - var StreamSearch = require_sbmh(); - var B_DCRLF = Buffer.from('\r\n\r\n'); - var RE_CRLF = /\r\n/g; - var RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; - function HeaderParser(cfg) { - EventEmitter.call(this); - cfg = cfg || {}; - const self = this; - this.nread = 0; - this.maxed = false; - this.npairs = 0; - this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2e3); - this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024); - this.buffer = ''; - this.header = {}; - this.finished = false; - this.ss = new StreamSearch(B_DCRLF); - this.ss.on('info', function (isMatch, data, start, end) { - if (data && !self.maxed) { - if (self.nread + end - start >= self.maxHeaderSize) { - end = self.maxHeaderSize - self.nread + start; - self.nread = self.maxHeaderSize; - self.maxed = true; - } else { - self.nread += end - start; - } - self.buffer += data.toString('binary', start, end); + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string'); + } else if (normalizedMethodRecords[method] === void 0 && !isValidHTTPToken(method)) { + throw new InvalidArgumentError('invalid request method'); } - if (isMatch) { - self._finish(); + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string'); } - }); - } - inherits(HeaderParser, EventEmitter); - HeaderParser.prototype.push = function (data) { - const r = this.ss.push(data); - if (this.finished) { - return r; - } - }; - HeaderParser.prototype.reset = function () { - this.finished = false; - this.buffer = ''; - this.header = {}; - this.ss.reset(); - }; - HeaderParser.prototype._finish = function () { - if (this.buffer) { - this._parseHeader(); - } - this.ss.matches = this.ss.maxMatches; - const header = this.header; - this.header = {}; - this.buffer = ''; - this.finished = true; - this.nread = this.npairs = 0; - this.maxed = false; - this.emit('header', header); - }; - HeaderParser.prototype._parseHeader = function () { - if (this.npairs === this.maxHeaderPairs) { - return; - } - const lines = this.buffer.split(RE_CRLF); - const len = lines.length; - let m, h; - for (var i = 0; i < len; ++i) { - if (lines[i].length === 0) { - continue; + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout'); } - if (lines[i][0] === ' ' || lines[i][0] === ' ') { - if (h) { - this.header[h][this.header[h].length - 1] += lines[i]; - continue; - } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout'); } - const posColon = lines[i].indexOf(':'); - if (posColon === -1 || posColon === 0) { - return; + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset'); } - m = RE_HDR.exec(lines[i]); - h = m[1].toLowerCase(); - this.header[h] = this.header[h] || []; - this.header[h].push(m[2] || ''); - if (++this.npairs === this.maxHeaderPairs) { - break; + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue'); } - } - }; - module2.exports = HeaderParser; - } -}); - -// node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js -var require_Dicer = __commonJS({ - 'node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js'(exports2, module2) { - 'use strict'; - var WritableStream = require('node:stream').Writable; - var inherits = require('node:util').inherits; - var StreamSearch = require_sbmh(); - var PartStream = require_PartStream(); - var HeaderParser = require_HeaderParser(); - var DASH = 45; - var B_ONEDASH = Buffer.from('-'); - var B_CRLF = Buffer.from('\r\n'); - var EMPTY_FN = function () {}; - function Dicer(cfg) { - if (!(this instanceof Dicer)) { - return new Dicer(cfg); - } - WritableStream.call(this, cfg); - if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { - throw new TypeError('Boundary required'); - } - if (typeof cfg.boundary === 'string') { - this.setBoundary(cfg.boundary); - } else { - this._bparser = void 0; - } - this._headerFirst = cfg.headerFirst; - this._dashes = 0; - this._parts = 0; - this._finished = false; - this._realFinish = false; - this._isPreamble = true; - this._justMatched = false; - this._firstWrite = true; - this._inHeader = true; - this._part = void 0; - this._cb = void 0; - this._ignoreData = false; - this._partOpts = { highWaterMark: cfg.partHwm }; - this._pause = false; - const self = this; - this._hparser = new HeaderParser(cfg); - this._hparser.on('header', function (header) { - self._inHeader = false; - self._part.emit('header', header); - }); - } - inherits(Dicer, WritableStream); - Dicer.prototype.emit = function (ev) { - if (ev === 'finish' && !this._realFinish) { - if (!this._finished) { - const self = this; - process.nextTick(function () { - self.emit('error', new Error('Unexpected end of multipart data')); - if (self._part && !self._ignoreData) { - const type = self._isPreamble ? 'Preamble' : 'Part'; - self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')); - self._part.push(null); - process.nextTick(function () { - self._realFinish = true; - self.emit('finish'); - self._realFinish = false; - }); - return; + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + this.abort = null; + if (body2 == null) { + this.body = null; + } else if (isStream(body2)) { + this.body = body2; + const rState = this.body._readableState; + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy() { + destroy(this); + }; + this.body.on('end', this.endHandler); + } + this.errorHandler = err => { + if (this.abort) { + this.abort(err); + } else { + this.error = err; } - self._realFinish = true; - self.emit('finish'); - self._realFinish = false; - }); + }; + this.body.on('error', this.errorHandler); + } else if (isBuffer(body2)) { + this.body = body2.byteLength ? body2 : null; + } else if (ArrayBuffer.isView(body2)) { + this.body = body2.buffer.byteLength ? Buffer.from(body2.buffer, body2.byteOffset, body2.byteLength) : null; + } else if (body2 instanceof ArrayBuffer) { + this.body = body2.byteLength ? Buffer.from(body2) : null; + } else if (typeof body2 === 'string') { + this.body = body2.length ? Buffer.from(body2) : null; + } else if (isFormDataLike(body2) || isIterable(body2) || isBlobLike(body2)) { + this.body = body2; + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable'); } - } else { - WritableStream.prototype.emit.apply(this, arguments); - } - }; - Dicer.prototype._write = function (data, encoding, cb) { - if (!this._hparser && !this._bparser) { - return cb(); - } - if (this._headerFirst && this._isPreamble) { - if (!this._part) { - this._part = new PartStream(this._partOpts); - if (this.listenerCount('preamble') !== 0) { - this.emit('preamble', this._part); + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === 'HEAD' || method === 'GET' : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = []; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even'); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === 'object') { + if (headers[Symbol.iterator]) { + for (const header of headers) { + if (!Array.isArray(header) || header.length !== 2) { + throw new InvalidArgumentError('headers must be in key-value pair format'); + } + processHeader(this, header[0], header[1]); + } } else { - this._ignore(); + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; ++i) { + processHeader(this, keys[i], headers[keys[i]]); + } } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array'); } - const r = this._hparser.push(data); - if (!this._inHeader && r !== void 0 && r < data.length) { - data = data.slice(r); - } else { - return cb(); + validateHandler(handler2, method, upgrade); + this.servername = servername || getServerName(this.host); + this[kHandler] = handler2; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); } } - if (this._firstWrite) { - this._bparser.push(B_CRLF); - this._firstWrite = false; + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk); + } catch (err) { + this.abort(err); + } + } } - this._bparser.push(data); - if (this._pause) { - this._cb = cb; - } else { - cb(); + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent(); + } catch (err) { + this.abort(err); + } + } } - }; - Dicer.prototype.reset = function () { - this._part = void 0; - this._bparser = void 0; - this._hparser = void 0; - }; - Dicer.prototype.setBoundary = function (boundary) { - const self = this; - this._bparser = new StreamSearch('\r\n--' + boundary); - this._bparser.on('info', function (isMatch, data, start, end) { - self._oninfo(isMatch, data, start, end); - }); - }; - Dicer.prototype._ignore = function () { - if (this._part && !this._ignoreData) { - this._ignoreData = true; - this._part.on('error', EMPTY_FN); - this._part.resume(); + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + if (this.error) { + abort(this.error); + } else { + this.abort = abort; + return this[kHandler].onConnect(abort); + } } - }; - Dicer.prototype._oninfo = function (isMatch, data, start, end) { - let buf; - const self = this; - let i = 0; - let r; - let shouldWriteMore = true; - if (!this._part && this._justMatched && data) { - while (this._dashes < 2 && start + i < end) { - if (data[start + i] === DASH) { - ++i; - ++this._dashes; - } else { - if (this._dashes) { - buf = B_ONEDASH; - } - this._dashes = 0; - break; - } + onResponseStarted() { + return this[kHandler].onResponseStarted?.(); + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); } - if (this._dashes === 2) { - if (start + i < end && this.listenerCount('trailer') !== 0) { - this.emit('trailer', data.slice(start + i, end)); - } - this.reset(); - this._finished = true; - if (self._parts === 0) { - self._realFinish = true; - self.emit('finish'); - self._realFinish = false; - } + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } catch (err) { + this.abort(err); } - if (this._dashes) { - return; + } + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + try { + return this[kHandler].onData(chunk); + } catch (err) { + this.abort(err); + return false; } } - if (this._justMatched) { - this._justMatched = false; + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); } - if (!this._part) { - this._part = new PartStream(this._partOpts); - this._part._read = function (n) { - self._unpause(); - }; - if (this._isPreamble && this.listenerCount('preamble') !== 0) { - this.emit('preamble', this._part); - } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { - this.emit('part', this._part); - } else { - this._ignore(); + onComplete(trailers) { + this.onFinally(); + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); } - if (!this._isPreamble) { - this._inHeader = true; + try { + return this[kHandler].onComplete(trailers); + } catch (err) { + this.onError(err); } } - if (data && start < end && !this._ignoreData) { - if (this._isPreamble || !this._inHeader) { - if (buf) { - shouldWriteMore = this._part.push(buf); - } - shouldWriteMore = this._part.push(data.slice(start, end)); - if (!shouldWriteMore) { - this._pause = true; - } - } else if (!this._isPreamble && this._inHeader) { - if (buf) { - this._hparser.push(buf); - } - r = this._hparser.push(data.slice(start, end)); - if (!this._inHeader && r !== void 0 && r < end) { - this._oninfo(false, data, start + r, end); - } + onError(error) { + this.onFinally(); + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); + } + if (this.aborted) { + return; } + this.aborted = true; + return this[kHandler].onError(error); } - if (isMatch) { - this._hparser.reset(); - if (this._isPreamble) { - this._isPreamble = false; - } else { - if (start !== end) { - ++this._parts; - this._part.on('end', function () { - if (--self._parts === 0) { - if (self._finished) { - self._realFinish = true; - self.emit('finish'); - self._realFinish = false; - } else { - self._unpause(); - } - } - }); - } + onFinally() { + if (this.errorHandler) { + this.body.off('error', this.errorHandler); + this.errorHandler = null; + } + if (this.endHandler) { + this.body.off('end', this.endHandler); + this.endHandler = null; } - this._part.push(null); - this._part = void 0; - this._ignoreData = false; - this._justMatched = true; - this._dashes = 0; + } + addHeader(key, value) { + processHeader(this, key, value); + return this; } }; - Dicer.prototype._unpause = function () { - if (!this._pause) { + function processHeader(request2, key, val) { + if (val && typeof val === 'object' && !Array.isArray(val)) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { return; } - this._pause = false; - if (this._cb) { - const cb = this._cb; - this._cb = void 0; - cb(); - } - }; - module2.exports = Dicer; - } -}); - -// node_modules/@fastify/busboy/lib/utils/decodeText.js -var require_decodeText = __commonJS({ - 'node_modules/@fastify/busboy/lib/utils/decodeText.js'(exports2, module2) { - 'use strict'; - var utf8Decoder = new TextDecoder('utf-8'); - var textDecoders = /* @__PURE__ */ new Map([ - ['utf-8', utf8Decoder], - ['utf8', utf8Decoder] - ]); - function getDecoder(charset) { - let lc; - while (true) { - switch (charset) { - case 'utf-8': - case 'utf8': - return decoders.utf8; - case 'latin1': - case 'ascii': - case 'us-ascii': - case 'iso-8859-1': - case 'iso8859-1': - case 'iso88591': - case 'iso_8859-1': - case 'windows-1252': - case 'iso_8859-1:1987': - case 'cp1252': - case 'x-cp1252': - return decoders.latin1; - case 'utf16le': - case 'utf-16le': - case 'ucs2': - case 'ucs-2': - return decoders.utf16le; - case 'base64': - return decoders.base64; - default: - if (lc === void 0) { - lc = true; - charset = charset.toLowerCase(); - continue; - } - return decoders.other.bind(charset); + let headerName = headerNameLowerCasedRecord[key]; + if (headerName === void 0) { + headerName = key.toLowerCase(); + if (headerNameLowerCasedRecord[headerName] === void 0 && !isValidHTTPToken(headerName)) { + throw new InvalidArgumentError('invalid header key'); } } - } - var decoders = { - utf8: (data, sourceEncoding) => { - if (data.length === 0) { - return ''; - } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding); - } - return data.utf8Slice(0, data.length); - }, - latin1: (data, sourceEncoding) => { - if (data.length === 0) { - return ''; + if (Array.isArray(val)) { + const arr = []; + for (let i = 0; i < val.length; i++) { + if (typeof val[i] === 'string') { + if (!isValidHeaderValue(val[i])) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + arr.push(val[i]); + } else if (val[i] === null) { + arr.push(''); + } else if (typeof val[i] === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`); + } else { + arr.push(`${val[i]}`); + } } - if (typeof data === 'string') { - return data; + val = arr; + } else if (typeof val === 'string') { + if (!isValidHeaderValue(val)) { + throw new InvalidArgumentError(`invalid ${key} header`); } - return data.latin1Slice(0, data.length); - }, - utf16le: (data, sourceEncoding) => { - if (data.length === 0) { - return ''; + } else if (val === null) { + val = ''; + } else { + val = `${val}`; + } + if (request2.host === null && headerName === 'host') { + if (typeof val !== 'string') { + throw new InvalidArgumentError('invalid host header'); } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding); + request2.host = val; + } else if (request2.contentLength === null && headerName === 'content-length') { + request2.contentLength = parseInt(val, 10); + if (!Number.isFinite(request2.contentLength)) { + throw new InvalidArgumentError('invalid content-length header'); } - return data.ucs2Slice(0, data.length); - }, - base64: (data, sourceEncoding) => { - if (data.length === 0) { - return ''; + } else if (request2.contentType === null && headerName === 'content-type') { + request2.contentType = val; + request2.headers.push(key, val); + } else if (headerName === 'transfer-encoding' || headerName === 'keep-alive' || headerName === 'upgrade') { + throw new InvalidArgumentError(`invalid ${headerName} header`); + } else if (headerName === 'connection') { + const value = typeof val === 'string' ? val.toLowerCase() : null; + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header'); } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding); + if (value === 'close') { + request2.reset = true; } - return data.base64Slice(0, data.length); - }, - other: (data, sourceEncoding) => { - if (data.length === 0) { - return ''; - } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding); - } - if (textDecoders.has(exports2.toString())) { - try { - return textDecoders.get(exports2).decode(data); - } catch {} - } - return typeof data === 'string' ? data : data.toString(); - } - }; - function decodeText(text, sourceEncoding, destEncoding) { - if (text) { - return getDecoder(destEncoding)(text, sourceEncoding); + } else if (headerName === 'expect') { + throw new NotSupportedError('expect header not supported'); + } else { + request2.headers.push(key, val); } - return text; } - module2.exports = decodeText; + module2.exports = Request; } }); -// node_modules/@fastify/busboy/lib/utils/parseParams.js -var require_parseParams = __commonJS({ - 'node_modules/@fastify/busboy/lib/utils/parseParams.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/dispatcher.js +var require_dispatcher = __commonJS({ + 'node_modules/undici/lib/dispatcher/dispatcher.js'(exports2, module2) { 'use strict'; - var decodeText = require_decodeText(); - var RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g; - var EncodedLookup = { - '%00': '\0', - '%01': '', - '%02': '', - '%03': '', - '%04': '', - '%05': '', - '%06': '', - '%07': '\x07', - '%08': '\b', - '%09': ' ', - '%0a': '\n', - '%0A': '\n', - '%0b': '\v', - '%0B': '\v', - '%0c': '\f', - '%0C': '\f', - '%0d': '\r', - '%0D': '\r', - '%0e': '', - '%0E': '', - '%0f': '', - '%0F': '', - '%10': '', - '%11': '', - '%12': '', - '%13': '', - '%14': '', - '%15': '', - '%16': '', - '%17': '', - '%18': '', - '%19': '', - '%1a': '', - '%1A': '', - '%1b': '\x1B', - '%1B': '\x1B', - '%1c': '', - '%1C': '', - '%1d': '', - '%1D': '', - '%1e': '', - '%1E': '', - '%1f': '', - '%1F': '', - '%20': ' ', - '%21': '!', - '%22': '"', - '%23': '#', - '%24': '$', - '%25': '%', - '%26': '&', - '%27': "'", - '%28': '(', - '%29': ')', - '%2a': '*', - '%2A': '*', - '%2b': '+', - '%2B': '+', - '%2c': ',', - '%2C': ',', - '%2d': '-', - '%2D': '-', - '%2e': '.', - '%2E': '.', - '%2f': '/', - '%2F': '/', - '%30': '0', - '%31': '1', - '%32': '2', - '%33': '3', - '%34': '4', - '%35': '5', - '%36': '6', - '%37': '7', - '%38': '8', - '%39': '9', - '%3a': ':', - '%3A': ':', - '%3b': ';', - '%3B': ';', - '%3c': '<', - '%3C': '<', - '%3d': '=', - '%3D': '=', - '%3e': '>', - '%3E': '>', - '%3f': '?', - '%3F': '?', - '%40': '@', - '%41': 'A', - '%42': 'B', - '%43': 'C', - '%44': 'D', - '%45': 'E', - '%46': 'F', - '%47': 'G', - '%48': 'H', - '%49': 'I', - '%4a': 'J', - '%4A': 'J', - '%4b': 'K', - '%4B': 'K', - '%4c': 'L', - '%4C': 'L', - '%4d': 'M', - '%4D': 'M', - '%4e': 'N', - '%4E': 'N', - '%4f': 'O', - '%4F': 'O', - '%50': 'P', - '%51': 'Q', - '%52': 'R', - '%53': 'S', - '%54': 'T', - '%55': 'U', - '%56': 'V', - '%57': 'W', - '%58': 'X', - '%59': 'Y', - '%5a': 'Z', - '%5A': 'Z', - '%5b': '[', - '%5B': '[', - '%5c': '\\', - '%5C': '\\', - '%5d': ']', - '%5D': ']', - '%5e': '^', - '%5E': '^', - '%5f': '_', - '%5F': '_', - '%60': '`', - '%61': 'a', - '%62': 'b', - '%63': 'c', - '%64': 'd', - '%65': 'e', - '%66': 'f', - '%67': 'g', - '%68': 'h', - '%69': 'i', - '%6a': 'j', - '%6A': 'j', - '%6b': 'k', - '%6B': 'k', - '%6c': 'l', - '%6C': 'l', - '%6d': 'm', - '%6D': 'm', - '%6e': 'n', - '%6E': 'n', - '%6f': 'o', - '%6F': 'o', - '%70': 'p', - '%71': 'q', - '%72': 'r', - '%73': 's', - '%74': 't', - '%75': 'u', - '%76': 'v', - '%77': 'w', - '%78': 'x', - '%79': 'y', - '%7a': 'z', - '%7A': 'z', - '%7b': '{', - '%7B': '{', - '%7c': '|', - '%7C': '|', - '%7d': '}', - '%7D': '}', - '%7e': '~', - '%7E': '~', - '%7f': '\x7F', - '%7F': '\x7F', - '%80': '\x80', - '%81': '\x81', - '%82': '\x82', - '%83': '\x83', - '%84': '\x84', - '%85': '\x85', - '%86': '\x86', - '%87': '\x87', - '%88': '\x88', - '%89': '\x89', - '%8a': '\x8A', - '%8A': '\x8A', - '%8b': '\x8B', - '%8B': '\x8B', - '%8c': '\x8C', - '%8C': '\x8C', - '%8d': '\x8D', - '%8D': '\x8D', - '%8e': '\x8E', - '%8E': '\x8E', - '%8f': '\x8F', - '%8F': '\x8F', - '%90': '\x90', - '%91': '\x91', - '%92': '\x92', - '%93': '\x93', - '%94': '\x94', - '%95': '\x95', - '%96': '\x96', - '%97': '\x97', - '%98': '\x98', - '%99': '\x99', - '%9a': '\x9A', - '%9A': '\x9A', - '%9b': '\x9B', - '%9B': '\x9B', - '%9c': '\x9C', - '%9C': '\x9C', - '%9d': '\x9D', - '%9D': '\x9D', - '%9e': '\x9E', - '%9E': '\x9E', - '%9f': '\x9F', - '%9F': '\x9F', - '%a0': '\xA0', - '%A0': '\xA0', - '%a1': '\xA1', - '%A1': '\xA1', - '%a2': '\xA2', - '%A2': '\xA2', - '%a3': '\xA3', - '%A3': '\xA3', - '%a4': '\xA4', - '%A4': '\xA4', - '%a5': '\xA5', - '%A5': '\xA5', - '%a6': '\xA6', - '%A6': '\xA6', - '%a7': '\xA7', - '%A7': '\xA7', - '%a8': '\xA8', - '%A8': '\xA8', - '%a9': '\xA9', - '%A9': '\xA9', - '%aa': '\xAA', - '%Aa': '\xAA', - '%aA': '\xAA', - '%AA': '\xAA', - '%ab': '\xAB', - '%Ab': '\xAB', - '%aB': '\xAB', - '%AB': '\xAB', - '%ac': '\xAC', - '%Ac': '\xAC', - '%aC': '\xAC', - '%AC': '\xAC', - '%ad': '\xAD', - '%Ad': '\xAD', - '%aD': '\xAD', - '%AD': '\xAD', - '%ae': '\xAE', - '%Ae': '\xAE', - '%aE': '\xAE', - '%AE': '\xAE', - '%af': '\xAF', - '%Af': '\xAF', - '%aF': '\xAF', - '%AF': '\xAF', - '%b0': '\xB0', - '%B0': '\xB0', - '%b1': '\xB1', - '%B1': '\xB1', - '%b2': '\xB2', - '%B2': '\xB2', - '%b3': '\xB3', - '%B3': '\xB3', - '%b4': '\xB4', - '%B4': '\xB4', - '%b5': '\xB5', - '%B5': '\xB5', - '%b6': '\xB6', - '%B6': '\xB6', - '%b7': '\xB7', - '%B7': '\xB7', - '%b8': '\xB8', - '%B8': '\xB8', - '%b9': '\xB9', - '%B9': '\xB9', - '%ba': '\xBA', - '%Ba': '\xBA', - '%bA': '\xBA', - '%BA': '\xBA', - '%bb': '\xBB', - '%Bb': '\xBB', - '%bB': '\xBB', - '%BB': '\xBB', - '%bc': '\xBC', - '%Bc': '\xBC', - '%bC': '\xBC', - '%BC': '\xBC', - '%bd': '\xBD', - '%Bd': '\xBD', - '%bD': '\xBD', - '%BD': '\xBD', - '%be': '\xBE', - '%Be': '\xBE', - '%bE': '\xBE', - '%BE': '\xBE', - '%bf': '\xBF', - '%Bf': '\xBF', - '%bF': '\xBF', - '%BF': '\xBF', - '%c0': '\xC0', - '%C0': '\xC0', - '%c1': '\xC1', - '%C1': '\xC1', - '%c2': '\xC2', - '%C2': '\xC2', - '%c3': '\xC3', - '%C3': '\xC3', - '%c4': '\xC4', - '%C4': '\xC4', - '%c5': '\xC5', - '%C5': '\xC5', - '%c6': '\xC6', - '%C6': '\xC6', - '%c7': '\xC7', - '%C7': '\xC7', - '%c8': '\xC8', - '%C8': '\xC8', - '%c9': '\xC9', - '%C9': '\xC9', - '%ca': '\xCA', - '%Ca': '\xCA', - '%cA': '\xCA', - '%CA': '\xCA', - '%cb': '\xCB', - '%Cb': '\xCB', - '%cB': '\xCB', - '%CB': '\xCB', - '%cc': '\xCC', - '%Cc': '\xCC', - '%cC': '\xCC', - '%CC': '\xCC', - '%cd': '\xCD', - '%Cd': '\xCD', - '%cD': '\xCD', - '%CD': '\xCD', - '%ce': '\xCE', - '%Ce': '\xCE', - '%cE': '\xCE', - '%CE': '\xCE', - '%cf': '\xCF', - '%Cf': '\xCF', - '%cF': '\xCF', - '%CF': '\xCF', - '%d0': '\xD0', - '%D0': '\xD0', - '%d1': '\xD1', - '%D1': '\xD1', - '%d2': '\xD2', - '%D2': '\xD2', - '%d3': '\xD3', - '%D3': '\xD3', - '%d4': '\xD4', - '%D4': '\xD4', - '%d5': '\xD5', - '%D5': '\xD5', - '%d6': '\xD6', - '%D6': '\xD6', - '%d7': '\xD7', - '%D7': '\xD7', - '%d8': '\xD8', - '%D8': '\xD8', - '%d9': '\xD9', - '%D9': '\xD9', - '%da': '\xDA', - '%Da': '\xDA', - '%dA': '\xDA', - '%DA': '\xDA', - '%db': '\xDB', - '%Db': '\xDB', - '%dB': '\xDB', - '%DB': '\xDB', - '%dc': '\xDC', - '%Dc': '\xDC', - '%dC': '\xDC', - '%DC': '\xDC', - '%dd': '\xDD', - '%Dd': '\xDD', - '%dD': '\xDD', - '%DD': '\xDD', - '%de': '\xDE', - '%De': '\xDE', - '%dE': '\xDE', - '%DE': '\xDE', - '%df': '\xDF', - '%Df': '\xDF', - '%dF': '\xDF', - '%DF': '\xDF', - '%e0': '\xE0', - '%E0': '\xE0', - '%e1': '\xE1', - '%E1': '\xE1', - '%e2': '\xE2', - '%E2': '\xE2', - '%e3': '\xE3', - '%E3': '\xE3', - '%e4': '\xE4', - '%E4': '\xE4', - '%e5': '\xE5', - '%E5': '\xE5', - '%e6': '\xE6', - '%E6': '\xE6', - '%e7': '\xE7', - '%E7': '\xE7', - '%e8': '\xE8', - '%E8': '\xE8', - '%e9': '\xE9', - '%E9': '\xE9', - '%ea': '\xEA', - '%Ea': '\xEA', - '%eA': '\xEA', - '%EA': '\xEA', - '%eb': '\xEB', - '%Eb': '\xEB', - '%eB': '\xEB', - '%EB': '\xEB', - '%ec': '\xEC', - '%Ec': '\xEC', - '%eC': '\xEC', - '%EC': '\xEC', - '%ed': '\xED', - '%Ed': '\xED', - '%eD': '\xED', - '%ED': '\xED', - '%ee': '\xEE', - '%Ee': '\xEE', - '%eE': '\xEE', - '%EE': '\xEE', - '%ef': '\xEF', - '%Ef': '\xEF', - '%eF': '\xEF', - '%EF': '\xEF', - '%f0': '\xF0', - '%F0': '\xF0', - '%f1': '\xF1', - '%F1': '\xF1', - '%f2': '\xF2', - '%F2': '\xF2', - '%f3': '\xF3', - '%F3': '\xF3', - '%f4': '\xF4', - '%F4': '\xF4', - '%f5': '\xF5', - '%F5': '\xF5', - '%f6': '\xF6', - '%F6': '\xF6', - '%f7': '\xF7', - '%F7': '\xF7', - '%f8': '\xF8', - '%F8': '\xF8', - '%f9': '\xF9', - '%F9': '\xF9', - '%fa': '\xFA', - '%Fa': '\xFA', - '%fA': '\xFA', - '%FA': '\xFA', - '%fb': '\xFB', - '%Fb': '\xFB', - '%fB': '\xFB', - '%FB': '\xFB', - '%fc': '\xFC', - '%Fc': '\xFC', - '%fC': '\xFC', - '%FC': '\xFC', - '%fd': '\xFD', - '%Fd': '\xFD', - '%fD': '\xFD', - '%FD': '\xFD', - '%fe': '\xFE', - '%Fe': '\xFE', - '%fE': '\xFE', - '%FE': '\xFE', - '%ff': '\xFF', - '%Ff': '\xFF', - '%fF': '\xFF', - '%FF': '\xFF' - }; - function encodedReplacer(match) { - return EncodedLookup[match]; - } - var STATE_KEY = 0; - var STATE_VALUE = 1; - var STATE_CHARSET = 2; - var STATE_LANG = 3; - function parseParams(str) { - const res = []; - let state = STATE_KEY; - let charset = ''; - let inquote = false; - let escaping = false; - let p = 0; - let tmp = ''; - const len = str.length; - for (var i = 0; i < len; ++i) { - const char = str[i]; - if (char === '\\' && inquote) { - if (escaping) { - escaping = false; - } else { - escaping = true; + var EventEmitter = require('node:events'); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error('not implemented'); + } + close() { + throw new Error('not implemented'); + } + destroy() { + throw new Error('not implemented'); + } + compose(...args) { + const interceptors = Array.isArray(args[0]) ? args[0] : args; + let dispatch = this.dispatch.bind(this); + for (const interceptor of interceptors) { + if (interceptor == null) { continue; } - } else if (char === '"') { - if (!escaping) { - if (inquote) { - inquote = false; - state = STATE_KEY; - } else { - inquote = true; - } - continue; - } else { - escaping = false; + if (typeof interceptor !== 'function') { + throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`); } - } else { - if (escaping && inquote) { - tmp += '\\'; - } - escaping = false; - if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { - if (state === STATE_CHARSET) { - state = STATE_LANG; - charset = tmp.substring(1); - } else { - state = STATE_VALUE; - } - tmp = ''; - continue; - } else if (state === STATE_KEY && (char === '*' || char === '=') && res.length) { - state = char === '*' ? STATE_CHARSET : STATE_VALUE; - res[p] = [tmp, void 0]; - tmp = ''; - continue; - } else if (!inquote && char === ';') { - state = STATE_KEY; - if (charset) { - if (tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); - } - charset = ''; - } else if (tmp.length) { - tmp = decodeText(tmp, 'binary', 'utf8'); - } - if (res[p] === void 0) { - res[p] = tmp; - } else { - res[p][1] = tmp; - } - tmp = ''; - ++p; - continue; - } else if (!inquote && (char === ' ' || char === ' ')) { - continue; + dispatch = interceptor(dispatch); + if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) { + throw new TypeError('invalid interceptor'); } } - tmp += char; + return new ComposedDispatcher(this, dispatch); } - if (charset && tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), 'binary', charset); - } else if (tmp) { - tmp = decodeText(tmp, 'binary', 'utf8'); + }; + var ComposedDispatcher = class extends Dispatcher { + #dispatcher = null; + #dispatch = null; + constructor(dispatcher, dispatch) { + super(); + this.#dispatcher = dispatcher; + this.#dispatch = dispatch; } - if (res[p] === void 0) { - if (tmp) { - res[p] = tmp; - } - } else { - res[p][1] = tmp; + dispatch(...args) { + this.#dispatch(...args); } - return res; - } - module2.exports = parseParams; - } -}); - -// node_modules/@fastify/busboy/lib/utils/basename.js -var require_basename = __commonJS({ - 'node_modules/@fastify/busboy/lib/utils/basename.js'(exports2, module2) { - 'use strict'; - module2.exports = function basename(path) { - if (typeof path !== 'string') { - return ''; + close(...args) { + return this.#dispatcher.close(...args); } - for (var i = path.length - 1; i >= 0; --i) { - switch (path.charCodeAt(i)) { - case 47: - case 92: - path = path.slice(i + 1); - return path === '..' || path === '.' ? '' : path; - } + destroy(...args) { + return this.#dispatcher.destroy(...args); } - return path === '..' || path === '.' ? '' : path; }; + module2.exports = Dispatcher; } }); -// node_modules/@fastify/busboy/lib/types/multipart.js -var require_multipart = __commonJS({ - 'node_modules/@fastify/busboy/lib/types/multipart.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + 'node_modules/undici/lib/dispatcher/dispatcher-base.js'(exports2, module2) { 'use strict'; - var { Readable } = require('node:stream'); - var { inherits } = require('node:util'); - var Dicer = require_Dicer(); - var parseParams = require_parseParams(); - var decodeText = require_decodeText(); - var basename = require_basename(); - var getLimit = require_getLimit(); - var RE_BOUNDARY = /^boundary$/i; - var RE_FIELD = /^form-data$/i; - var RE_CHARSET = /^charset$/i; - var RE_FILENAME = /^filename$/i; - var RE_NAME = /^name$/i; - Multipart.detect = /^multipart\/form-data/i; - function Multipart(boy, cfg) { - let i; - let len; - const self = this; - let boundary; - const limits = cfg.limits; - const isPartAFile = - cfg.isPartAFile || - ((fieldName, contentType, fileName) => contentType === 'application/octet-stream' || fileName !== void 0); - const parsedConType = cfg.parsedConType || []; - const defCharset = cfg.defCharset || 'utf8'; - const preservePath = cfg.preservePath; - const fileOpts = { highWaterMark: cfg.fileHwm }; - for (i = 0, len = parsedConType.length; i < len; ++i) { - if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { - boundary = parsedConType[i][1]; - break; - } - } - function checkFinished() { - if (nends === 0 && finished && !boy._done) { - finished = false; - self.end(); - } + var Dispatcher = require_dispatcher(); + var { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = require_errors(); + var { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require_symbols(); + var kOnDestroyed = Symbol('onDestroyed'); + var kOnClosed = Symbol('onClosed'); + var kInterceptedDispatch = Symbol('Intercepted Dispatch'); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; } - if (typeof boundary !== 'string') { - throw new Error('Multipart: Boundary not found'); + get destroyed() { + return this[kDestroyed]; } - const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); - const fileSizeLimit = getLimit(limits, 'fileSize', Infinity); - const filesLimit = getLimit(limits, 'files', Infinity); - const fieldsLimit = getLimit(limits, 'fields', Infinity); - const partsLimit = getLimit(limits, 'parts', Infinity); - const headerPairsLimit = getLimit(limits, 'headerPairs', 2e3); - const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024); - let nfiles = 0; - let nfields = 0; - let nends = 0; - let curFile; - let curField; - let finished = false; - this._needDrain = false; - this._pause = false; - this._cb = void 0; - this._nparts = 0; - this._boy = boy; - const parserCfg = { - boundary, - maxHeaderPairs: headerPairsLimit, - maxHeaderSize: headerSizeLimit, - partHwm: fileOpts.highWaterMark, - highWaterMark: cfg.highWaterMark - }; - this.parser = new Dicer(parserCfg); - this.parser - .on('drain', function () { - self._needDrain = false; - if (self._cb && !self._pause) { - const cb = self._cb; - self._cb = void 0; - cb(); - } - }) - .on('part', function onPart(part) { - if (++self._nparts > partsLimit) { - self.parser.removeListener('part', onPart); - self.parser.on('part', skipPart); - boy.hitPartsLimit = true; - boy.emit('partsLimit'); - return skipPart(part); - } - if (curField) { - const field = curField; - field.emit('end'); - field.removeAllListeners('end'); - } - part - .on('header', function (header) { - let contype; - let fieldname; - let parsed; - let charset; - let encoding; - let filename; - let nsize = 0; - if (header['content-type']) { - parsed = parseParams(header['content-type'][0]); - if (parsed[0]) { - contype = parsed[0].toLowerCase(); - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_CHARSET.test(parsed[i][0])) { - charset = parsed[i][1].toLowerCase(); - break; - } - } - } - } - if (contype === void 0) { - contype = 'text/plain'; - } - if (charset === void 0) { - charset = defCharset; - } - if (header['content-disposition']) { - parsed = parseParams(header['content-disposition'][0]); - if (!RE_FIELD.test(parsed[0])) { - return skipPart(part); - } - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_NAME.test(parsed[i][0])) { - fieldname = parsed[i][1]; - } else if (RE_FILENAME.test(parsed[i][0])) { - filename = parsed[i][1]; - if (!preservePath) { - filename = basename(filename); - } - } - } - } else { - return skipPart(part); - } - if (header['content-transfer-encoding']) { - encoding = header['content-transfer-encoding'][0].toLowerCase(); - } else { - encoding = '7bit'; - } - let onData, onEnd; - if (isPartAFile(fieldname, contype, filename)) { - if (nfiles === filesLimit) { - if (!boy.hitFilesLimit) { - boy.hitFilesLimit = true; - boy.emit('filesLimit'); - } - return skipPart(part); - } - ++nfiles; - if (boy.listenerCount('file') === 0) { - self.parser._ignore(); - return; - } - ++nends; - const file = new FileStream(fileOpts); - curFile = file; - file.on('end', function () { - --nends; - self._pause = false; - checkFinished(); - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = void 0; - cb(); - } - }); - file._read = function (n) { - if (!self._pause) { - return; - } - self._pause = false; - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = void 0; - cb(); - } - }; - boy.emit('file', fieldname, file, filename, encoding, contype); - onData = function (data) { - if ((nsize += data.length) > fileSizeLimit) { - const extralen = fileSizeLimit - nsize + data.length; - if (extralen > 0) { - file.push(data.slice(0, extralen)); - } - file.truncated = true; - file.bytesRead = fileSizeLimit; - part.removeAllListeners('data'); - file.emit('limit'); - return; - } else if (!file.push(data)) { - self._pause = true; - } - file.bytesRead = nsize; - }; - onEnd = function () { - curFile = void 0; - file.push(null); - }; - } else { - if (nfields === fieldsLimit) { - if (!boy.hitFieldsLimit) { - boy.hitFieldsLimit = true; - boy.emit('fieldsLimit'); - } - return skipPart(part); - } - ++nfields; - ++nends; - let buffer = ''; - let truncated = false; - curField = part; - onData = function (data) { - if ((nsize += data.length) > fieldSizeLimit) { - const extralen = fieldSizeLimit - (nsize - data.length); - buffer += data.toString('binary', 0, extralen); - truncated = true; - part.removeAllListeners('data'); - } else { - buffer += data.toString('binary'); - } - }; - onEnd = function () { - curField = void 0; - if (buffer.length) { - buffer = decodeText(buffer, 'binary', charset); - } - boy.emit('field', fieldname, buffer, false, truncated, encoding, contype); - --nends; - checkFinished(); - }; - } - part._readableState.sync = false; - part.on('data', onData); - part.on('end', onEnd); - }) - .on('error', function (err) { - if (curFile) { - curFile.emit('error', err); - } - }); - }) - .on('error', function (err) { - boy.emit('error', err); - }) - .on('finish', function () { - finished = true; - checkFinished(); - }); - } - Multipart.prototype.write = function (chunk, cb) { - const r = this.parser.write(chunk); - if (r && !this._pause) { - cb(); - } else { - this._needDrain = !r; - this._cb = cb; + get closed() { + return this[kClosed]; } - }; - Multipart.prototype.end = function () { - const self = this; - if (self.parser.writable) { - self.parser.end(); - } else if (!self._boy._done) { - process.nextTick(function () { - self._boy._done = true; - self._boy.emit('finish'); - }); + get interceptors() { + return this[kInterceptors]; } - }; - function skipPart(part) { - part.resume(); - } - function FileStream(opts) { - Readable.call(this, opts); - this.bytesRead = 0; - this.truncated = false; - } - inherits(FileStream, Readable); - FileStream.prototype._read = function (n) {}; - module2.exports = Multipart; - } -}); - -// node_modules/@fastify/busboy/lib/utils/Decoder.js -var require_Decoder = __commonJS({ - 'node_modules/@fastify/busboy/lib/utils/Decoder.js'(exports2, module2) { - 'use strict'; - var RE_PLUS = /\+/g; - var HEX = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - ]; - function Decoder() { - this.buffer = void 0; - } - Decoder.prototype.write = function (str) { - str = str.replace(RE_PLUS, ' '); - let res = ''; - let i = 0; - let p = 0; - const len = str.length; - for (; i < len; ++i) { - if (this.buffer !== void 0) { - if (!HEX[str.charCodeAt(i)]) { - res += '%' + this.buffer; - this.buffer = void 0; - --i; - } else { - this.buffer += str[i]; - ++p; - if (this.buffer.length === 2) { - res += String.fromCharCode(parseInt(this.buffer, 16)); - this.buffer = void 0; + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function'); } } - } else if (str[i] === '%') { - if (i > p) { - res += str.substring(p, i); - p = i; - } - this.buffer = ''; - ++p; } + this[kInterceptors] = newInterceptors; } - if (p < len && this.buffer === void 0) { - res += str.substring(p); - } - return res; - }; - Decoder.prototype.reset = function () { - this.buffer = void 0; - }; - module2.exports = Decoder; - } -}); - -// node_modules/@fastify/busboy/lib/types/urlencoded.js -var require_urlencoded = __commonJS({ - 'node_modules/@fastify/busboy/lib/types/urlencoded.js'(exports2, module2) { - 'use strict'; - var Decoder = require_Decoder(); - var decodeText = require_decodeText(); - var getLimit = require_getLimit(); - var RE_CHARSET = /^charset$/i; - UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; - function UrlEncoded(boy, cfg) { - const limits = cfg.limits; - const parsedConType = cfg.parsedConType; - this.boy = boy; - this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024); - this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100); - this.fieldsLimit = getLimit(limits, 'fields', Infinity); - let charset; - for (var i = 0, len = parsedConType.length; i < len; ++i) { - if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { - charset = parsedConType[i][1].toLowerCase(); - break; + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); } - } - if (charset === void 0) { - charset = cfg.defCharset || 'utf8'; - } - this.decoder = new Decoder(); - this.charset = charset; - this._fields = 0; - this._state = 'key'; - this._checkingBytes = true; - this._bytesKey = 0; - this._bytesVal = 0; - this._key = ''; - this._val = ''; - this._keyTrunc = false; - this._valTrunc = false; - this._hitLimit = false; - } - UrlEncoded.prototype.write = function (data, cb) { - if (this._fields === this.fieldsLimit) { - if (!this.boy.hitFieldsLimit) { - this.boy.hitFieldsLimit = true; - this.boy.emit('fieldsLimit'); - } - return cb(); - } - let idxeq; - let idxamp; - let i; - let p = 0; - const len = data.length; - while (p < len) { - if (this._state === 'key') { - idxeq = idxamp = void 0; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 61) { - idxeq = i; - break; - } else if (data[i] === 38) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesKey; - } - } - if (idxeq !== void 0) { - if (idxeq > p) { - this._key += this.decoder.write(data.toString('binary', p, idxeq)); - } - this._state = 'val'; - this._hitLimit = false; - this._checkingBytes = true; - this._val = ''; - this._bytesVal = 0; - this._valTrunc = false; - this.decoder.reset(); - p = idxeq + 1; - } else if (idxamp !== void 0) { - ++this._fields; - let key; - const keyTrunc = this._keyTrunc; - if (idxamp > p) { - key = this._key += this.decoder.write(data.toString('binary', p, idxamp)); - } else { - key = this._key; - } - this._hitLimit = false; - this._checkingBytes = true; - this._key = ''; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - if (key.length) { - this.boy.emit('field', decodeText(key, 'binary', this.charset), '', keyTrunc, false); - } - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - if (i > p) { - this._key += this.decoder.write(data.toString('binary', p, i)); - } - p = i; - if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { - this._checkingBytes = false; - this._keyTrunc = true; - } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); } else { - if (p < len) { - this._key += this.decoder.write(data.toString('binary', p)); - } - p = len; + queueMicrotask(() => callback(null, null)); } - } else { - idxamp = void 0; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 38) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesVal; - } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); } - if (idxamp !== void 0) { - ++this._fields; - if (idxamp > p) { - this._val += this.decoder.write(data.toString('binary', p, idxamp)); - } - this.boy.emit( - 'field', - decodeText(this._key, 'binary', this.charset), - decodeText(this._val, 'binary', this.charset), - this._keyTrunc, - this._valTrunc - ); - this._state = 'key'; - this._hitLimit = false; - this._checkingBytes = true; - this._key = ''; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - if (i > p) { - this._val += this.decoder.write(data.toString('binary', p, i)); - } - p = i; - if ((this._val === '' && this.fieldSizeLimit === 0) || (this._bytesVal = this._val.length) === this.fieldSizeLimit) { - this._checkingBytes = false; - this._valTrunc = true; - } + }; + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed); + }); + } + destroy(err, callback) { + if (typeof err === 'function') { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 + ? /* istanbul ignore next: should never error */ + reject(err2) + : resolve(data); + }); + }); + } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); } else { - if (p < len) { - this._val += this.decoder.write(data.toString('binary', p)); - } - p = len; + queueMicrotask(() => callback(null, null)); } + return; } - } - cb(); - }; - UrlEncoded.prototype.end = function () { - if (this.boy._done) { - return; - } - if (this._state === 'key' && this._key.length > 0) { - this.boy.emit('field', decodeText(this._key, 'binary', this.charset), '', this._keyTrunc, false); - } else if (this._state === 'val') { - this.boy.emit( - 'field', - decodeText(this._key, 'binary', this.charset), - decodeText(this._val, 'binary', this.charset), - this._keyTrunc, - this._valTrunc - ); - } - this.boy._done = true; - this.boy.emit('finish'); - }; - module2.exports = UrlEncoded; - } -}); - -// node_modules/@fastify/busboy/lib/main.js -var require_main = __commonJS({ - 'node_modules/@fastify/busboy/lib/main.js'(exports2, module2) { - 'use strict'; - var WritableStream = require('node:stream').Writable; - var { inherits } = require('node:util'); - var Dicer = require_Dicer(); - var MultipartParser = require_multipart(); - var UrlencodedParser = require_urlencoded(); - var parseParams = require_parseParams(); - function Busboy(opts) { - if (!(this instanceof Busboy)) { - return new Busboy(opts); - } - if (typeof opts !== 'object') { - throw new TypeError('Busboy expected an options-Object.'); - } - if (typeof opts.headers !== 'object') { - throw new TypeError('Busboy expected an options-Object with headers-attribute.'); - } - if (typeof opts.headers['content-type'] !== 'string') { - throw new TypeError('Missing Content-Type-header.'); - } - const { headers, ...streamOptions } = opts; - this.opts = { - autoDestroy: false, - ...streamOptions - }; - WritableStream.call(this, this.opts); - this._done = false; - this._parser = this.getParserByHeaders(headers); - this._finished = false; - } - inherits(Busboy, WritableStream); - Busboy.prototype.emit = function (ev) { - if (ev === 'finish') { - if (!this._done) { - this._parser?.end(); - return; - } else if (this._finished) { - return; + if (!err) { + err = new ClientDestroyedError(); } - this._finished = true; - } - WritableStream.prototype.emit.apply(this, arguments); - }; - Busboy.prototype.getParserByHeaders = function (headers) { - const parsed = parseParams(headers['content-type']); - const cfg = { - defCharset: this.opts.defCharset, - fileHwm: this.opts.fileHwm, - headers, - highWaterMark: this.opts.highWaterMark, - isPartAFile: this.opts.isPartAFile, - limits: this.opts.limits, - parsedConType: parsed, - preservePath: this.opts.preservePath - }; - if (MultipartParser.detect.test(parsed[0])) { - return new MultipartParser(this, cfg); + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); } - if (UrlencodedParser.detect.test(parsed[0])) { - return new UrlencodedParser(this, cfg); + [kInterceptedDispatch](opts, handler2) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler2); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler2); } - throw new Error('Unsupported Content-Type.'); - }; - Busboy.prototype._write = function (chunk, encoding, cb) { - this._parser.write(chunk, cb); - }; - module2.exports = Busboy; - module2.exports.default = Busboy; - module2.exports.Busboy = Busboy; - module2.exports.Dicer = Dicer; - } -}); - -// node_modules/undici/lib/fetch/constants.js -var require_constants2 = __commonJS({ - 'node_modules/undici/lib/fetch/constants.js'(exports2, module2) { - 'use strict'; - var { MessageChannel, receiveMessageOnPort } = require('worker_threads'); - var corsSafeListedMethods = ['GET', 'HEAD', 'POST']; - var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); - var nullBodyStatus = [101, 204, 205, 304]; - var redirectStatus = [301, 302, 303, 307, 308]; - var redirectStatusSet = new Set(redirectStatus); - var badPorts = [ - '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', - '5060', - '5061', - '6000', - '6566', - '6665', - '6666', - '6667', - '6668', - '6669', - '6697', - '10080' - ]; - var badPortsSet = new Set(badPorts); - var referrerPolicy = [ - '', - 'no-referrer', - 'no-referrer-when-downgrade', - 'same-origin', - 'origin', - 'strict-origin', - 'origin-when-cross-origin', - 'strict-origin-when-cross-origin', - 'unsafe-url' - ]; - var referrerPolicySet = new Set(referrerPolicy); - var requestRedirect = ['follow', 'manual', 'error']; - var safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']; - var safeMethodsSet = new Set(safeMethods); - var requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']; - var requestCredentials = ['omit', 'same-origin', 'include']; - var requestCache = ['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached']; - var requestBodyHeader = [ - 'content-encoding', - 'content-language', - 'content-location', - 'content-type', - // See https://github.com/nodejs/undici/issues/2021 - // 'Content-Length' is a forbidden header name, which is typically - // removed in the Headers implementation. However, undici doesn't - // filter out headers, so we add it here. - 'content-length' - ]; - var requestDuplex = ['half']; - var forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']; - var forbiddenMethodsSet = new Set(forbiddenMethods); - var subresource = [ - 'audio', - 'audioworklet', - 'font', - 'image', - 'manifest', - 'paintworklet', - 'script', - 'style', - 'track', - 'video', - 'xslt', - '' - ]; - var subresourceSet = new Set(subresource); - var DOMException2 = - globalThis.DOMException ?? - (() => { + dispatch(opts, handler2) { + if (!handler2 || typeof handler2 !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } try { - atob('~'); + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.'); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler2); } catch (err) { - return Object.getPrototypeOf(err).constructor; + if (typeof handler2.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method'); + } + handler2.onError(err); + return false; } - })(); - var channel; - var structuredClone = - globalThis.structuredClone ?? // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js - // structuredClone was added in v17.0.0, but fetch supports v16.8 - function structuredClone2(value, options = void 0) { - if (arguments.length === 0) { - throw new TypeError('missing argument'); - } - if (!channel) { - channel = new MessageChannel(); - } - channel.port1.unref(); - channel.port2.unref(); - channel.port1.postMessage(value, options?.transfer); - return receiveMessageOnPort(channel.port2).message; - }; - module2.exports = { - DOMException: DOMException2, - structuredClone, - subresource, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods, - badPorts, - requestDuplex, - subresourceSet, - badPortsSet, - redirectStatusSet, - corsSafeListedMethodsSet, - safeMethodsSet, - forbiddenMethodsSet, - referrerPolicySet - }; - } -}); - -// node_modules/undici/lib/fetch/global.js -var require_global = __commonJS({ - 'node_modules/undici/lib/fetch/global.js'(exports2, module2) { - 'use strict'; - var globalOrigin = Symbol.for('undici.globalOrigin.1'); - function getGlobalOrigin() { - return globalThis[globalOrigin]; - } - function setGlobalOrigin(newOrigin) { - if (newOrigin === void 0) { - Object.defineProperty(globalThis, globalOrigin, { - value: void 0, - writable: true, - enumerable: false, - configurable: false - }); - return; - } - const parsedURL = new URL(newOrigin); - if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { - throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); } - Object.defineProperty(globalThis, globalOrigin, { - value: parsedURL, - writable: true, - enumerable: false, - configurable: false - }); - } - module2.exports = { - getGlobalOrigin, - setGlobalOrigin }; + module2.exports = DispatcherBase; } }); -// node_modules/undici/lib/fetch/util.js -var require_util2 = __commonJS({ - 'node_modules/undici/lib/fetch/util.js'(exports2, module2) { +// node_modules/undici/lib/util/timers.js +var require_timers = __commonJS({ + 'node_modules/undici/lib/util/timers.js'(exports2, module2) { 'use strict'; - var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants2(); - var { getGlobalOrigin } = require_global(); - var { performance: performance2 } = require('perf_hooks'); - var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); - var assert = require('assert'); - var { isUint8Array } = require('util/types'); - var supportedHashes = []; - var crypto4; - try { - crypto4 = require('crypto'); - const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']; - supportedHashes = crypto4.getHashes().filter(hash => possibleRelevantHashes.includes(hash)); - } catch {} - function responseURL(response) { - const urlList = response.urlList; - const length = urlList.length; - return length === 0 ? null : urlList[length - 1].toString(); - } - function responseLocationURL(response, requestFragment) { - if (!redirectStatusSet.has(response.status)) { - return null; - } - let location = response.headersList.get('location'); - if (location !== null && isValidHeaderValue(location)) { - location = new URL(location, responseURL(response)); - } - if (location && !location.hash) { - location.hash = requestFragment; - } - return location; - } - function requestCurrentURL(request) { - return request.urlList[request.urlList.length - 1]; - } - function requestBadPort(request) { - const url = requestCurrentURL(request); - if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { - return 'blocked'; - } - return 'allowed'; - } - function isErrorLike(object) { - return object instanceof Error || object?.constructor?.name === 'Error' || object?.constructor?.name === 'DOMException'; - } - function isValidReasonPhrase(statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); - if ( - !( - c === 9 || // HTAB - (c >= 32 && c <= 126) || // SP / VCHAR - (c >= 128 && c <= 255) - ) - ) { - return false; + var fastNow = 0; + var RESOLUTION_MS = 1e3; + var TICK_MS = (RESOLUTION_MS >> 1) - 1; + var fastNowTimeout; + var kFastTimer = Symbol('kFastTimer'); + var fastTimers = []; + var NOT_IN_LIST = -2; + var TO_BE_CLEARED = -1; + var PENDING = 0; + var ACTIVE = 1; + function onTick() { + fastNow += TICK_MS; + let idx = 0; + let len = fastTimers.length; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer._state === PENDING) { + timer._idleStart = fastNow - TICK_MS; + timer._state = ACTIVE; + } else if (timer._state === ACTIVE && fastNow >= timer._idleStart + timer._idleTimeout) { + timer._state = TO_BE_CLEARED; + timer._idleStart = -1; + timer._onTimeout(timer._timerArg); + } + if (timer._state === TO_BE_CLEARED) { + timer._state = NOT_IN_LIST; + if (--len !== 0) { + fastTimers[idx] = fastTimers[len]; + } + } else { + ++idx; } } - return true; - } - function isTokenCharCode(c) { - switch (c) { - 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 c >= 33 && c <= 126; + fastTimers.length = len; + if (fastTimers.length !== 0) { + refreshTimeout(); } } - function isValidHTTPToken(characters) { - if (characters.length === 0) { - return false; - } - for (let i = 0; i < characters.length; ++i) { - if (!isTokenCharCode(characters.charCodeAt(i))) { - return false; + function refreshTimeout() { + if (fastNowTimeout) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTick, TICK_MS); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); } } - return true; } - function isValidHeaderName(potentialValue) { - return isValidHTTPToken(potentialValue); - } - function isValidHeaderValue(potentialValue) { - if ( - potentialValue.startsWith(' ') || - potentialValue.startsWith(' ') || - potentialValue.endsWith(' ') || - potentialValue.endsWith(' ') - ) { - return false; - } - if (potentialValue.includes('\0') || potentialValue.includes('\r') || potentialValue.includes('\n')) { - return false; + var FastTimer = class { + [kFastTimer] = true; + /** + * The state of the timer, which can be one of the following: + * - NOT_IN_LIST (-2) + * - TO_BE_CLEARED (-1) + * - PENDING (0) + * - ACTIVE (1) + * + * @type {-2|-1|0|1} + * @private + */ + _state = NOT_IN_LIST; + /** + * The number of milliseconds to wait before calling the callback. + * + * @type {number} + * @private + */ + _idleTimeout = -1; + /** + * The time in milliseconds when the timer was started. This value is used to + * calculate when the timer should expire. + * + * @type {number} + * @default -1 + * @private + */ + _idleStart = -1; + /** + * The function to be executed when the timer expires. + * @type {Function} + * @private + */ + _onTimeout; + /** + * The argument to be passed to the callback when the timer expires. + * + * @type {*} + * @private + */ + _timerArg; + /** + * @constructor + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should wait + * before the specified function or code is executed. + * @param {*} arg + */ + constructor(callback, delay, arg) { + this._onTimeout = callback; + this._idleTimeout = delay; + this._timerArg = arg; + this.refresh(); } - return true; - } - function setRequestReferrerPolicyOnRedirect(request, actualResponse) { - const { headersList } = actualResponse; - const policyHeader = (headersList.get('referrer-policy') ?? '').split(','); - let policy = ''; - if (policyHeader.length > 0) { - for (let i = policyHeader.length; i !== 0; i--) { - const token2 = policyHeader[i - 1].trim(); - if (referrerPolicyTokens.has(token2)) { - policy = token2; - break; - } + /** + * Sets the timer's start time to the current time, and reschedules the timer + * to call its callback at the previously specified duration adjusted to the + * current time. + * Using this on a timer that has already called its callback will reactivate + * the timer. + * + * @returns {void} + */ + refresh() { + if (this._state === NOT_IN_LIST) { + fastTimers.push(this); } + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + this._state = PENDING; } - if (policy !== '') { - request.referrerPolicy = policy; + /** + * The `clear` method cancels the timer, preventing it from executing. + * + * @returns {void} + * @private + */ + clear() { + this._state = TO_BE_CLEARED; + this._idleStart = -1; } - } - function crossOriginResourcePolicyCheck() { - return 'allowed'; - } - function corsCheck() { - return 'success'; - } - function TAOCheck() { - return 'success'; - } - function appendFetchMetadata(httpRequest) { - let header = null; - header = httpRequest.mode; - httpRequest.headersList.set('sec-fetch-mode', header); - } - function appendRequestOriginHeader(request) { - let serializedOrigin = request.origin; - if (request.responseTainting === 'cors' || request.mode === 'websocket') { - if (serializedOrigin) { - request.headersList.append('origin', serializedOrigin); + }; + module2.exports = { + /** + * The setTimeout() method sets a timer which executes a function once the + * timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {NodeJS.Timeout|FastTimer} + */ + setTimeout(callback, delay, arg) { + return delay <= RESOLUTION_MS ? setTimeout(callback, delay, arg) : new FastTimer(callback, delay, arg); + }, + /** + * The clearTimeout method cancels an instantiated Timer previously created + * by calling setTimeout. + * + * @param {NodeJS.Timeout|FastTimer} timeout + */ + clearTimeout(timeout) { + if (timeout[kFastTimer]) { + timeout.clear(); + } else { + clearTimeout(timeout); } - } else if (request.method !== 'GET' && request.method !== 'HEAD') { - switch (request.referrerPolicy) { - case 'no-referrer': - serializedOrigin = null; - break; - case 'no-referrer-when-downgrade': - case 'strict-origin': - case 'strict-origin-when-cross-origin': - if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { - serializedOrigin = null; + }, + /** + * The setFastTimeout() method sets a fastTimer which executes a function once + * the timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {FastTimer} + */ + setFastTimeout(callback, delay, arg) { + return new FastTimer(callback, delay, arg); + }, + /** + * The clearTimeout method cancels an instantiated FastTimer previously + * created by calling setFastTimeout. + * + * @param {FastTimer} timeout + */ + clearFastTimeout(timeout) { + timeout.clear(); + }, + /** + * The now method returns the value of the internal fast timer clock. + * + * @returns {number} + */ + now() { + return fastNow; + }, + /** + * Trigger the onTick function to process the fastTimers array. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + * @param {number} [delay=0] The delay in milliseconds to add to the now value. + */ + tick(delay = 0) { + fastNow += delay - RESOLUTION_MS + 1; + onTick(); + onTick(); + }, + /** + * Reset FastTimers. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + reset() { + fastNow = 0; + fastTimers.length = 0; + clearTimeout(fastNowTimeout); + fastNowTimeout = null; + }, + /** + * Exporting for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + kFastTimer + }; + } +}); + +// node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + 'node_modules/undici/lib/core/connect.js'(exports2, module2) { + 'use strict'; + var net = require('node:net'); + var assert = require('node:assert'); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var timers = require_timers(); + function noop3() {} + var tls; + var SessionCache; + if (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry(key => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; } - break; - case 'same-origin': - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null; + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); } - break; - default: + }); } - if (serializedOrigin) { - request.headersList.append('origin', serializedOrigin); + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); } - } - } - function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { - return performance2.now(); - } - function createOpaqueTimingInfo(timingInfo) { - return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null - }; - } - function makePolicyContainer() { - return { - referrerPolicy: 'strict-origin-when-cross-origin' - }; - } - function clonePolicyContainer(policyContainer) { - return { - referrerPolicy: policyContainer.referrerPolicy }; - } - function determineRequestsReferrer(request) { - const policy = request.referrerPolicy; - assert(policy); - let referrerSource = null; - if (request.referrer === 'client') { - const globalOrigin = getGlobalOrigin(); - if (!globalOrigin || globalOrigin.origin === 'null') { - return 'no-referrer'; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); } - referrerSource = new URL(globalOrigin); - } else if (request.referrer instanceof URL) { - referrerSource = request.referrer; - } - let referrerURL = stripURLForReferrer(referrerSource); - const referrerOrigin = stripURLForReferrer(referrerSource, true); - if (referrerURL.toString().length > 4096) { - referrerURL = referrerOrigin; - } - const areSameOrigin = sameOrigin(request, referrerURL); - const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url); - switch (policy) { - case 'origin': - return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); - case 'unsafe-url': - return referrerURL; - case 'same-origin': - return areSameOrigin ? referrerOrigin : 'no-referrer'; - case 'origin-when-cross-origin': - return areSameOrigin ? referrerURL : referrerOrigin; - case 'strict-origin-when-cross-origin': { - const currentURL = requestCurrentURL(request); - if (sameOrigin(referrerURL, currentURL)) { - return referrerURL; + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; } - if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { - return 'no-referrer'; + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); } - return referrerOrigin; + this._sessionCache.set(sessionKey, session); } - case 'strict-origin': - case 'no-referrer-when-downgrade': - default: - return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin; - } - } - function stripURLForReferrer(url, originOnly) { - assert(url instanceof URL); - if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { - return 'no-referrer'; - } - url.username = ''; - url.password = ''; - url.hash = ''; - if (originOnly) { - url.pathname = ''; - url.search = ''; - } - return url; + }; } - function isURLPotentiallyTrustworthy(url) { - if (!(url instanceof URL)) { - return false; - } - if (url.href === 'about:blank' || url.href === 'about:srcdoc') { - return true; + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero'); } - if (url.protocol === 'data:') return true; - if (url.protocol === 'file:') return true; - return isOriginPotentiallyTrustworthy(url.origin); - function isOriginPotentiallyTrustworthy(origin) { - if (origin == null || origin === 'null') return false; - const originAsURL = new URL(origin); - if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { - return true; + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === 'https:') { + if (!tls) { + tls = require('node:tls'); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + assert(sessionKey); + const session = customSession || sessionCache.get(sessionKey) || null; + port = port || 443; + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, + // upgrade socket connection + port, + host: hostname + }); + socket.on('session', function (session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update'); + port = port || 80; + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port, + host: hostname + }); } - if ( - /^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || - originAsURL.hostname === 'localhost' || - originAsURL.hostname.includes('localhost.') || - originAsURL.hostname.endsWith('.localhost') - ) { - return true; + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); } - return false; - } - } - function bytesMatch(bytes, metadataList) { - if (crypto4 === void 0) { - return true; - } - const parsedMetadata = parseMetadata(metadataList); - if (parsedMetadata === 'no metadata') { - return true; - } - if (parsedMetadata.length === 0) { - return true; - } - const strongest = getStrongestMetadata(parsedMetadata); - const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest); - for (const item of metadata) { - const algorithm = item.algo; - const expectedValue = item.hash; - let actualValue = crypto4.createHash(algorithm).update(bytes).digest('base64'); - if (actualValue[actualValue.length - 1] === '=') { - if (actualValue[actualValue.length - 2] === '=') { - actualValue = actualValue.slice(0, -2); - } else { - actualValue = actualValue.slice(0, -1); - } - } - if (compareBase64Mixed(actualValue, expectedValue)) { - return true; - } - } - return false; - } - var parseHashWithOptions = - /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i; - function parseMetadata(metadata) { - const result = []; - let empty = true; - for (const token2 of metadata.split(' ')) { - empty = false; - const parsedToken = parseHashWithOptions.exec(token2); - if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) { - continue; - } - const algorithm = parsedToken.groups.algo.toLowerCase(); - if (supportedHashes.includes(algorithm)) { - result.push(parsedToken.groups); - } - } - if (empty === true) { - return 'no metadata'; - } - return result; - } - function getStrongestMetadata(metadataList) { - let algorithm = metadataList[0].algo; - if (algorithm[3] === '5') { - return algorithm; - } - for (let i = 1; i < metadataList.length; ++i) { - const metadata = metadataList[i]; - if (metadata.algo[3] === '5') { - algorithm = 'sha512'; - break; - } else if (algorithm[3] === '3') { - continue; - } else if (metadata.algo[3] === '3') { - algorithm = 'sha384'; - } - } - return algorithm; - } - function filterMetadataListByAlgorithm(metadataList, algorithm) { - if (metadataList.length === 1) { - return metadataList; - } - let pos = 0; - for (let i = 0; i < metadataList.length; ++i) { - if (metadataList[i].algo === algorithm) { - metadataList[pos++] = metadataList[i]; - } - } - metadataList.length = pos; - return metadataList; - } - function compareBase64Mixed(actualValue, expectedValue) { - if (actualValue.length !== expectedValue.length) { - return false; - } - for (let i = 0; i < actualValue.length; ++i) { - if (actualValue[i] !== expectedValue[i]) { - if ((actualValue[i] === '+' && expectedValue[i] === '-') || (actualValue[i] === '/' && expectedValue[i] === '_')) { - continue; - } - return false; - } - } - return true; - } - function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) {} - function sameOrigin(A, B) { - if (A.origin === B.origin && A.origin === 'null') { - return true; - } - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { - return true; - } - return false; - } - function createDeferredPromise() { - let res; - let rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - return { promise, resolve: res, reject: rej }; - } - function isAborted(fetchParams) { - return fetchParams.controller.state === 'aborted'; - } - function isCancelled(fetchParams) { - return fetchParams.controller.state === 'aborted' || fetchParams.controller.state === 'terminated'; - } - var normalizeMethodRecord = { - delete: 'DELETE', - DELETE: 'DELETE', - get: 'GET', - GET: 'GET', - head: 'HEAD', - HEAD: 'HEAD', - options: 'OPTIONS', - OPTIONS: 'OPTIONS', - post: 'POST', - POST: 'POST', - put: 'PUT', - PUT: 'PUT' - }; - Object.setPrototypeOf(normalizeMethodRecord, null); - function normalizeMethod(method) { - return normalizeMethodRecord[method.toLowerCase()] ?? method; - } - function serializeJavascriptValueToJSONString(value) { - const result = JSON.stringify(value); - if (result === void 0) { - throw new TypeError('Value is not JSON serializable'); - } - assert(typeof result === 'string'); - return result; - } - var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); - function makeIterator(iterator, name, kind) { - const object = { - index: 0, - kind, - target: iterator - }; - const i = { - next() { - if (Object.getPrototypeOf(this) !== i) { - throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`); - } - const { index, kind: kind2, target } = object; - const values = target(); - const len = values.length; - if (index >= len) { - return { value: void 0, done: true }; - } - const pair = values[index]; - object.index = index + 1; - return iteratorResult(pair, kind2); - }, - // The class string of an iterator prototype object for a given interface is the - // result of concatenating the identifier of the interface and the string " Iterator". - [Symbol.toStringTag]: `${name} Iterator` + const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port }); + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + queueMicrotask(clearConnectTimeout); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }) + .on('error', function (err) { + queueMicrotask(clearConnectTimeout); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; }; - Object.setPrototypeOf(i, esIteratorPrototype); - return Object.setPrototypeOf({}, i); - } - function iteratorResult(pair, kind) { - let result; - switch (kind) { - case 'key': { - result = pair[0]; - break; - } - case 'value': { - result = pair[1]; - break; - } - case 'key+value': { - result = pair; - break; - } - } - return { value: result, done: false }; } - async function fullyReadBody(body2, processBody, processBodyError) { - const successSteps = processBody; - const errorSteps = processBodyError; - let reader; - try { - reader = body2.stream.getReader(); - } catch (e) { - errorSteps(e); + var setupConnectTimeout = + process.platform === 'win32' + ? (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop3; + } + let s1 = null; + let s2 = null; + const fastTimer = timers.setFastTimeout(() => { + s1 = setImmediate(() => { + s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts)); + }); + }, opts.timeout); + return () => { + timers.clearFastTimeout(fastTimer); + clearImmediate(s1); + clearImmediate(s2); + }; + } + : (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop3; + } + let s1 = null; + const fastTimer = timers.setFastTimeout(() => { + s1 = setImmediate(() => { + onConnectTimeout(socketWeakRef.deref(), opts); + }); + }, opts.timeout); + return () => { + timers.clearFastTimeout(fastTimer); + clearImmediate(s1); + }; + }; + function onConnectTimeout(socket, opts) { + if (socket == null) { return; } - try { - const result = await readAllBytes(reader); - successSteps(result); - } catch (e) { - errorSteps(e); - } - } - var ReadableStream = globalThis.ReadableStream; - function isReadableStreamLike(stream) { - if (!ReadableStream) { - ReadableStream = require('stream/web').ReadableStream; - } - return ( - stream instanceof ReadableStream || (stream[Symbol.toStringTag] === 'ReadableStream' && typeof stream.tee === 'function') - ); - } - var MAXIMUM_ARGUMENT_LENGTH = 65535; - function isomorphicDecode(input) { - if (input.length < MAXIMUM_ARGUMENT_LENGTH) { - return String.fromCharCode(...input); - } - return input.reduce((previous, current) => previous + String.fromCharCode(current), ''); - } - function readableStreamClose(controller) { - try { - controller.close(); - } catch (err) { - if (!err.message.includes('Controller is already closed')) { - throw err; - } - } - } - function isomorphicEncode(input) { - for (let i = 0; i < input.length; i++) { - assert(input.charCodeAt(i) <= 255); + let message = 'Connect Timeout Error'; + if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) { + message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`; + } else { + message += ` (attempted address: ${opts.hostname}:${opts.port},`; } - return input; + message += ` timeout: ${opts.timeout}ms)`; + util.destroy(socket, new ConnectTimeoutError(message)); } - async function readAllBytes(reader) { - const bytes = []; - let byteLength = 0; - while (true) { - const { done, value: chunk } = await reader.read(); - if (done) { - return Buffer.concat(bytes, byteLength); - } - if (!isUint8Array(chunk)) { - throw new TypeError('Received non-Uint8Array chunk'); + module2.exports = buildConnector; + } +}); + +// node_modules/undici/lib/llhttp/utils.js +var require_utils2 = __commonJS({ + 'node_modules/undici/lib/llhttp/utils.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach(key => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; } - bytes.push(chunk); - byteLength += chunk.length; - } - } - function urlIsLocal(url) { - assert('protocol' in url); - const protocol = url.protocol; - return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'; - } - function urlHasHttpsScheme(url) { - if (typeof url === 'string') { - return url.startsWith('https:'); - } - return url.protocol === 'https:'; + }); + return res; } - function urlIsHttpHttpsScheme(url) { - assert('protocol' in url); - const protocol = url.protocol; - return protocol === 'http:' || protocol === 'https:'; - } - var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); - module2.exports = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isURLPotentiallyTrustworthy, - isValidReasonPhrase, - sameOrigin, - normalizeMethod, - serializeJavascriptValueToJSONString, - makeIterator, - isValidHeaderName, - isValidHeaderValue, - hasOwn, - isErrorLike, - fullyReadBody, - bytesMatch, - isReadableStreamLike, - readableStreamClose, - isomorphicEncode, - isomorphicDecode, - urlIsLocal, - urlHasHttpsScheme, - urlIsHttpHttpsScheme, - readAllBytes, - normalizeMethodRecord, - parseMetadata - }; - } -}); - -// node_modules/undici/lib/fetch/symbols.js -var require_symbols2 = __commonJS({ - 'node_modules/undici/lib/fetch/symbols.js'(exports2, module2) { - 'use strict'; - module2.exports = { - kUrl: Symbol('url'), - kHeaders: Symbol('headers'), - kSignal: Symbol('signal'), - kState: Symbol('state'), - kGuard: Symbol('guard'), - kRealm: Symbol('realm') - }; + exports2.enumToMap = enumToMap; } }); -// node_modules/undici/lib/fetch/webidl.js -var require_webidl = __commonJS({ - 'node_modules/undici/lib/fetch/webidl.js'(exports2, module2) { +// node_modules/undici/lib/llhttp/constants.js +var require_constants2 = __commonJS({ + 'node_modules/undici/lib/llhttp/constants.js'(exports2) { 'use strict'; - var { types } = require('util'); - var { hasOwn, toUSVString } = require_util2(); - var webidl = {}; - webidl.converters = {}; - webidl.util = {}; - webidl.errors = {}; - webidl.errors.exception = function (message) { - return new TypeError(`${message.header}: ${message.message}`); - }; - webidl.errors.conversionFailed = function (context) { - const plural = context.types.length === 1 ? '' : ' one of'; - const message = `${context.argument} could not be converted to${plural}: ${context.types.join(', ')}.`; - return webidl.errors.exception({ - header: context.prefix, - message - }); - }; - webidl.errors.invalidArgument = function (context) { - return webidl.errors.exception({ - header: context.prefix, - message: `"${context.value}" is an invalid ${context.type}.` - }); - }; - webidl.brandCheck = function (V, I, opts = void 0) { - if (opts?.strict !== false && !(V instanceof I)) { - throw new TypeError('Illegal invocation'); - } else { - return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]; - } - }; - webidl.argumentLengthCheck = function ({ length }, min, ctx) { - if (length < min) { - throw webidl.errors.exception({ - message: `${min} argument${min !== 1 ? 's' : ''} required, but${length ? ' only' : ''} ${length} found.`, - ...ctx - }); - } - }; - webidl.illegalConstructor = function () { - throw webidl.errors.exception({ - header: 'TypeError', - message: 'Illegal constructor' - }); - }; - webidl.util.Type = function (V) { - switch (typeof V) { - case 'undefined': - return 'Undefined'; - case 'boolean': - return 'Boolean'; - case 'string': - return 'String'; - case 'symbol': - return 'Symbol'; - case 'number': - return 'Number'; - case 'bigint': - return 'BigInt'; - case 'function': - case 'object': { - if (V === null) { - return 'Null'; - } - return 'Object'; - } - } - }; - webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { - let upperBound; - let lowerBound; - if (bitLength === 64) { - upperBound = Math.pow(2, 53) - 1; - if (signedness === 'unsigned') { - lowerBound = 0; - } else { - lowerBound = Math.pow(-2, 53) + 1; - } - } else if (signedness === 'unsigned') { - lowerBound = 0; - upperBound = Math.pow(2, bitLength) - 1; - } else { - lowerBound = Math.pow(-2, bitLength) - 1; - upperBound = Math.pow(2, bitLength - 1) - 1; - } - let x = Number(V); - if (x === 0) { - x = 0; - } - if (opts.enforceRange === true) { - if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { - throw webidl.errors.exception({ - header: 'Integer conversion', - message: `Could not convert ${V} to an integer.` - }); - } - x = webidl.util.IntegerPart(x); - if (x < lowerBound || x > upperBound) { - throw webidl.errors.exception({ - header: 'Integer conversion', - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` - }); - } - return x; - } - if (!Number.isNaN(x) && opts.clamp === true) { - x = Math.min(Math.max(x, lowerBound), upperBound); - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x); - } else { - x = Math.ceil(x); - } - return x; - } - if (Number.isNaN(x) || (x === 0 && Object.is(0, x)) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { - return 0; - } - x = webidl.util.IntegerPart(x); - x = x % Math.pow(2, bitLength); - if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength); - } - return x; - }; - webidl.util.IntegerPart = function (n) { - const r = Math.floor(Math.abs(n)); - if (n < 0) { - return -1 * r; - } - return r; - }; - webidl.sequenceConverter = function (converter) { - return V => { - if (webidl.util.Type(V) !== 'Object') { - throw webidl.errors.exception({ - header: 'Sequence', - message: `Value of type ${webidl.util.Type(V)} is not an Object.` - }); - } - const method = V?.[Symbol.iterator]?.(); - const seq = []; - if (method === void 0 || typeof method.next !== 'function') { - throw webidl.errors.exception({ - header: 'Sequence', - message: 'Object is not an iterator.' - }); - } - while (true) { - const { done, value } = method.next(); - if (done) { - break; - } - seq.push(converter(value)); - } - return seq; - }; - }; - webidl.recordConverter = function (keyConverter, valueConverter) { - return O => { - if (webidl.util.Type(O) !== 'Object') { - throw webidl.errors.exception({ - header: 'Record', - message: `Value of type ${webidl.util.Type(O)} is not an Object.` - }); - } - const result = {}; - if (!types.isProxy(O)) { - const keys2 = Object.keys(O); - for (const key of keys2) { - const typedKey = keyConverter(key); - const typedValue = valueConverter(O[key]); - result[typedKey] = typedValue; - } - return result; - } - const keys = Reflect.ownKeys(O); - for (const key of keys) { - const desc = Reflect.getOwnPropertyDescriptor(O, key); - if (desc?.enumerable) { - const typedKey = keyConverter(key); - const typedValue = valueConverter(O[key]); - result[typedKey] = typedValue; - } - } - return result; - }; - }; - webidl.interfaceConverter = function (i) { - return (V, opts = {}) => { - if (opts.strict !== false && !(V instanceof i)) { - throw webidl.errors.exception({ - header: i.name, - message: `Expected ${V} to be an instance of ${i.name}.` - }); - } - return V; - }; - }; - webidl.dictionaryConverter = function (converters) { - return dictionary => { - const type = webidl.util.Type(dictionary); - const dict = {}; - if (type === 'Null' || type === 'Undefined') { - return dict; - } else if (type !== 'Object') { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` - }); - } - for (const options of converters) { - const { key, defaultValue, required, converter } = options; - if (required === true) { - if (!hasOwn(dictionary, key)) { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `Missing required key "${key}".` - }); - } - } - let value = dictionary[key]; - const hasDefault = hasOwn(options, 'defaultValue'); - if (hasDefault && value !== null) { - value = value ?? defaultValue; - } - if (required || hasDefault || value !== void 0) { - value = converter(value); - if (options.allowedValues && !options.allowedValues.includes(value)) { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` - }); - } - dict[key] = value; - } - } - return dict; - }; - }; - webidl.nullableConverter = function (converter) { - return V => { - if (V === null) { - return V; - } - return converter(V); - }; - }; - webidl.converters.DOMString = function (V, opts = {}) { - if (V === null && opts.legacyNullToEmptyString) { - return ''; - } - if (typeof V === 'symbol') { - throw new TypeError('Could not convert argument of type symbol to string.'); - } - return String(V); - }; - webidl.converters.ByteString = function (V) { - const x = webidl.converters.DOMString(V); - for (let index = 0; index < x.length; index++) { - if (x.charCodeAt(index) > 255) { - throw new TypeError( - `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt( - index - )} which is greater than 255.` - ); - } + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.SPECIAL_HEADERS = + exports2.HEADER_STATE = + exports2.MINOR = + exports2.MAJOR = + exports2.CONNECTION_TOKEN_CHARS = + exports2.HEADER_CHARS = + exports2.TOKEN = + exports2.STRICT_TOKEN = + exports2.HEX = + exports2.URL_CHAR = + exports2.STRICT_URL_CHAR = + exports2.USERINFO_CHARS = + exports2.MARK = + exports2.ALPHANUM = + exports2.NUM = + exports2.HEX_MAP = + exports2.NUM_MAP = + exports2.ALPHA = + exports2.FINISH = + exports2.H_METHOD_MAP = + exports2.METHOD_MAP = + exports2.METHODS_RTSP = + exports2.METHODS_ICE = + exports2.METHODS_HTTP = + exports2.METHODS = + exports2.LENIENT_FLAGS = + exports2.FLAGS = + exports2.TYPE = + exports2.ERROR = + void 0; + var utils_1 = require_utils2(); + var ERROR; + (function (ERROR2) { + ERROR2[(ERROR2['OK'] = 0)] = 'OK'; + ERROR2[(ERROR2['INTERNAL'] = 1)] = 'INTERNAL'; + ERROR2[(ERROR2['STRICT'] = 2)] = 'STRICT'; + ERROR2[(ERROR2['LF_EXPECTED'] = 3)] = 'LF_EXPECTED'; + ERROR2[(ERROR2['UNEXPECTED_CONTENT_LENGTH'] = 4)] = 'UNEXPECTED_CONTENT_LENGTH'; + ERROR2[(ERROR2['CLOSED_CONNECTION'] = 5)] = 'CLOSED_CONNECTION'; + ERROR2[(ERROR2['INVALID_METHOD'] = 6)] = 'INVALID_METHOD'; + ERROR2[(ERROR2['INVALID_URL'] = 7)] = 'INVALID_URL'; + ERROR2[(ERROR2['INVALID_CONSTANT'] = 8)] = 'INVALID_CONSTANT'; + ERROR2[(ERROR2['INVALID_VERSION'] = 9)] = 'INVALID_VERSION'; + ERROR2[(ERROR2['INVALID_HEADER_TOKEN'] = 10)] = 'INVALID_HEADER_TOKEN'; + ERROR2[(ERROR2['INVALID_CONTENT_LENGTH'] = 11)] = 'INVALID_CONTENT_LENGTH'; + ERROR2[(ERROR2['INVALID_CHUNK_SIZE'] = 12)] = 'INVALID_CHUNK_SIZE'; + ERROR2[(ERROR2['INVALID_STATUS'] = 13)] = 'INVALID_STATUS'; + ERROR2[(ERROR2['INVALID_EOF_STATE'] = 14)] = 'INVALID_EOF_STATE'; + ERROR2[(ERROR2['INVALID_TRANSFER_ENCODING'] = 15)] = 'INVALID_TRANSFER_ENCODING'; + ERROR2[(ERROR2['CB_MESSAGE_BEGIN'] = 16)] = 'CB_MESSAGE_BEGIN'; + ERROR2[(ERROR2['CB_HEADERS_COMPLETE'] = 17)] = 'CB_HEADERS_COMPLETE'; + ERROR2[(ERROR2['CB_MESSAGE_COMPLETE'] = 18)] = 'CB_MESSAGE_COMPLETE'; + ERROR2[(ERROR2['CB_CHUNK_HEADER'] = 19)] = 'CB_CHUNK_HEADER'; + ERROR2[(ERROR2['CB_CHUNK_COMPLETE'] = 20)] = 'CB_CHUNK_COMPLETE'; + ERROR2[(ERROR2['PAUSED'] = 21)] = 'PAUSED'; + ERROR2[(ERROR2['PAUSED_UPGRADE'] = 22)] = 'PAUSED_UPGRADE'; + ERROR2[(ERROR2['PAUSED_H2_UPGRADE'] = 23)] = 'PAUSED_H2_UPGRADE'; + ERROR2[(ERROR2['USER'] = 24)] = 'USER'; + })((ERROR = exports2.ERROR || (exports2.ERROR = {}))); + var TYPE; + (function (TYPE2) { + TYPE2[(TYPE2['BOTH'] = 0)] = 'BOTH'; + TYPE2[(TYPE2['REQUEST'] = 1)] = 'REQUEST'; + TYPE2[(TYPE2['RESPONSE'] = 2)] = 'RESPONSE'; + })((TYPE = exports2.TYPE || (exports2.TYPE = {}))); + var FLAGS; + (function (FLAGS2) { + FLAGS2[(FLAGS2['CONNECTION_KEEP_ALIVE'] = 1)] = 'CONNECTION_KEEP_ALIVE'; + FLAGS2[(FLAGS2['CONNECTION_CLOSE'] = 2)] = 'CONNECTION_CLOSE'; + FLAGS2[(FLAGS2['CONNECTION_UPGRADE'] = 4)] = 'CONNECTION_UPGRADE'; + FLAGS2[(FLAGS2['CHUNKED'] = 8)] = 'CHUNKED'; + FLAGS2[(FLAGS2['UPGRADE'] = 16)] = 'UPGRADE'; + FLAGS2[(FLAGS2['CONTENT_LENGTH'] = 32)] = 'CONTENT_LENGTH'; + FLAGS2[(FLAGS2['SKIPBODY'] = 64)] = 'SKIPBODY'; + FLAGS2[(FLAGS2['TRAILING'] = 128)] = 'TRAILING'; + FLAGS2[(FLAGS2['TRANSFER_ENCODING'] = 512)] = 'TRANSFER_ENCODING'; + })((FLAGS = exports2.FLAGS || (exports2.FLAGS = {}))); + var LENIENT_FLAGS; + (function (LENIENT_FLAGS2) { + LENIENT_FLAGS2[(LENIENT_FLAGS2['HEADERS'] = 1)] = 'HEADERS'; + LENIENT_FLAGS2[(LENIENT_FLAGS2['CHUNKED_LENGTH'] = 2)] = 'CHUNKED_LENGTH'; + LENIENT_FLAGS2[(LENIENT_FLAGS2['KEEP_ALIVE'] = 4)] = 'KEEP_ALIVE'; + })((LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}))); + var METHODS; + (function (METHODS2) { + METHODS2[(METHODS2['DELETE'] = 0)] = 'DELETE'; + METHODS2[(METHODS2['GET'] = 1)] = 'GET'; + METHODS2[(METHODS2['HEAD'] = 2)] = 'HEAD'; + METHODS2[(METHODS2['POST'] = 3)] = 'POST'; + METHODS2[(METHODS2['PUT'] = 4)] = 'PUT'; + METHODS2[(METHODS2['CONNECT'] = 5)] = 'CONNECT'; + METHODS2[(METHODS2['OPTIONS'] = 6)] = 'OPTIONS'; + METHODS2[(METHODS2['TRACE'] = 7)] = 'TRACE'; + METHODS2[(METHODS2['COPY'] = 8)] = 'COPY'; + METHODS2[(METHODS2['LOCK'] = 9)] = 'LOCK'; + METHODS2[(METHODS2['MKCOL'] = 10)] = 'MKCOL'; + METHODS2[(METHODS2['MOVE'] = 11)] = 'MOVE'; + METHODS2[(METHODS2['PROPFIND'] = 12)] = 'PROPFIND'; + METHODS2[(METHODS2['PROPPATCH'] = 13)] = 'PROPPATCH'; + METHODS2[(METHODS2['SEARCH'] = 14)] = 'SEARCH'; + METHODS2[(METHODS2['UNLOCK'] = 15)] = 'UNLOCK'; + METHODS2[(METHODS2['BIND'] = 16)] = 'BIND'; + METHODS2[(METHODS2['REBIND'] = 17)] = 'REBIND'; + METHODS2[(METHODS2['UNBIND'] = 18)] = 'UNBIND'; + METHODS2[(METHODS2['ACL'] = 19)] = 'ACL'; + METHODS2[(METHODS2['REPORT'] = 20)] = 'REPORT'; + METHODS2[(METHODS2['MKACTIVITY'] = 21)] = 'MKACTIVITY'; + METHODS2[(METHODS2['CHECKOUT'] = 22)] = 'CHECKOUT'; + METHODS2[(METHODS2['MERGE'] = 23)] = 'MERGE'; + METHODS2[(METHODS2['M-SEARCH'] = 24)] = 'M-SEARCH'; + METHODS2[(METHODS2['NOTIFY'] = 25)] = 'NOTIFY'; + METHODS2[(METHODS2['SUBSCRIBE'] = 26)] = 'SUBSCRIBE'; + METHODS2[(METHODS2['UNSUBSCRIBE'] = 27)] = 'UNSUBSCRIBE'; + METHODS2[(METHODS2['PATCH'] = 28)] = 'PATCH'; + METHODS2[(METHODS2['PURGE'] = 29)] = 'PURGE'; + METHODS2[(METHODS2['MKCALENDAR'] = 30)] = 'MKCALENDAR'; + METHODS2[(METHODS2['LINK'] = 31)] = 'LINK'; + METHODS2[(METHODS2['UNLINK'] = 32)] = 'UNLINK'; + METHODS2[(METHODS2['SOURCE'] = 33)] = 'SOURCE'; + METHODS2[(METHODS2['PRI'] = 34)] = 'PRI'; + METHODS2[(METHODS2['DESCRIBE'] = 35)] = 'DESCRIBE'; + METHODS2[(METHODS2['ANNOUNCE'] = 36)] = 'ANNOUNCE'; + METHODS2[(METHODS2['SETUP'] = 37)] = 'SETUP'; + METHODS2[(METHODS2['PLAY'] = 38)] = 'PLAY'; + METHODS2[(METHODS2['PAUSE'] = 39)] = 'PAUSE'; + METHODS2[(METHODS2['TEARDOWN'] = 40)] = 'TEARDOWN'; + METHODS2[(METHODS2['GET_PARAMETER'] = 41)] = 'GET_PARAMETER'; + METHODS2[(METHODS2['SET_PARAMETER'] = 42)] = 'SET_PARAMETER'; + METHODS2[(METHODS2['REDIRECT'] = 43)] = 'REDIRECT'; + METHODS2[(METHODS2['RECORD'] = 44)] = 'RECORD'; + METHODS2[(METHODS2['FLUSH'] = 45)] = 'FLUSH'; + })((METHODS = exports2.METHODS || (exports2.METHODS = {}))); + exports2.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports2.METHODS_ICE = [METHODS.SOURCE]; + exports2.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports2.METHOD_MAP = utils_1.enumToMap(METHODS); + exports2.H_METHOD_MAP = {}; + Object.keys(exports2.METHOD_MAP).forEach(key => { + if (/^H/.test(key)) { + exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; } - return x; - }; - webidl.converters.USVString = toUSVString; - webidl.converters.boolean = function (V) { - const x = Boolean(V); - return x; - }; - webidl.converters.any = function (V) { - return V; - }; - webidl.converters['long long'] = function (V) { - const x = webidl.util.ConvertToInt(V, 64, 'signed'); - return x; + }); + var FINISH; + (function (FINISH2) { + FINISH2[(FINISH2['SAFE'] = 0)] = 'SAFE'; + FINISH2[(FINISH2['SAFE_WITH_CB'] = 1)] = 'SAFE_WITH_CB'; + FINISH2[(FINISH2['UNSAFE'] = 2)] = 'UNSAFE'; + })((FINISH = exports2.FINISH || (exports2.FINISH = {}))); + exports2.ALPHA = []; + for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); + } + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 }; - webidl.converters['unsigned long long'] = function (V) { - const x = webidl.util.ConvertToInt(V, 64, 'unsigned'); - return x; - }; - webidl.converters['unsigned long'] = function (V) { - const x = webidl.util.ConvertToInt(V, 32, 'unsigned'); - return x; - }; - webidl.converters['unsigned short'] = function (V, opts) { - const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts); - return x; + exports2.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 }; - webidl.converters.ArrayBuffer = function (V, opts = {}) { - if (webidl.util.Type(V) !== 'Object' || !types.isAnyArrayBuffer(V)) { - throw webidl.errors.conversionFailed({ - prefix: `${V}`, - argument: `${V}`, - types: ['ArrayBuffer'] - }); - } - if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }); + exports2.NUM = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ['-', '_', '.', '!', '~', '*', "'", '(', ')']; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(['%', ';', ':', '&', '=', '+', '$', ',']); + exports2.STRICT_URL_CHAR = [ + '!', + '"', + '$', + '%', + '&', + "'", + '(', + ')', + '*', + '+', + ',', + '-', + '.', + '/', + ':', + ';', + '<', + '=', + '>', + '@', + '[', + '\\', + ']', + '^', + '_', + '`', + '{', + '|', + '}', + '~' + ].concat(exports2.ALPHANUM); + exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([' ', '\f']); + for (let i = 128; i <= 255; i++) { + exports2.URL_CHAR.push(i); + } + exports2.HEX = exports2.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); + exports2.STRICT_TOKEN = ['!', '#', '$', '%', '&', "'", '*', '+', '-', '.', '^', '_', '`', '|', '~'].concat(exports2.ALPHANUM); + exports2.TOKEN = exports2.STRICT_TOKEN.concat([' ']); + exports2.HEADER_CHARS = [' ']; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); } - return V; + } + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter(c => c !== 44); + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + var HEADER_STATE; + (function (HEADER_STATE2) { + HEADER_STATE2[(HEADER_STATE2['GENERAL'] = 0)] = 'GENERAL'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION'] = 1)] = 'CONNECTION'; + HEADER_STATE2[(HEADER_STATE2['CONTENT_LENGTH'] = 2)] = 'CONTENT_LENGTH'; + HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING'] = 3)] = 'TRANSFER_ENCODING'; + HEADER_STATE2[(HEADER_STATE2['UPGRADE'] = 4)] = 'UPGRADE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_KEEP_ALIVE'] = 5)] = 'CONNECTION_KEEP_ALIVE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_CLOSE'] = 6)] = 'CONNECTION_CLOSE'; + HEADER_STATE2[(HEADER_STATE2['CONNECTION_UPGRADE'] = 7)] = 'CONNECTION_UPGRADE'; + HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING_CHUNKED'] = 8)] = 'TRANSFER_ENCODING_CHUNKED'; + })((HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}))); + exports2.SPECIAL_HEADERS = { + connection: HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + upgrade: HEADER_STATE.UPGRADE }; - webidl.converters.TypedArray = function (V, T, opts = {}) { - if (webidl.util.Type(V) !== 'Object' || !types.isTypedArray(V) || V.constructor.name !== T.name) { - throw webidl.errors.conversionFailed({ - prefix: `${T.name}`, - argument: `${V}`, - types: [T.name] - }); - } - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }); - } - return V; + } +}); + +// node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp-wasm.js'(exports2, module2) { + 'use strict'; + var { Buffer: Buffer2 } = require('node:buffer'); + module2.exports = Buffer2.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' + ); + } +}); + +// node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp_simd-wasm.js'(exports2, module2) { + 'use strict'; + var { Buffer: Buffer2 } = require('node:buffer'); + module2.exports = Buffer2.from( + 'AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==', + 'base64' + ); + } +}); + +// node_modules/undici/lib/web/fetch/constants.js +var require_constants3 = __commonJS({ + 'node_modules/undici/lib/web/fetch/constants.js'(exports2, module2) { + 'use strict'; + var corsSafeListedMethods = + /** @type {const} */ + ['GET', 'HEAD', 'POST']; + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = + /** @type {const} */ + [101, 204, 205, 304]; + var redirectStatus = + /** @type {const} */ + [301, 302, 303, 307, 308]; + var redirectStatusSet = new Set(redirectStatus); + var badPorts = + /** @type {const} */ + [ + '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' + ]; + var badPortsSet = new Set(badPorts); + var referrerPolicy = + /** @type {const} */ + [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' + ]; + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = + /** @type {const} */ + ['follow', 'manual', 'error']; + var safeMethods = + /** @type {const} */ + ['GET', 'HEAD', 'OPTIONS', 'TRACE']; + var safeMethodsSet = new Set(safeMethods); + var requestMode = + /** @type {const} */ + ['navigate', 'same-origin', 'no-cors', 'cors']; + var requestCredentials = + /** @type {const} */ + ['omit', 'same-origin', 'include']; + var requestCache = + /** @type {const} */ + ['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached']; + var requestBodyHeader = + /** @type {const} */ + [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' + ]; + var requestDuplex = + /** @type {const} */ + ['half']; + var forbiddenMethods = + /** @type {const} */ + ['CONNECT', 'TRACE', 'TRACK']; + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = + /** @type {const} */ + ['audio', 'audioworklet', 'font', 'image', 'manifest', 'paintworklet', 'script', 'style', 'track', 'video', 'xslt', '']; + var subresourceSet = new Set(subresource); + module2.exports = { + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet }; - webidl.converters.DataView = function (V, opts = {}) { - if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { - throw webidl.errors.exception({ - header: 'DataView', - message: 'Object is not a DataView.' - }); - } - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' + } +}); + +// node_modules/undici/lib/web/fetch/global.js +var require_global = __commonJS({ + 'node_modules/undici/lib/web/fetch/global.js'(exports2, module2) { + 'use strict'; + var globalOrigin = Symbol.for('undici.globalOrigin.1'); + function getGlobalOrigin() { + return globalThis[globalOrigin]; + } + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false }); + return; } - return V; - }; - webidl.converters.BufferSource = function (V, opts = {}) { - if (types.isAnyArrayBuffer(V)) { - return webidl.converters.ArrayBuffer(V, opts); - } - if (types.isTypedArray(V)) { - return webidl.converters.TypedArray(V, V.constructor); - } - if (types.isDataView(V)) { - return webidl.converters.DataView(V, opts); + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); } - throw new TypeError(`Could not convert ${V} to a BufferSource.`); - }; - webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.ByteString); - webidl.converters['sequence>'] = webidl.sequenceConverter(webidl.converters['sequence']); - webidl.converters['record'] = webidl.recordConverter( - webidl.converters.ByteString, - webidl.converters.ByteString - ); + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); + } module2.exports = { - webidl + getGlobalOrigin, + setGlobalOrigin }; } }); -// node_modules/undici/lib/fetch/dataURL.js -var require_dataURL = __commonJS({ - 'node_modules/undici/lib/fetch/dataURL.js'(exports2, module2) { - var assert = require('assert'); - var { atob: atob2 } = require('buffer'); - var { isomorphicDecode } = require_util2(); +// node_modules/undici/lib/web/fetch/data-url.js +var require_data_url = __commonJS({ + 'node_modules/undici/lib/web/fetch/data-url.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); var encoder = new TextEncoder(); - var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; - var HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; - var HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/; + var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g; + var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/; function dataURLProcessor(dataURL) { assert(dataURL.protocol === 'data:'); let input = URLSerializer(dataURL, true); @@ -4928,7 +3521,11 @@ var require_dataURL = __commonJS({ } const href = url.href; const hashLength = url.hash.length; - return hashLength === 0 ? href : href.substring(0, href.length - hashLength); + const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength); + if (!hashLength && href.endsWith('#')) { + return serialized.slice(0, -1); + } + return serialized; } function collectASequenceOfCodePoints(condition, input, position) { let result = ''; @@ -4952,22 +3549,31 @@ var require_dataURL = __commonJS({ const bytes = encoder.encode(input); return percentDecode(bytes); } + function isHexCharByte(byte) { + return (byte >= 48 && byte <= 57) || (byte >= 65 && byte <= 70) || (byte >= 97 && byte <= 102); + } + function hexByteToNumber(byte) { + return ( + // 0-9 + byte >= 48 && byte <= 57 ? byte - 48 : (byte & 223) - 55 + ); + } function percentDecode(input) { - const output = []; - for (let i = 0; i < input.length; i++) { + const length = input.length; + const output = new Uint8Array(length); + let j = 0; + for (let i = 0; i < length; ++i) { const byte = input[i]; if (byte !== 37) { - output.push(byte); - } else if (byte === 37 && !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))) { - output.push(37); + output[j++] = byte; + } else if (byte === 37 && !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))) { + output[j++] = 37; } else { - const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); - const bytePoint = Number.parseInt(nextTwoBytes, 16); - output.push(bytePoint); + output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2]); i += 2; } } - return Uint8Array.from(output); + return length === j ? output : output.subarray(0, j); } function parseMIMEType(input) { input = removeHTTPWhitespace(input, true, true); @@ -5037,22 +3643,24 @@ var require_dataURL = __commonJS({ return mimeType; } function forgivingBase64(data) { - data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ''); - if (data.length % 4 === 0) { - data = data.replace(/=?=$/, ''); + data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, ''); + let dataLength = data.length; + if (dataLength % 4 === 0) { + if (data.charCodeAt(dataLength - 1) === 61) { + --dataLength; + if (data.charCodeAt(dataLength - 1) === 61) { + --dataLength; + } + } } - if (data.length % 4 === 1) { + if (dataLength % 4 === 1) { return 'failure'; } - if (/[^+/0-9A-Za-z]/.test(data)) { + if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) { return 'failure'; } - const binary = atob2(data); - const bytes = new Uint8Array(binary.length); - for (let byte = 0; byte < binary.length; byte++) { - bytes[byte] = binary.charCodeAt(byte); - } - return bytes; + const buffer = Buffer.from(data, 'base64'); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); } function collectAnHTTPQuotedString(input, position, extractValue) { const positionStart = position.position; @@ -5101,32 +3709,79 @@ var require_dataURL = __commonJS({ return serialization; } function isHTTPWhiteSpace(char) { - return char === '\r' || char === '\n' || char === ' ' || char === ' '; + return char === 13 || char === 10 || char === 9 || char === 32; } function removeHTTPWhitespace(str, leading = true, trailing = true) { - let lead = 0; - let trail = str.length - 1; - if (leading) { - for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); - } - if (trailing) { - for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); - } - return str.slice(lead, trail + 1); + return removeChars(str, leading, trailing, isHTTPWhiteSpace); } function isASCIIWhitespace(char) { - return char === '\r' || char === '\n' || char === ' ' || char === '\f' || char === ' '; + return char === 13 || char === 10 || char === 9 || char === 12 || char === 32; } function removeASCIIWhitespace(str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isASCIIWhitespace); + } + function removeChars(str, leading, trailing, predicate) { let lead = 0; let trail = str.length - 1; if (leading) { - for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + while (lead < str.length && predicate(str.charCodeAt(lead))) lead++; } if (trailing) { - for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + while (trail > 0 && predicate(str.charCodeAt(trail))) trail--; + } + return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1); + } + function isomorphicDecode(input) { + const length = input.length; + if ((2 << 15) - 1 > length) { + return String.fromCharCode.apply(null, input); + } + let result = ''; + let i = 0; + let addition = (2 << 15) - 1; + while (i < length) { + if (i + addition > length) { + addition = length - i; + } + result += String.fromCharCode.apply(null, input.subarray(i, (i += addition))); } - return str.slice(lead, trail + 1); + return result; + } + function minimizeSupportedMimeType(mimeType) { + switch (mimeType.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 (mimeType.subtype.endsWith('+json')) { + return 'application/json'; + } + if (mimeType.subtype.endsWith('+xml')) { + return 'application/xml'; + } + return ''; } module2.exports = { dataURLProcessor, @@ -5136,2383 +3791,2155 @@ var require_dataURL = __commonJS({ stringPercentDecode, parseMIMEType, collectAnHTTPQuotedString, - serializeAMimeType + serializeAMimeType, + removeChars, + removeHTTPWhitespace, + minimizeSupportedMimeType, + HTTP_TOKEN_CODEPOINTS, + isomorphicDecode }; } }); -// node_modules/undici/lib/fetch/file.js -var require_file = __commonJS({ - 'node_modules/undici/lib/fetch/file.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/webidl.js +var require_webidl = __commonJS({ + 'node_modules/undici/lib/web/fetch/webidl.js'(exports2, module2) { 'use strict'; - var { Blob: Blob2, File: NativeFile } = require('buffer'); - var { types } = require('util'); - var { kState } = require_symbols2(); - var { isBlobLike } = require_util2(); - var { webidl } = require_webidl(); - var { parseMIMEType, serializeAMimeType } = require_dataURL(); - var { kEnumerableProperty } = require_util(); - var encoder = new TextEncoder(); - var File = class _File extends Blob2 { - constructor(fileBits, fileName, options = {}) { - webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }); - fileBits = webidl.converters['sequence'](fileBits); - fileName = webidl.converters.USVString(fileName); - options = webidl.converters.FilePropertyBag(options); - const n = fileName; - let t = options.type; - let d; - substep: { - if (t) { - t = parseMIMEType(t); - if (t === 'failure') { - t = ''; - break substep; - } - t = serializeAMimeType(t).toLowerCase(); - } - d = options.lastModified; - } - super(processBlobParts(fileBits, options), { type: t }); - this[kState] = { - name: n, - lastModified: d, - type: t - }; - } - get name() { - webidl.brandCheck(this, _File); - return this[kState].name; - } - get lastModified() { - webidl.brandCheck(this, _File); - return this[kState].lastModified; - } - get type() { - webidl.brandCheck(this, _File); - return this[kState].type; - } + var { types, inspect } = require('node:util'); + var { markAsUncloneable } = require('node:worker_threads'); + var { toUSVString } = require_util(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`); }; - var FileLike = class _FileLike { - constructor(blobLike, fileName, options = {}) { - const n = fileName; - const t = options.type; - const d = options.lastModified ?? Date.now(); - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d - }; - } - stream(...args) { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.stream(...args); - } - arrayBuffer(...args) { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.arrayBuffer(...args); - } - slice(...args) { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.slice(...args); - } - text(...args) { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.text(...args); - } - get size() { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.size; - } - get type() { - webidl.brandCheck(this, _FileLike); - return this[kState].blobLike.type; - } - get name() { - webidl.brandCheck(this, _FileLike); - return this[kState].name; - } - get lastModified() { - webidl.brandCheck(this, _FileLike); - return this[kState].lastModified; - } - get [Symbol.toStringTag]() { - return 'File'; - } + webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of'; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(', ')}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); }; - Object.defineProperties(File.prototype, { - [Symbol.toStringTag]: { - value: 'File', - configurable: true - }, - name: kEnumerableProperty, - lastModified: kEnumerableProperty - }); - webidl.converters.Blob = webidl.interfaceConverter(Blob2); - webidl.converters.BlobPart = function (V, opts) { - if (webidl.util.Type(V) === 'Object') { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); + webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.brandCheck = function (V, I, opts) { + if (opts?.strict !== false) { + if (!(V instanceof I)) { + const err = new TypeError('Illegal invocation'); + err.code = 'ERR_INVALID_THIS'; + throw err; } - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V, opts); + } else { + if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) { + const err = new TypeError('Illegal invocation'); + err.code = 'ERR_INVALID_THIS'; + throw err; } } - return webidl.converters.USVString(V, opts); }; - webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.BlobPart); - webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ - { - key: 'lastModified', - converter: webidl.converters['long long'], - get defaultValue() { - return Date.now(); - } - }, - { - key: 'type', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'endings', - converter: value => { - value = webidl.converters.DOMString(value); - value = value.toLowerCase(); - if (value !== 'native') { - value = 'transparent'; - } - return value; - }, - defaultValue: 'transparent' + webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, but${length ? ' only' : ''} ${length} found.`, + header: ctx + }); } - ]); - function processBlobParts(parts, options) { - const bytes = []; - for (const element of parts) { - if (typeof element === 'string') { - let s = element; - if (options.endings === 'native') { - s = convertLineEndingsNative(s); - } - bytes.push(encoder.encode(s)); - } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { - if (!element.buffer) { - bytes.push(new Uint8Array(element)); - } else { - bytes.push(new Uint8Array(element.buffer, element.byteOffset, element.byteLength)); + }; + webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }); + }; + webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': + return 'Undefined'; + case 'boolean': + return 'Boolean'; + case 'string': + return 'String'; + case 'symbol': + return 'Symbol'; + case 'number': + return 'Number'; + case 'bigint': + return 'BigInt'; + case 'function': + case 'object': { + if (V === null) { + return 'Null'; } - } else if (isBlobLike(element)) { - bytes.push(element); - } - } - return bytes; - } - function convertLineEndingsNative(s) { - let nativeLineEnding = '\n'; - if (process.platform === 'win32') { - nativeLineEnding = '\r\n'; - } - return s.replace(/\r?\n/g, nativeLineEnding); - } - function isFileLike(object) { - return ( - (NativeFile && object instanceof NativeFile) || - object instanceof File || - (object && - (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && - object[Symbol.toStringTag] === 'File') - ); - } - module2.exports = { File, FileLike, isFileLike }; - } -}); - -// node_modules/undici/lib/fetch/formdata.js -var require_formdata = __commonJS({ - 'node_modules/undici/lib/fetch/formdata.js'(exports2, module2) { - 'use strict'; - var { isBlobLike, toUSVString, makeIterator } = require_util2(); - var { kState } = require_symbols2(); - var { File: UndiciFile, FileLike, isFileLike } = require_file(); - var { webidl } = require_webidl(); - var { Blob: Blob2, File: NativeFile } = require('buffer'); - var File = NativeFile ?? UndiciFile; - var FormData = class _FormData { - constructor(form) { - if (form !== void 0) { - throw webidl.errors.conversionFailed({ - prefix: 'FormData constructor', - argument: 'Argument 1', - types: ['undefined'] - }); + return 'Object'; } - this[kState] = []; } - append(name, value, filename = void 0) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }); - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); + }; + webidl.util.markAsUncloneable = markAsUncloneable || (() => {}); + webidl.util.ConvertToInt = function (V, bitLength, signedness, opts) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === 'unsigned') { + lowerBound = 0; + } else { + lowerBound = Math.pow(-2, 53) + 1; } - name = webidl.converters.USVString(name); - value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); - filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; - const entry = makeEntry(name, value, filename); - this[kState].push(entry); + } else if (signedness === 'unsigned') { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; } - delete(name) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }); - name = webidl.converters.USVString(name); - this[kState] = this[kState].filter(entry => entry.name !== name); + let x = Number(V); + if (x === 0) { + x = 0; } - get(name) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }); - name = webidl.converters.USVString(name); - const idx = this[kState].findIndex(entry => entry.name === name); - if (idx === -1) { - return null; + if (opts?.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${webidl.util.Stringify(V)} to an integer.` + }); } - return this[kState][idx].value; - } - getAll(name) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }); - name = webidl.converters.USVString(name); - return this[kState].filter(entry => entry.name === name).map(entry => entry.value); - } - has(name) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }); - name = webidl.converters.USVString(name); - return this[kState].findIndex(entry => entry.name === name) !== -1; - } - set(name, value, filename = void 0) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }); - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); } - name = webidl.converters.USVString(name); - value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); - filename = arguments.length === 3 ? toUSVString(filename) : void 0; - const entry = makeEntry(name, value, filename); - const idx = this[kState].findIndex(entry2 => entry2.name === name); - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter(entry2 => entry2.name !== name) - ]; + return x; + } + if (!Number.isNaN(x) && opts?.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); } else { - this[kState].push(entry); + x = Math.ceil(x); } + return x; } - entries() { - webidl.brandCheck(this, _FormData); - return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'key+value'); + if (Number.isNaN(x) || (x === 0 && Object.is(0, x)) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; } - keys() { - webidl.brandCheck(this, _FormData); - return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'key'); + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); } - values() { - webidl.brandCheck(this, _FormData); - return makeIterator(() => this[kState].map(pair => [pair.name, pair.value]), 'FormData', 'value'); + return x; + }; + webidl.util.IntegerPart = function (n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; } - /** - * @param {(value: string, key: string, self: FormData) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, _FormData); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }); - if (typeof callbackFn !== 'function') { - throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."); - } - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } + return r; + }; + webidl.util.Stringify = function (V) { + const type = webidl.util.Type(V); + switch (type) { + case 'Symbol': + return `Symbol(${V.description})`; + case 'Object': + return inspect(V); + case 'String': + return `"${V}"`; + default: + return `${V}`; } }; - FormData.prototype[Symbol.iterator] = FormData.prototype.entries; - Object.defineProperties(FormData.prototype, { - [Symbol.toStringTag]: { - value: 'FormData', - configurable: true - } - }); - function makeEntry(name, value, filename) { - name = Buffer.from(name).toString('utf8'); - if (typeof value === 'string') { - value = Buffer.from(value).toString('utf8'); - } else { - if (!isFileLike(value)) { - value = - value instanceof Blob2 - ? new File([value], 'blob', { type: value.type }) - : new FileLike(value, 'blob', { type: value.type }); + webidl.sequenceConverter = function (converter) { + return (V, prefix, argument, Iterable) => { + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.` + }); } - if (filename !== void 0) { - const options = { - type: value.type, - lastModified: value.lastModified - }; - value = - (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile - ? new File([value], filename, options) - : new FileLike(value, filename, options); + const method = typeof Iterable === 'function' ? Iterable() : V?.[Symbol.iterator]?.(); + const seq = []; + let index = 0; + if (method === void 0 || typeof method.next !== 'function') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is not iterable.` + }); } - } - return { name, value }; - } - module2.exports = { FormData }; - } -}); - -// node_modules/undici/lib/fetch/body.js -var require_body = __commonJS({ - 'node_modules/undici/lib/fetch/body.js'(exports2, module2) { - 'use strict'; - var Busboy = require_main(); - var util = require_util(); - var { ReadableStreamFrom, isBlobLike, isReadableStreamLike, readableStreamClose, createDeferredPromise, fullyReadBody } = - require_util2(); - var { FormData } = require_formdata(); - var { kState } = require_symbols2(); - var { webidl } = require_webidl(); - var { DOMException: DOMException2, structuredClone } = require_constants2(); - var { Blob: Blob2, File: NativeFile } = require('buffer'); - var { kBodyUsed } = require_symbols(); - var assert = require('assert'); - var { isErrored } = require_util(); - var { isUint8Array, isArrayBuffer } = require('util/types'); - var { File: UndiciFile } = require_file(); - var { parseMIMEType, serializeAMimeType } = require_dataURL(); - var random; - try { - const crypto4 = require('node:crypto'); - random = max => crypto4.randomInt(0, max); - } catch { - random = max => Math.floor(Math.random(max)); - } - var ReadableStream = globalThis.ReadableStream; - var File = NativeFile ?? UndiciFile; - var textEncoder = new TextEncoder(); - var textDecoder = new TextDecoder(); - function extractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = require('stream/web').ReadableStream; - } - let stream = null; - if (object instanceof ReadableStream) { - stream = object; - } else if (isBlobLike(object)) { - stream = object.stream(); - } else { - stream = new ReadableStream({ - async pull(controller) { - controller.enqueue(typeof source === 'string' ? textEncoder.encode(source) : source); - queueMicrotask(() => readableStreamClose(controller)); - }, - start() {}, - type: void 0 - }); - } - assert(isReadableStreamLike(stream)); - let action = null; - let source = null; - let length = null; - let type = null; - if (typeof object === 'string') { - source = object; - type = 'text/plain;charset=UTF-8'; - } else if (object instanceof URLSearchParams) { - source = object.toString(); - type = 'application/x-www-form-urlencoded;charset=UTF-8'; - } else if (isArrayBuffer(object)) { - source = new Uint8Array(object.slice()); - } else if (ArrayBuffer.isView(object)) { - source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); - } else if (util.isFormDataLike(object)) { - const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`; - const prefix = `--${boundary}\r -Content-Disposition: form-data`; - const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22'); - const normalizeLinefeeds = value => value.replace(/\r?\n|\r/g, '\r\n'); - const blobParts = []; - const rn = new Uint8Array([13, 10]); - length = 0; - let hasUnknownSizeValue = false; - for (const [name, value] of object) { - if (typeof value === 'string') { - const chunk2 = textEncoder.encode( - prefix + - `; name="${escape(normalizeLinefeeds(name))}"\r -\r -${normalizeLinefeeds(value)}\r -` - ); - blobParts.push(chunk2); - length += chunk2.byteLength; - } else { - const chunk2 = textEncoder.encode( - `${prefix}; name="${escape(normalizeLinefeeds(name))}"` + - (value.name ? `; filename="${escape(value.name)}"` : '') + - `\r -Content-Type: ${value.type || 'application/octet-stream'}\r -\r -` - ); - blobParts.push(chunk2, value, rn); - if (typeof value.size === 'number') { - length += chunk2.byteLength + value.size + rn.byteLength; - } else { - hasUnknownSizeValue = true; - } + while (true) { + const { done, value } = method.next(); + if (done) { + break; } + seq.push(converter(value, prefix, `${argument}[${index++}]`)); } - const chunk = textEncoder.encode(`--${boundary}--`); - blobParts.push(chunk); - length += chunk.byteLength; - if (hasUnknownSizeValue) { - length = null; + return seq; + }; + }; + webidl.recordConverter = function (keyConverter, valueConverter) { + return (O, prefix, argument) => { + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} ("${webidl.util.Type(O)}") is not an Object.` + }); } - source = object; - action = async function* () { - for (const part of blobParts) { - if (part.stream) { - yield* part.stream(); - } else { - yield part; - } + const result = {}; + if (!types.isProxy(O)) { + const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]; + for (const key of keys2) { + const typedKey = keyConverter(key, prefix, argument); + const typedValue = valueConverter(O[key], prefix, argument); + result[typedKey] = typedValue; } - }; - type = 'multipart/form-data; boundary=' + boundary; - } else if (isBlobLike(object)) { - source = object; - length = object.size; - if (object.type) { - type = object.type; + return result; } - } else if (typeof object[Symbol.asyncIterator] === 'function') { - if (keepalive) { - throw new TypeError('keepalive'); + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc?.enumerable) { + const typedKey = keyConverter(key, prefix, argument); + const typedValue = valueConverter(O[key], prefix, argument); + result[typedKey] = typedValue; + } } - if (util.isDisturbed(object) || object.locked) { - throw new TypeError('Response body object should not be disturbed or locked'); + return result; + }; + }; + webidl.interfaceConverter = function (i) { + return (V, prefix, argument, opts) => { + if (opts?.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.` + }); } - stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); - } - if (typeof source === 'string' || util.isBuffer(source)) { - length = Buffer.byteLength(source); - } - if (action != null) { - let iterator; - stream = new ReadableStream({ - async start() { - iterator = action(object)[Symbol.asyncIterator](); - }, - async pull(controller) { - const { value, done } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); + return V; + }; + }; + webidl.dictionaryConverter = function (converters) { + return (dictionary, prefix, argument) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === 'Null' || type === 'Undefined') { + return dict; + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); + } + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!Object.hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: prefix, + message: `Missing required key "${key}".` }); - } else { - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)); - } } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - }, - type: void 0 - }); - } - const body2 = { stream, source, length }; - return [body2, type]; - } - function safelyExtractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = require('stream/web').ReadableStream; - } - if (object instanceof ReadableStream) { - assert(!util.isDisturbed(object), 'The body has already been consumed.'); - assert(!object.locked, 'The stream is locked.'); - } - return extractBody(object, keepalive); - } - function cloneBody(body2) { - const [out1, out2] = body2.stream.tee(); - const out2Clone = structuredClone(out2, { transfer: [out2] }); - const [, finalClone] = out2Clone.tee(); - body2.stream = out1; - return { - stream: finalClone, - length: body2.length, - source: body2.source - }; - } - async function* consumeBody(body2) { - if (body2) { - if (isUint8Array(body2)) { - yield body2; - } else { - const stream = body2.stream; - if (util.isDisturbed(stream)) { - throw new TypeError('The body has already been consumed.'); } - if (stream.locked) { - throw new TypeError('The stream is locked.'); + let value = dictionary[key]; + const hasDefault = Object.hasOwn(options, 'defaultValue'); + if (hasDefault && value !== null) { + value ??= defaultValue(); + } + if (required || hasDefault || value !== void 0) { + value = converter(value, prefix, `${argument}.${key}`); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: prefix, + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }); + } + dict[key] = value; } - stream[kBodyUsed] = true; - yield* stream; } + return dict; + }; + }; + webidl.nullableConverter = function (converter) { + return (V, prefix, argument) => { + if (V === null) { + return V; + } + return converter(V, prefix, argument); + }; + }; + webidl.converters.DOMString = function (V, prefix, argument, opts) { + if (V === null && opts?.legacyNullToEmptyString) { + return ''; } - } - function throwIfAborted(state) { - if (state.aborted) { - throw new DOMException2('The operation was aborted.', 'AbortError'); + if (typeof V === 'symbol') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is a symbol, which cannot be converted to a DOMString.` + }); } - } - function bodyMixinMethods(instance) { - const methods = { - blob() { - return specConsumeBody( - this, - bytes => { - let mimeType = bodyMimeType(this); - if (mimeType === 'failure') { - mimeType = ''; - } else if (mimeType) { - mimeType = serializeAMimeType(mimeType); - } - return new Blob2([bytes], { type: mimeType }); - }, - instance - ); - }, - arrayBuffer() { - return specConsumeBody( - this, - bytes => { - return new Uint8Array(bytes).buffer; - }, - instance + return String(V); + }; + webidl.converters.ByteString = function (V, prefix, argument) { + const x = webidl.converters.DOMString(V, prefix, argument); + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt( + index + )} which is greater than 255.` ); - }, - text() { - return specConsumeBody(this, utf8DecodeBytes, instance); - }, - json() { - return specConsumeBody(this, parseJSONFromBytes, instance); - }, - async formData() { - webidl.brandCheck(this, instance); - throwIfAborted(this[kState]); - const contentType = this.headers.get('Content-Type'); - if (/multipart\/form-data/.test(contentType)) { - const headers = {}; - for (const [key, value] of this.headers) headers[key.toLowerCase()] = value; - const responseFormData = new FormData(); - let busboy; - try { - busboy = new Busboy({ - headers, - preservePath: true - }); - } catch (err) { - throw new DOMException2(`${err}`, 'AbortError'); - } - busboy.on('field', (name, value) => { - responseFormData.append(name, value); - }); - busboy.on('file', (name, value, filename, encoding, mimeType) => { - const chunks = []; - if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { - let base64chunk = ''; - value.on('data', chunk => { - base64chunk += chunk.toString().replace(/[\r\n]/gm, ''); - const end = base64chunk.length - (base64chunk.length % 4); - chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')); - base64chunk = base64chunk.slice(end); - }); - value.on('end', () => { - chunks.push(Buffer.from(base64chunk, 'base64')); - responseFormData.append(name, new File(chunks, filename, { type: mimeType })); - }); - } else { - value.on('data', chunk => { - chunks.push(chunk); - }); - value.on('end', () => { - responseFormData.append(name, new File(chunks, filename, { type: mimeType })); - }); - } - }); - const busboyResolve = new Promise((resolve, reject) => { - busboy.on('finish', resolve); - busboy.on('error', err => reject(new TypeError(err))); - }); - if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk); - busboy.end(); - await busboyResolve; - return responseFormData; - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - let entries; - try { - let text = ''; - const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }); - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk'); - } - text += streamingDecoder.decode(chunk, { stream: true }); - } - text += streamingDecoder.decode(); - entries = new URLSearchParams(text); - } catch (err) { - throw Object.assign(new TypeError(), { cause: err }); - } - const formData = new FormData(); - for (const [name, value] of entries) { - formData.append(name, value); - } - return formData; - } else { - await Promise.resolve(); - throwIfAborted(this[kState]); - throw webidl.errors.exception({ - header: `${instance.name}.formData`, - message: 'Could not parse content as FormData.' - }); - } } - }; - return methods; - } - function mixinBody(prototype) { - Object.assign(prototype.prototype, bodyMixinMethods(prototype)); - } - async function specConsumeBody(object, convertBytesToJSValue, instance) { - webidl.brandCheck(object, instance); - throwIfAborted(object[kState]); - if (bodyUnusable(object[kState].body)) { - throw new TypeError('Body is unusable'); } - const promise = createDeferredPromise(); - const errorSteps = error => promise.reject(error); - const successSteps = data => { - try { - promise.resolve(convertBytesToJSValue(data)); - } catch (e) { - errorSteps(e); - } - }; - if (object[kState].body == null) { - successSteps(new Uint8Array()); - return promise.promise; + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function (V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function (V) { + return V; + }; + webidl.converters['long long'] = function (V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 64, 'signed', void 0, prefix, argument); + return x; + }; + webidl.converters['unsigned long long'] = function (V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 64, 'unsigned', void 0, prefix, argument); + return x; + }; + webidl.converters['unsigned long'] = function (V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 32, 'unsigned', void 0, prefix, argument); + return x; + }; + webidl.converters['unsigned short'] = function (V, prefix, argument, opts) { + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts, prefix, argument); + return x; + }; + webidl.converters.ArrayBuffer = function (V, prefix, argument, opts) { + if (webidl.util.Type(V) !== 'Object' || !types.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBuffer'] + }); } - await fullyReadBody(object[kState].body, successSteps, errorSteps); - return promise.promise; - } - function bodyUnusable(body2) { - return body2 != null && (body2.stream.locked || util.isDisturbed(body2.stream)); - } - function utf8DecodeBytes(buffer) { - if (buffer.length === 0) { - return ''; + if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); } - if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { - buffer = buffer.subarray(3); + if (V.resizable || V.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }); } - const output = textDecoder.decode(buffer); - return output; - } - function parseJSONFromBytes(bytes) { - return JSON.parse(utf8DecodeBytes(bytes)); - } - function bodyMimeType(object) { - const { headersList } = object[kState]; - const contentType = headersList.get('content-type'); - if (contentType === null) { - return 'failure'; + return V; + }; + webidl.converters.TypedArray = function (V, T, prefix, name, opts) { + if (webidl.util.Type(V) !== 'Object' || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: [T.name] + }); } - return parseMIMEType(contentType); - } + if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }); + } + return V; + }; + webidl.converters.DataView = function (V, prefix, name, opts) { + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${name} is not a DataView.` + }); + } + if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }); + } + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'Received a resizable ArrayBuffer.' + }); + } + return V; + }; + webidl.converters.BufferSource = function (V, prefix, name, opts) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false }); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false }); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false }); + } + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: ['BufferSource'] + }); + }; + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.ByteString); + webidl.converters['sequence>'] = webidl.sequenceConverter(webidl.converters['sequence']); + webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); module2.exports = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody + webidl }; } }); -// node_modules/undici/lib/core/request.js -var require_request = __commonJS({ - 'node_modules/undici/lib/core/request.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/util.js +var require_util2 = __commonJS({ + 'node_modules/undici/lib/web/fetch/util.js'(exports2, module2) { 'use strict'; - var { InvalidArgumentError, NotSupportedError } = require_errors(); - var assert = require('assert'); - var { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require_symbols(); - var util = require_util(); - var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; - var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; - var invalidPathRegex = /[^\u0021-\u00ff]/; - var kHandler = Symbol('handler'); - var channels = {}; - var extractBody; + var { Transform } = require('node:stream'); + var zlib = require('node:zlib'); + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants3(); + var { getGlobalOrigin } = require_global(); + var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url(); + var { performance: performance2 } = require('node:perf_hooks'); + var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util(); + var assert = require('node:assert'); + var { isUint8Array } = require('node:util/types'); + var { webidl } = require_webidl(); + var supportedHashes = []; + var crypto; try { - const diagnosticsChannel = require('diagnostics_channel'); - channels.create = diagnosticsChannel.channel('undici:request:create'); - channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent'); - channels.headers = diagnosticsChannel.channel('undici:request:headers'); - channels.trailers = diagnosticsChannel.channel('undici:request:trailers'); - channels.error = diagnosticsChannel.channel('undici:request:error'); - } catch { - channels.create = { hasSubscribers: false }; - channels.bodySent = { hasSubscribers: false }; - channels.headers = { hasSubscribers: false }; - channels.trailers = { hasSubscribers: false }; - channels.error = { hasSubscribers: false }; + crypto = require('node:crypto'); + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']; + supportedHashes = crypto.getHashes().filter(hash => possibleRelevantHashes.includes(hash)); + } catch {} + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); } - var Request = class _Request { - constructor( - origin, - { - path, - method, - body: body2, - headers, - query, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout, - reset, - throwOnError, - expectContinue - }, - handler - ) { - if (typeof path !== 'string') { - throw new InvalidArgumentError('path must be a string'); - } else if (path[0] !== '/' && !(path.startsWith('http://') || path.startsWith('https://')) && method !== 'CONNECT') { - throw new InvalidArgumentError('path must be an absolute URL or start with a slash'); - } else if (invalidPathRegex.exec(path) !== null) { - throw new InvalidArgumentError('invalid request path'); - } - if (typeof method !== 'string') { - throw new InvalidArgumentError('method must be a string'); - } else if (tokenRegExp.exec(method) === null) { - throw new InvalidArgumentError('invalid request method'); - } - if (upgrade && typeof upgrade !== 'string') { - throw new InvalidArgumentError('upgrade must be a string'); - } - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('invalid headersTimeout'); - } - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('invalid bodyTimeout'); - } - if (reset != null && typeof reset !== 'boolean') { - throw new InvalidArgumentError('invalid reset'); + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; + } + let location = response.headersList.get('location', true); + if (location !== null && isValidHeaderValue(location)) { + if (!isValidEncodedURL(location)) { + location = normalizeBinaryStringToUtf8(location); } - if (expectContinue != null && typeof expectContinue !== 'boolean') { - throw new InvalidArgumentError('invalid expectContinue'); - } - this.headersTimeout = headersTimeout; - this.bodyTimeout = bodyTimeout; - this.throwOnError = throwOnError === true; - this.method = method; - this.abort = null; - if (body2 == null) { - this.body = null; - } else if (util.isStream(body2)) { - this.body = body2; - const rState = this.body._readableState; - if (!rState || !rState.autoDestroy) { - this.endHandler = function autoDestroy() { - util.destroy(this); - }; - this.body.on('end', this.endHandler); - } - this.errorHandler = err => { - if (this.abort) { - this.abort(err); - } else { - this.error = err; - } - }; - this.body.on('error', this.errorHandler); - } else if (util.isBuffer(body2)) { - this.body = body2.byteLength ? body2 : null; - } else if (ArrayBuffer.isView(body2)) { - this.body = body2.buffer.byteLength ? Buffer.from(body2.buffer, body2.byteOffset, body2.byteLength) : null; - } else if (body2 instanceof ArrayBuffer) { - this.body = body2.byteLength ? Buffer.from(body2) : null; - } else if (typeof body2 === 'string') { - this.body = body2.length ? Buffer.from(body2) : null; - } else if (util.isFormDataLike(body2) || util.isIterable(body2) || util.isBlobLike(body2)) { - this.body = body2; - } else { - throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable'); - } - this.completed = false; - this.aborted = false; - this.upgrade = upgrade || null; - this.path = query ? util.buildURL(path, query) : path; - this.origin = origin; - this.idempotent = idempotent == null ? method === 'HEAD' || method === 'GET' : idempotent; - this.blocking = blocking == null ? false : blocking; - this.reset = reset == null ? null : reset; - this.host = null; - this.contentLength = null; - this.contentType = null; - this.headers = ''; - this.expectContinue = expectContinue != null ? expectContinue : false; - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError('headers array must be even'); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); - } - } else if (headers && typeof headers === 'object') { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(this, key, headers[key]); - } - } else if (headers != null) { - throw new InvalidArgumentError('headers must be an object or an array'); - } - if (util.isFormDataLike(this.body)) { - if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { - throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.'); - } - if (!extractBody) { - extractBody = require_body().extractBody; - } - const [bodyStream, contentType] = extractBody(body2); - if (this.contentType == null) { - this.contentType = contentType; - this.headers += `content-type: ${contentType}\r -`; - } - this.body = bodyStream.stream; - this.contentLength = bodyStream.length; - } else if (util.isBlobLike(body2) && this.contentType == null && body2.type) { - this.contentType = body2.type; - this.headers += `content-type: ${body2.type}\r -`; - } - util.validateHandler(handler, method, upgrade); - this.servername = util.getServerName(this.host); - this[kHandler] = handler; - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }); - } - } - onBodySent(chunk) { - if (this[kHandler].onBodySent) { - try { - return this[kHandler].onBodySent(chunk); - } catch (err) { - this.abort(err); - } - } - } - onRequestSent() { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }); - } - if (this[kHandler].onRequestSent) { - try { - return this[kHandler].onRequestSent(); - } catch (err) { - this.abort(err); - } - } - } - onConnect(abort) { - assert(!this.aborted); - assert(!this.completed); - if (this.error) { - abort(this.error); - } else { - this.abort = abort; - return this[kHandler].onConnect(abort); + location = new URL(location, responseURL(response)); + } + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; + } + function isValidEncodedURL(url) { + for (let i = 0; i < url.length; ++i) { + const code = url.charCodeAt(i); + if ( + code > 126 || // Non-US-ASCII + DEL + code < 32 + ) { + return false; } } - onHeaders(statusCode, headers, resume, statusText) { - assert(!this.aborted); - assert(!this.completed); - if (channels.headers.hasSubscribers) { - channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); - } - try { - return this[kHandler].onHeaders(statusCode, headers, resume, statusText); - } catch (err) { - this.abort(err); - } + return true; + } + function normalizeBinaryStringToUtf8(value) { + return Buffer.from(value, 'binary').toString('utf8'); + } + function requestCurrentURL(request2) { + return request2.urlList[request2.urlList.length - 1]; + } + function requestBadPort(request2) { + const url = requestCurrentURL(request2); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked'; } - onData(chunk) { - assert(!this.aborted); - assert(!this.completed); - try { - return this[kHandler].onData(chunk); - } catch (err) { - this.abort(err); + return 'allowed'; + } + function isErrorLike(object) { + return object instanceof Error || object?.constructor?.name === 'Error' || object?.constructor?.name === 'DOMException'; + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if ( + !( + c === 9 || // HTAB + (c >= 32 && c <= 126) || // SP / VCHAR + (c >= 128 && c <= 255) + ) + ) { return false; } } - onUpgrade(statusCode, headers, socket) { - assert(!this.aborted); - assert(!this.completed); - return this[kHandler].onUpgrade(statusCode, headers, socket); - } - onComplete(trailers) { - this.onFinally(); - assert(!this.aborted); - this.completed = true; - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }); - } - try { - return this[kHandler].onComplete(trailers); - } catch (err) { - this.onError(err); - } - } - onError(error) { - this.onFinally(); - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }); - } - if (this.aborted) { - return; - } - this.aborted = true; - return this[kHandler].onError(error); - } - onFinally() { - if (this.errorHandler) { - this.body.off('error', this.errorHandler); - this.errorHandler = null; - } - if (this.endHandler) { - this.body.off('end', this.endHandler); - this.endHandler = null; - } - } - // TODO: adjust to support H2 - addHeader(key, value) { - processHeader(this, key, value); - return this; - } - static [kHTTP1BuildRequest](origin, opts, handler) { - return new _Request(origin, opts, handler); - } - static [kHTTP2BuildRequest](origin, opts, handler) { - const headers = opts.headers; - opts = { ...opts, headers: null }; - const request = new _Request(origin, opts, handler); - request.headers = {}; - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError('headers array must be even'); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(request, headers[i], headers[i + 1], true); - } - } else if (headers && typeof headers === 'object') { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(request, key, headers[key], true); + return true; + } + var isValidHeaderName = isValidHTTPToken; + function isValidHeaderValue(potentialValue) { + return ( + (potentialValue[0] === ' ' || + potentialValue[0] === ' ' || + potentialValue[potentialValue.length - 1] === ' ' || + potentialValue[potentialValue.length - 1] === ' ' || + potentialValue.includes('\n') || + potentialValue.includes('\r') || + potentialValue.includes('\0')) === false + ); + } + function setRequestReferrerPolicyOnRedirect(request2, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get('referrer-policy', true) ?? '').split(','); + let policy = ''; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token2 = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token2)) { + policy = token2; + break; } - } else if (headers != null) { - throw new InvalidArgumentError('headers must be an object or an array'); - } - return request; - } - static [kHTTP2CopyHeaders](raw) { - const rawHeaders = raw.split('\r\n'); - const headers = {}; - for (const header of rawHeaders) { - const [key, value] = header.split(': '); - if (value == null || value.length === 0) continue; - if (headers[key]) headers[key] += `,${value}`; - else headers[key] = value; } - return headers; - } - }; - function processHeaderValue(key, val, skipAppend) { - if (val && typeof val === 'object') { - throw new InvalidArgumentError(`invalid ${key} header`); } - val = val != null ? `${val}` : ''; - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); + if (policy !== '') { + request2.referrerPolicy = policy; } - return skipAppend - ? val - : `${key}: ${val}\r -`; } - function processHeader(request, key, val, skipAppend = false) { - if (val && typeof val === 'object' && !Array.isArray(val)) { - throw new InvalidArgumentError(`invalid ${key} header`); - } else if (val === void 0) { + function crossOriginResourcePolicyCheck() { + return 'allowed'; + } + function corsCheck() { + return 'success'; + } + function TAOCheck() { + return 'success'; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set('sec-fetch-mode', header, true); + } + function appendRequestOriginHeader(request2) { + let serializedOrigin = request2.origin; + if (serializedOrigin === 'client' || serializedOrigin === void 0) { return; } - if (request.host === null && key.length === 4 && key.toLowerCase() === 'host') { - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); - } - request.host = val; - } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === 'content-length') { - request.contentLength = parseInt(val, 10); - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError('invalid content-length header'); - } - } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === 'content-type') { - request.contentType = val; - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); - } else if (key.length === 17 && key.toLowerCase() === 'transfer-encoding') { - throw new InvalidArgumentError('invalid transfer-encoding header'); - } else if (key.length === 10 && key.toLowerCase() === 'connection') { - const value = typeof val === 'string' ? val.toLowerCase() : null; - if (value !== 'close' && value !== 'keep-alive') { - throw new InvalidArgumentError('invalid connection header'); - } else if (value === 'close') { - request.reset = true; - } - } else if (key.length === 10 && key.toLowerCase() === 'keep-alive') { - throw new InvalidArgumentError('invalid keep-alive header'); - } else if (key.length === 7 && key.toLowerCase() === 'upgrade') { - throw new InvalidArgumentError('invalid upgrade header'); - } else if (key.length === 6 && key.toLowerCase() === 'expect') { - throw new NotSupportedError('expect header not supported'); - } else if (tokenRegExp.exec(key) === null) { - throw new InvalidArgumentError('invalid header key'); - } else { - if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { - if (skipAppend) { - if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; - else request.headers[key] = processHeaderValue(key, val[i], skipAppend); - } else { - request.headers += processHeaderValue(key, val[i]); + if (request2.responseTainting === 'cors' || request2.mode === 'websocket') { + request2.headersList.append('origin', serializedOrigin, true); + } else if (request2.method !== 'GET' && request2.method !== 'HEAD') { + switch (request2.referrerPolicy) { + case 'no-referrer': + serializedOrigin = null; + break; + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + if (request2.origin && urlHasHttpsScheme(request2.origin) && !urlHasHttpsScheme(requestCurrentURL(request2))) { + serializedOrigin = null; } - } - } else { - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); + break; + case 'same-origin': + if (!sameOrigin(request2, requestCurrentURL(request2))) { + serializedOrigin = null; + } + break; + default: } + request2.headersList.append('origin', serializedOrigin, true); } } - module2.exports = Request; - } -}); - -// node_modules/undici/lib/dispatcher.js -var require_dispatcher = __commonJS({ - 'node_modules/undici/lib/dispatcher.js'(exports2, module2) { - 'use strict'; - var EventEmitter = require('events'); - var Dispatcher = class extends EventEmitter { - dispatch() { - throw new Error('not implemented'); + function coarsenTime(timestamp, crossOriginIsolatedCapability) { + return timestamp; + } + function clampAndCoarsenConnectionTimingInfo(connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) { + if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) { + return { + domainLookupStartTime: defaultStartTime, + domainLookupEndTime: defaultStartTime, + connectionStartTime: defaultStartTime, + connectionEndTime: defaultStartTime, + secureConnectionStartTime: defaultStartTime, + ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol + }; } - close() { - throw new Error('not implemented'); + return { + domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability), + domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability), + connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability), + connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability), + secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability), + ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol + }; + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return coarsenTime(performance2.now(), crossOriginIsolatedCapability); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return { + referrerPolicy: 'strict-origin-when-cross-origin' + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request2) { + const policy = request2.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request2.referrer === 'client') { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer'; + } + referrerSource = new URL(globalOrigin); + } else if (request2.referrer instanceof URL) { + referrerSource = request2.referrer; } - destroy() { - throw new Error('not implemented'); + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; } - }; - module2.exports = Dispatcher; - } -}); - -// node_modules/undici/lib/dispatcher-base.js -var require_dispatcher_base = __commonJS({ - 'node_modules/undici/lib/dispatcher-base.js'(exports2, module2) { - 'use strict'; - var Dispatcher = require_dispatcher(); - var { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = require_errors(); - var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); - var kDestroyed = Symbol('destroyed'); - var kClosed = Symbol('closed'); - var kOnDestroyed = Symbol('onDestroyed'); - var kOnClosed = Symbol('onClosed'); - var kInterceptedDispatch = Symbol('Intercepted Dispatch'); - var DispatcherBase = class extends Dispatcher { - constructor() { - super(); - this[kDestroyed] = false; - this[kOnDestroyed] = null; - this[kClosed] = false; - this[kOnClosed] = []; + const areSameOrigin = sameOrigin(request2, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request2.url); + switch (policy) { + case 'origin': + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case 'unsafe-url': + return referrerURL; + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer'; + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin; + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request2); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer'; + } + return referrerOrigin; + } + case 'strict-origin': + case 'no-referrer-when-downgrade': + default: + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin; } - get destroyed() { - return this[kDestroyed]; + } + function stripURLForReferrer(url, originOnly) { + assert(url instanceof URL); + url = new URL(url); + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer'; } - get closed() { - return this[kClosed]; + url.username = ''; + url.password = ''; + url.hash = ''; + if (originOnly) { + url.pathname = ''; + url.search = ''; } - get interceptors() { - return this[kInterceptors]; + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; } - set interceptors(newInterceptors) { - if (newInterceptors) { - for (let i = newInterceptors.length - 1; i >= 0; i--) { - const interceptor = this[kInterceptors][i]; - if (typeof interceptor !== 'function') { - throw new InvalidArgumentError('interceptor must be an function'); - } - } - } - this[kInterceptors] = newInterceptors; + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true; } - close(callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); - } - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)); - return; + if (url.protocol === 'data:') return true; + if (url.protocol === 'file:') return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === 'null') return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true; } - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; + if ( + /^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + originAsURL.hostname === 'localhost' || + originAsURL.hostname.includes('localhost.') || + originAsURL.hostname.endsWith('.localhost') + ) { + return true; } - this[kClosed] = true; - this[kOnClosed].push(callback); - const onClosed = () => { - const callbacks = this[kOnClosed]; - this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - this[kClose]() - .then(() => this.destroy()) - .then(() => { - queueMicrotask(onClosed); - }); + return false; } - destroy(err, callback) { - if (typeof err === 'function') { - callback = err; - err = null; - } - if (callback === void 0) { - return new Promise((resolve, reject) => { - this.destroy(err, (err2, data) => { - return err2 - ? /* istanbul ignore next: should never error */ - reject(err2) - : resolve(data); - }); - }); - } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); - } - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback); + } + function bytesMatch(bytes, metadataList) { + if (crypto === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === 'no metadata') { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const strongest = getStrongestMetadata(parsedMetadata); + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest); + for (const item of metadata) { + const algorithm = item.algo; + const expectedValue = item.hash; + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64'); + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2); } else { - queueMicrotask(() => callback(null, null)); + actualValue = actualValue.slice(0, -1); } - return; } - if (!err) { - err = new ClientDestroyedError(); + if (compareBase64Mixed(actualValue, expectedValue)) { + return true; } - this[kDestroyed] = true; - this[kOnDestroyed] = this[kOnDestroyed] || []; - this[kOnDestroyed].push(callback); - const onDestroyed = () => { - const callbacks = this[kOnDestroyed]; - this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed); - }); } - [kInterceptedDispatch](opts, handler) { - if (!this[kInterceptors] || this[kInterceptors].length === 0) { - this[kInterceptedDispatch] = this[kDispatch]; - return this[kDispatch](opts, handler); - } - let dispatch = this[kDispatch].bind(this); - for (let i = this[kInterceptors].length - 1; i >= 0; i--) { - dispatch = this[kInterceptors][i](dispatch); + return false; + } + var parseHashWithOptions = + /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + for (const token2 of metadata.split(' ')) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token2); + if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) { + continue; + } + const algorithm = parsedToken.groups.algo.toLowerCase(); + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups); } - this[kInterceptedDispatch] = dispatch; - return dispatch(opts, handler); } - dispatch(opts, handler) { - if (!handler || typeof handler !== 'object') { - throw new InvalidArgumentError('handler must be an object'); + if (empty === true) { + return 'no metadata'; + } + return result; + } + function getStrongestMetadata(metadataList) { + let algorithm = metadataList[0].algo; + if (algorithm[3] === '5') { + return algorithm; + } + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i]; + if (metadata.algo[3] === '5') { + algorithm = 'sha512'; + break; + } else if (algorithm[3] === '3') { + continue; + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384'; } - try { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object.'); - } - if (this[kDestroyed] || this[kOnDestroyed]) { - throw new ClientDestroyedError(); - } - if (this[kClosed]) { - throw new ClientClosedError(); - } - return this[kInterceptedDispatch](opts, handler); - } catch (err) { - if (typeof handler.onError !== 'function') { - throw new InvalidArgumentError('invalid onError method'); + } + return algorithm; + } + function filterMetadataListByAlgorithm(metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList; + } + let pos = 0; + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i]; + } + } + metadataList.length = pos; + return metadataList; + } + function compareBase64Mixed(actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false; + } + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ((actualValue[i] === '+' && expectedValue[i] === '-') || (actualValue[i] === '/' && expectedValue[i] === '_')) { + continue; } - handler.onError(err); return false; } } - }; - module2.exports = DispatcherBase; - } -}); - -// node_modules/undici/lib/core/connect.js -var require_connect = __commonJS({ - 'node_modules/undici/lib/core/connect.js'(exports2, module2) { - 'use strict'; - var net = require('net'); - var assert = require('assert'); - var util = require_util(); - var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); - var tls; - var SessionCache; - if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { - SessionCache = class WeakSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = /* @__PURE__ */ new Map(); - this._sessionRegistry = new global.FinalizationRegistry(key => { - if (this._sessionCache.size < this._maxCachedSessions) { - return; - } - const ref = this._sessionCache.get(key); - if (ref !== void 0 && ref.deref() === void 0) { - this._sessionCache.delete(key); - } - }); - } - get(sessionKey) { - const ref = this._sessionCache.get(sessionKey); - return ref ? ref.deref() : null; + return true; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {} + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === 'null') { + return true; + } + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === 'aborted'; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === 'aborted' || fetchParams.controller.state === 'terminated'; + } + function normalizeMethod(method) { + return normalizedMethodRecordsBase[method.toLowerCase()] ?? method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError('Value is not JSON serializable'); + } + assert(typeof result === 'string'); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function createIterator(name, kInternalIterator, keyIndex = 0, valueIndex = 1) { + class FastIterableIterator { + /** @type {any} */ + #target; + /** @type {'key' | 'value' | 'key+value'} */ + #kind; + /** @type {number} */ + #index; + /** + * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object + * @param {unknown} target + * @param {'key' | 'value' | 'key+value'} kind + */ + constructor(target, kind) { + this.#target = target; + this.#kind = kind; + this.#index = 0; } - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; + next() { + if (typeof this !== 'object' || this === null || !(#target in this)) { + throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`); } - this._sessionCache.set(sessionKey, new WeakRef(session)); - this._sessionRegistry.register(session, sessionKey); - } - }; - } else { - SessionCache = class SimpleSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = /* @__PURE__ */ new Map(); - } - get(sessionKey) { - return this._sessionCache.get(sessionKey); - } - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; + const index = this.#index; + const values = this.#target[kInternalIterator]; + const len = values.length; + if (index >= len) { + return { + value: void 0, + done: true + }; } - if (this._sessionCache.size >= this._maxCachedSessions) { - const { value: oldestKey } = this._sessionCache.keys().next(); - this._sessionCache.delete(oldestKey); + const { [keyIndex]: key, [valueIndex]: value } = values[index]; + this.#index = index + 1; + let result; + switch (this.#kind) { + case 'key': + result = key; + break; + case 'value': + result = value; + break; + case 'key+value': + result = [key, value]; + break; } - this._sessionCache.set(sessionKey, session); + return { + value: result, + done: false + }; } + } + delete FastIterableIterator.prototype.constructor; + Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype); + Object.defineProperties(FastIterableIterator.prototype, { + [Symbol.toStringTag]: { + writable: false, + enumerable: false, + configurable: true, + value: `${name} Iterator` + }, + next: { writable: true, enumerable: true, configurable: true } + }); + return function (target, kind) { + return new FastIterableIterator(target, kind); }; } - function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { - if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { - throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero'); - } - const options = { path: socketPath, ...opts }; - const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); - timeout = timeout == null ? 1e4 : timeout; - allowH2 = allowH2 != null ? allowH2 : false; - return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { - let socket; - if (protocol === 'https:') { - if (!tls) { - tls = require('tls'); + function iteratorMixin(name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) { + const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex); + const properties = { + keys: { + writable: true, + enumerable: true, + configurable: true, + value: function keys() { + webidl.brandCheck(this, object); + return makeIterator(this, 'key'); } - servername = servername || options.servername || util.getServerName(host) || null; - const sessionKey = servername || hostname; - const session = sessionCache.get(sessionKey) || null; - assert(sessionKey); - socket = tls.connect({ - highWaterMark: 16384, - // TLS in node can't have bigger HWM anyway... - ...options, - servername, - session, - localAddress, - // TODO(HTTP/2): Add support for h2c - ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], - socket: httpSocket, - // upgrade socket connection - port: port || 443, - host: hostname - }); - socket.on('session', function (session2) { - sessionCache.set(sessionKey, session2); - }); - } else { - assert(!httpSocket, 'httpSocket can only be sent on TLS update'); - socket = net.connect({ - highWaterMark: 64 * 1024, - // Same as nodejs fs streams. - ...options, - localAddress, - port: port || 80, - host: hostname - }); - } - if (options.keepAlive == null || options.keepAlive) { - const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; - socket.setKeepAlive(true, keepAliveInitialDelay); - } - const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); - socket - .setNoDelay(true) - .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { - cancelTimeout(); - if (callback) { - const cb = callback; - callback = null; - cb(null, this); + }, + values: { + writable: true, + enumerable: true, + configurable: true, + value: function values() { + webidl.brandCheck(this, object); + return makeIterator(this, 'value'); + } + }, + entries: { + writable: true, + enumerable: true, + configurable: true, + value: function entries() { + webidl.brandCheck(this, object); + return makeIterator(this, 'key+value'); + } + }, + forEach: { + writable: true, + enumerable: true, + configurable: true, + value: function forEach(callbackfn, thisArg = globalThis) { + webidl.brandCheck(this, object); + webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`); + if (typeof callbackfn !== 'function') { + throw new TypeError(`Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`); } - }) - .on('error', function (err) { - cancelTimeout(); - if (callback) { - const cb = callback; - callback = null; - cb(err); + for (const { 0: key, 1: value } of makeIterator(this, 'key+value')) { + callbackfn.call(thisArg, value, key, this); } - }); - return socket; - }; - } - function setupTimeout(onConnectTimeout2, timeout) { - if (!timeout) { - return () => {}; - } - let s1 = null; - let s2 = null; - const timeoutId = setTimeout(() => { - s1 = setImmediate(() => { - if (process.platform === 'win32') { - s2 = setImmediate(() => onConnectTimeout2()); - } else { - onConnectTimeout2(); } - }); - }, timeout); - return () => { - clearTimeout(timeoutId); - clearImmediate(s1); - clearImmediate(s2); + } }; + return Object.defineProperties(object.prototype, { + ...properties, + [Symbol.iterator]: { + writable: true, + enumerable: false, + configurable: true, + value: properties.entries.value + } + }); } - function onConnectTimeout(socket) { - util.destroy(socket, new ConnectTimeoutError()); - } - module2.exports = buildConnector; - } -}); - -// node_modules/undici/lib/llhttp/utils.js -var require_utils2 = __commonJS({ - 'node_modules/undici/lib/llhttp/utils.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.enumToMap = void 0; - function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach(key => { - const value = obj[key]; - if (typeof value === 'number') { - res[key] = value; + async function fullyReadBody(body2, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body2.stream.getReader(); + } catch (e) { + errorSteps(e); + return; + } + try { + successSteps(await readAllBytes(reader)); + } catch (e) { + errorSteps(e); + } + } + function isReadableStreamLike(stream) { + return ( + stream instanceof ReadableStream || (stream[Symbol.toStringTag] === 'ReadableStream' && typeof stream.tee === 'function') + ); + } + function readableStreamClose(controller) { + try { + controller.close(); + controller.byobRequest?.respond(0); + } catch (err) { + if (!err.message.includes('Controller is already closed') && !err.message.includes('ReadableStream is already closed')) { + throw err; } - }); - return res; + } } - exports2.enumToMap = enumToMap; + var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/; + function isomorphicEncode(input) { + assert(!invalidIsomorphicEncodeValueRegex.test(input)); + return input; + } + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk'); + } + bytes.push(chunk); + byteLength += chunk.length; + } + } + function urlIsLocal(url) { + assert('protocol' in url); + const protocol = url.protocol; + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'; + } + function urlHasHttpsScheme(url) { + return ( + (typeof url === 'string' && + url[5] === ':' && + url[0] === 'h' && + url[1] === 't' && + url[2] === 't' && + url[3] === 'p' && + url[4] === 's') || + url.protocol === 'https:' + ); + } + function urlIsHttpHttpsScheme(url) { + assert('protocol' in url); + const protocol = url.protocol; + return protocol === 'http:' || protocol === 'https:'; + } + function simpleRangeHeaderValue(value, allowWhitespace) { + const data = value; + if (!data.startsWith('bytes')) { + return 'failure'; + } + const position = { position: 5 }; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); + } + if (data.charCodeAt(position.position) !== 61) { + return 'failure'; + } + position.position++; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); + } + const rangeStart = collectASequenceOfCodePoints( + char => { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57; + }, + data, + position + ); + const rangeStartValue = rangeStart.length ? Number(rangeStart) : null; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); + } + if (data.charCodeAt(position.position) !== 45) { + return 'failure'; + } + position.position++; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); + } + const rangeEnd = collectASequenceOfCodePoints( + char => { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57; + }, + data, + position + ); + const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null; + if (position.position < data.length) { + return 'failure'; + } + if (rangeEndValue === null && rangeStartValue === null) { + return 'failure'; + } + if (rangeStartValue > rangeEndValue) { + return 'failure'; + } + return { rangeStartValue, rangeEndValue }; + } + function buildContentRange(rangeStart, rangeEnd, fullLength) { + let contentRange = 'bytes '; + contentRange += isomorphicEncode(`${rangeStart}`); + contentRange += '-'; + contentRange += isomorphicEncode(`${rangeEnd}`); + contentRange += '/'; + contentRange += isomorphicEncode(`${fullLength}`); + return contentRange; + } + var InflateStream = class extends Transform { + #zlibOptions; + /** @param {zlib.ZlibOptions} [zlibOptions] */ + constructor(zlibOptions) { + super(); + this.#zlibOptions = zlibOptions; + } + _transform(chunk, encoding, callback) { + if (!this._inflateStream) { + if (chunk.length === 0) { + callback(); + return; + } + this._inflateStream = + (chunk[0] & 15) === 8 ? zlib.createInflate(this.#zlibOptions) : zlib.createInflateRaw(this.#zlibOptions); + this._inflateStream.on('data', this.push.bind(this)); + this._inflateStream.on('end', () => this.push(null)); + this._inflateStream.on('error', err => this.destroy(err)); + } + this._inflateStream.write(chunk, encoding, callback); + } + _final(callback) { + if (this._inflateStream) { + this._inflateStream.end(); + this._inflateStream = null; + } + callback(); + } + }; + function createInflate(zlibOptions) { + return new InflateStream(zlibOptions); + } + function extractMimeType(headers) { + let charset = null; + let essence = null; + let mimeType = null; + const values = getDecodeSplit('content-type', headers); + if (values === null) { + return 'failure'; + } + for (const value of values) { + const temporaryMimeType = parseMIMEType(value); + if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') { + continue; + } + mimeType = temporaryMimeType; + if (mimeType.essence !== essence) { + charset = null; + if (mimeType.parameters.has('charset')) { + charset = mimeType.parameters.get('charset'); + } + essence = mimeType.essence; + } else if (!mimeType.parameters.has('charset') && charset !== null) { + mimeType.parameters.set('charset', charset); + } + } + if (mimeType == null) { + return 'failure'; + } + return mimeType; + } + function gettingDecodingSplitting(value) { + const input = value; + const position = { position: 0 }; + const values = []; + let temporaryValue = ''; + while (position.position < input.length) { + temporaryValue += collectASequenceOfCodePoints(char => char !== '"' && char !== ',', input, position); + if (position.position < input.length) { + if (input.charCodeAt(position.position) === 34) { + temporaryValue += collectAnHTTPQuotedString(input, position); + if (position.position < input.length) { + continue; + } + } else { + assert(input.charCodeAt(position.position) === 44); + position.position++; + } + } + temporaryValue = removeChars(temporaryValue, true, true, char => char === 9 || char === 32); + values.push(temporaryValue); + temporaryValue = ''; + } + return values; + } + function getDecodeSplit(name, list) { + const value = list.get(name, true); + if (value === null) { + return null; + } + return gettingDecodingSplitting(value); + } + var textDecoder = new TextDecoder(); + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ''; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + var EnvironmentSettingsObjectBase = class { + get baseUrl() { + return getGlobalOrigin(); + } + get origin() { + return this.baseUrl?.origin; + } + policyContainer = makePolicyContainer(); + }; + var EnvironmentSettingsObject = class { + settingsObject = new EnvironmentSettingsObjectBase(); + }; + var environmentSettingsObject = new EnvironmentSettingsObject(); + module2.exports = { + isAborted, + isCancelled, + isValidEncodedURL, + createDeferredPromise, + ReadableStreamFrom, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + clampAndCoarsenConnectionTimingInfo, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + iteratorMixin, + createIterator, + isValidHeaderName, + isValidHeaderValue, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + simpleRangeHeaderValue, + buildContentRange, + parseMetadata, + createInflate, + extractMimeType, + getDecodeSplit, + utf8DecodeBytes, + environmentSettingsObject + }; } }); -// node_modules/undici/lib/llhttp/constants.js -var require_constants3 = __commonJS({ - 'node_modules/undici/lib/llhttp/constants.js'(exports2) { +// node_modules/undici/lib/web/fetch/symbols.js +var require_symbols2 = __commonJS({ + 'node_modules/undici/lib/web/fetch/symbols.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.SPECIAL_HEADERS = - exports2.HEADER_STATE = - exports2.MINOR = - exports2.MAJOR = - exports2.CONNECTION_TOKEN_CHARS = - exports2.HEADER_CHARS = - exports2.TOKEN = - exports2.STRICT_TOKEN = - exports2.HEX = - exports2.URL_CHAR = - exports2.STRICT_URL_CHAR = - exports2.USERINFO_CHARS = - exports2.MARK = - exports2.ALPHANUM = - exports2.NUM = - exports2.HEX_MAP = - exports2.NUM_MAP = - exports2.ALPHA = - exports2.FINISH = - exports2.H_METHOD_MAP = - exports2.METHOD_MAP = - exports2.METHODS_RTSP = - exports2.METHODS_ICE = - exports2.METHODS_HTTP = - exports2.METHODS = - exports2.LENIENT_FLAGS = - exports2.FLAGS = - exports2.TYPE = - exports2.ERROR = - void 0; - var utils_1 = require_utils2(); - var ERROR; - (function (ERROR2) { - ERROR2[(ERROR2['OK'] = 0)] = 'OK'; - ERROR2[(ERROR2['INTERNAL'] = 1)] = 'INTERNAL'; - ERROR2[(ERROR2['STRICT'] = 2)] = 'STRICT'; - ERROR2[(ERROR2['LF_EXPECTED'] = 3)] = 'LF_EXPECTED'; - ERROR2[(ERROR2['UNEXPECTED_CONTENT_LENGTH'] = 4)] = 'UNEXPECTED_CONTENT_LENGTH'; - ERROR2[(ERROR2['CLOSED_CONNECTION'] = 5)] = 'CLOSED_CONNECTION'; - ERROR2[(ERROR2['INVALID_METHOD'] = 6)] = 'INVALID_METHOD'; - ERROR2[(ERROR2['INVALID_URL'] = 7)] = 'INVALID_URL'; - ERROR2[(ERROR2['INVALID_CONSTANT'] = 8)] = 'INVALID_CONSTANT'; - ERROR2[(ERROR2['INVALID_VERSION'] = 9)] = 'INVALID_VERSION'; - ERROR2[(ERROR2['INVALID_HEADER_TOKEN'] = 10)] = 'INVALID_HEADER_TOKEN'; - ERROR2[(ERROR2['INVALID_CONTENT_LENGTH'] = 11)] = 'INVALID_CONTENT_LENGTH'; - ERROR2[(ERROR2['INVALID_CHUNK_SIZE'] = 12)] = 'INVALID_CHUNK_SIZE'; - ERROR2[(ERROR2['INVALID_STATUS'] = 13)] = 'INVALID_STATUS'; - ERROR2[(ERROR2['INVALID_EOF_STATE'] = 14)] = 'INVALID_EOF_STATE'; - ERROR2[(ERROR2['INVALID_TRANSFER_ENCODING'] = 15)] = 'INVALID_TRANSFER_ENCODING'; - ERROR2[(ERROR2['CB_MESSAGE_BEGIN'] = 16)] = 'CB_MESSAGE_BEGIN'; - ERROR2[(ERROR2['CB_HEADERS_COMPLETE'] = 17)] = 'CB_HEADERS_COMPLETE'; - ERROR2[(ERROR2['CB_MESSAGE_COMPLETE'] = 18)] = 'CB_MESSAGE_COMPLETE'; - ERROR2[(ERROR2['CB_CHUNK_HEADER'] = 19)] = 'CB_CHUNK_HEADER'; - ERROR2[(ERROR2['CB_CHUNK_COMPLETE'] = 20)] = 'CB_CHUNK_COMPLETE'; - ERROR2[(ERROR2['PAUSED'] = 21)] = 'PAUSED'; - ERROR2[(ERROR2['PAUSED_UPGRADE'] = 22)] = 'PAUSED_UPGRADE'; - ERROR2[(ERROR2['PAUSED_H2_UPGRADE'] = 23)] = 'PAUSED_H2_UPGRADE'; - ERROR2[(ERROR2['USER'] = 24)] = 'USER'; - })((ERROR = exports2.ERROR || (exports2.ERROR = {}))); - var TYPE; - (function (TYPE2) { - TYPE2[(TYPE2['BOTH'] = 0)] = 'BOTH'; - TYPE2[(TYPE2['REQUEST'] = 1)] = 'REQUEST'; - TYPE2[(TYPE2['RESPONSE'] = 2)] = 'RESPONSE'; - })((TYPE = exports2.TYPE || (exports2.TYPE = {}))); - var FLAGS; - (function (FLAGS2) { - FLAGS2[(FLAGS2['CONNECTION_KEEP_ALIVE'] = 1)] = 'CONNECTION_KEEP_ALIVE'; - FLAGS2[(FLAGS2['CONNECTION_CLOSE'] = 2)] = 'CONNECTION_CLOSE'; - FLAGS2[(FLAGS2['CONNECTION_UPGRADE'] = 4)] = 'CONNECTION_UPGRADE'; - FLAGS2[(FLAGS2['CHUNKED'] = 8)] = 'CHUNKED'; - FLAGS2[(FLAGS2['UPGRADE'] = 16)] = 'UPGRADE'; - FLAGS2[(FLAGS2['CONTENT_LENGTH'] = 32)] = 'CONTENT_LENGTH'; - FLAGS2[(FLAGS2['SKIPBODY'] = 64)] = 'SKIPBODY'; - FLAGS2[(FLAGS2['TRAILING'] = 128)] = 'TRAILING'; - FLAGS2[(FLAGS2['TRANSFER_ENCODING'] = 512)] = 'TRANSFER_ENCODING'; - })((FLAGS = exports2.FLAGS || (exports2.FLAGS = {}))); - var LENIENT_FLAGS; - (function (LENIENT_FLAGS2) { - LENIENT_FLAGS2[(LENIENT_FLAGS2['HEADERS'] = 1)] = 'HEADERS'; - LENIENT_FLAGS2[(LENIENT_FLAGS2['CHUNKED_LENGTH'] = 2)] = 'CHUNKED_LENGTH'; - LENIENT_FLAGS2[(LENIENT_FLAGS2['KEEP_ALIVE'] = 4)] = 'KEEP_ALIVE'; - })((LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}))); - var METHODS; - (function (METHODS2) { - METHODS2[(METHODS2['DELETE'] = 0)] = 'DELETE'; - METHODS2[(METHODS2['GET'] = 1)] = 'GET'; - METHODS2[(METHODS2['HEAD'] = 2)] = 'HEAD'; - METHODS2[(METHODS2['POST'] = 3)] = 'POST'; - METHODS2[(METHODS2['PUT'] = 4)] = 'PUT'; - METHODS2[(METHODS2['CONNECT'] = 5)] = 'CONNECT'; - METHODS2[(METHODS2['OPTIONS'] = 6)] = 'OPTIONS'; - METHODS2[(METHODS2['TRACE'] = 7)] = 'TRACE'; - METHODS2[(METHODS2['COPY'] = 8)] = 'COPY'; - METHODS2[(METHODS2['LOCK'] = 9)] = 'LOCK'; - METHODS2[(METHODS2['MKCOL'] = 10)] = 'MKCOL'; - METHODS2[(METHODS2['MOVE'] = 11)] = 'MOVE'; - METHODS2[(METHODS2['PROPFIND'] = 12)] = 'PROPFIND'; - METHODS2[(METHODS2['PROPPATCH'] = 13)] = 'PROPPATCH'; - METHODS2[(METHODS2['SEARCH'] = 14)] = 'SEARCH'; - METHODS2[(METHODS2['UNLOCK'] = 15)] = 'UNLOCK'; - METHODS2[(METHODS2['BIND'] = 16)] = 'BIND'; - METHODS2[(METHODS2['REBIND'] = 17)] = 'REBIND'; - METHODS2[(METHODS2['UNBIND'] = 18)] = 'UNBIND'; - METHODS2[(METHODS2['ACL'] = 19)] = 'ACL'; - METHODS2[(METHODS2['REPORT'] = 20)] = 'REPORT'; - METHODS2[(METHODS2['MKACTIVITY'] = 21)] = 'MKACTIVITY'; - METHODS2[(METHODS2['CHECKOUT'] = 22)] = 'CHECKOUT'; - METHODS2[(METHODS2['MERGE'] = 23)] = 'MERGE'; - METHODS2[(METHODS2['M-SEARCH'] = 24)] = 'M-SEARCH'; - METHODS2[(METHODS2['NOTIFY'] = 25)] = 'NOTIFY'; - METHODS2[(METHODS2['SUBSCRIBE'] = 26)] = 'SUBSCRIBE'; - METHODS2[(METHODS2['UNSUBSCRIBE'] = 27)] = 'UNSUBSCRIBE'; - METHODS2[(METHODS2['PATCH'] = 28)] = 'PATCH'; - METHODS2[(METHODS2['PURGE'] = 29)] = 'PURGE'; - METHODS2[(METHODS2['MKCALENDAR'] = 30)] = 'MKCALENDAR'; - METHODS2[(METHODS2['LINK'] = 31)] = 'LINK'; - METHODS2[(METHODS2['UNLINK'] = 32)] = 'UNLINK'; - METHODS2[(METHODS2['SOURCE'] = 33)] = 'SOURCE'; - METHODS2[(METHODS2['PRI'] = 34)] = 'PRI'; - METHODS2[(METHODS2['DESCRIBE'] = 35)] = 'DESCRIBE'; - METHODS2[(METHODS2['ANNOUNCE'] = 36)] = 'ANNOUNCE'; - METHODS2[(METHODS2['SETUP'] = 37)] = 'SETUP'; - METHODS2[(METHODS2['PLAY'] = 38)] = 'PLAY'; - METHODS2[(METHODS2['PAUSE'] = 39)] = 'PAUSE'; - METHODS2[(METHODS2['TEARDOWN'] = 40)] = 'TEARDOWN'; - METHODS2[(METHODS2['GET_PARAMETER'] = 41)] = 'GET_PARAMETER'; - METHODS2[(METHODS2['SET_PARAMETER'] = 42)] = 'SET_PARAMETER'; - METHODS2[(METHODS2['REDIRECT'] = 43)] = 'REDIRECT'; - METHODS2[(METHODS2['RECORD'] = 44)] = 'RECORD'; - METHODS2[(METHODS2['FLUSH'] = 45)] = 'FLUSH'; - })((METHODS = exports2.METHODS || (exports2.METHODS = {}))); - exports2.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS['M-SEARCH'], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - // TODO(indutny): should we allow it with HTTP? - METHODS.SOURCE - ]; - exports2.METHODS_ICE = [METHODS.SOURCE]; - exports2.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - // For AirPlay - METHODS.GET, - METHODS.POST - ]; - exports2.METHOD_MAP = utils_1.enumToMap(METHODS); - exports2.H_METHOD_MAP = {}; - Object.keys(exports2.METHOD_MAP).forEach(key => { - if (/^H/.test(key)) { - exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; - } - }); - var FINISH; - (function (FINISH2) { - FINISH2[(FINISH2['SAFE'] = 0)] = 'SAFE'; - FINISH2[(FINISH2['SAFE_WITH_CB'] = 1)] = 'SAFE_WITH_CB'; - FINISH2[(FINISH2['UNSAFE'] = 2)] = 'UNSAFE'; - })((FINISH = exports2.FINISH || (exports2.FINISH = {}))); - exports2.ALPHA = []; - for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { - exports2.ALPHA.push(String.fromCharCode(i)); - exports2.ALPHA.push(String.fromCharCode(i + 32)); - } - exports2.NUM_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9 - }; - exports2.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 - }; - exports2.NUM = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; - exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); - exports2.MARK = ['-', '_', '.', '!', '~', '*', "'", '(', ')']; - exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(['%', ';', ':', '&', '=', '+', '$', ',']); - exports2.STRICT_URL_CHAR = [ - '!', - '"', - '$', - '%', - '&', - "'", - '(', - ')', - '*', - '+', - ',', - '-', - '.', - '/', - ':', - ';', - '<', - '=', - '>', - '@', - '[', - '\\', - ']', - '^', - '_', - '`', - '{', - '|', - '}', - '~' - ].concat(exports2.ALPHANUM); - exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([' ', '\f']); - for (let i = 128; i <= 255; i++) { - exports2.URL_CHAR.push(i); - } - exports2.HEX = exports2.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); - exports2.STRICT_TOKEN = ['!', '#', '$', '%', '&', "'", '*', '+', '-', '.', '^', '_', '`', '|', '~'].concat(exports2.ALPHANUM); - exports2.TOKEN = exports2.STRICT_TOKEN.concat([' ']); - exports2.HEADER_CHARS = [' ']; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports2.HEADER_CHARS.push(i); - } - } - exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter(c => c !== 44); - exports2.MAJOR = exports2.NUM_MAP; - exports2.MINOR = exports2.MAJOR; - var HEADER_STATE; - (function (HEADER_STATE2) { - HEADER_STATE2[(HEADER_STATE2['GENERAL'] = 0)] = 'GENERAL'; - HEADER_STATE2[(HEADER_STATE2['CONNECTION'] = 1)] = 'CONNECTION'; - HEADER_STATE2[(HEADER_STATE2['CONTENT_LENGTH'] = 2)] = 'CONTENT_LENGTH'; - HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING'] = 3)] = 'TRANSFER_ENCODING'; - HEADER_STATE2[(HEADER_STATE2['UPGRADE'] = 4)] = 'UPGRADE'; - HEADER_STATE2[(HEADER_STATE2['CONNECTION_KEEP_ALIVE'] = 5)] = 'CONNECTION_KEEP_ALIVE'; - HEADER_STATE2[(HEADER_STATE2['CONNECTION_CLOSE'] = 6)] = 'CONNECTION_CLOSE'; - HEADER_STATE2[(HEADER_STATE2['CONNECTION_UPGRADE'] = 7)] = 'CONNECTION_UPGRADE'; - HEADER_STATE2[(HEADER_STATE2['TRANSFER_ENCODING_CHUNKED'] = 8)] = 'TRANSFER_ENCODING_CHUNKED'; - })((HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}))); - exports2.SPECIAL_HEADERS = { - connection: HEADER_STATE.CONNECTION, - 'content-length': HEADER_STATE.CONTENT_LENGTH, - 'proxy-connection': HEADER_STATE.CONNECTION, - 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, - upgrade: HEADER_STATE.UPGRADE + module2.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kDispatcher: Symbol('dispatcher') }; } }); -// node_modules/undici/lib/handler/RedirectHandler.js -var require_RedirectHandler = __commonJS({ - 'node_modules/undici/lib/handler/RedirectHandler.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/file.js +var require_file = __commonJS({ + 'node_modules/undici/lib/web/fetch/file.js'(exports2, module2) { 'use strict'; - var util = require_util(); - var { kBodyUsed } = require_symbols(); - var assert = require('assert'); - var { InvalidArgumentError } = require_errors(); - var EE = require('events'); - var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - var kBody = Symbol('body'); - var BodyAsyncIterable = class { - constructor(body2) { - this[kBody] = body2; - this[kBodyUsed] = false; + var { Blob: Blob2, File } = require('node:buffer'); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; } - async *[Symbol.asyncIterator]() { - assert(!this[kBodyUsed], 'disturbed'); - this[kBodyUsed] = true; - yield* this[kBody]; + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); + } + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); + } + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; + } + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; + } + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return 'File'; } }; - var RedirectHandler = class { - constructor(dispatch, maxRedirections, opts, handler) { - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number'); + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + function isFileLike(object) { + return ( + object instanceof File || + (object && + (typeof object.stream === 'function' || typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File') + ); + } + module2.exports = { FileLike, isFileLike }; + } +}); + +// node_modules/undici/lib/web/fetch/formdata.js +var require_formdata = __commonJS({ + 'node_modules/undici/lib/web/fetch/formdata.js'(exports2, module2) { + 'use strict'; + var { isBlobLike, iteratorMixin } = require_util2(); + var { kState } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { File: NativeFile } = require('node:buffer'); + var nodeUtil = require('node:util'); + var File = globalThis.File ?? NativeFile; + var FormData = class _FormData { + constructor(form) { + webidl.util.markAsUncloneable(this); + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }); } - util.validateHandler(handler, opts.method, opts.upgrade); - this.dispatch = dispatch; - this.location = null; - this.abort = null; - this.opts = { ...opts, maxRedirections: 0 }; - this.maxRedirections = maxRedirections; - this.handler = handler; - this.history = []; - if (util.isStream(this.opts.body)) { - if (util.bodyLength(this.opts.body) === 0) { - this.opts.body.on('data', function () { - assert(false); - }); - } - if (typeof this.opts.body.readableDidRead !== 'boolean') { - this.opts.body[kBodyUsed] = false; - EE.prototype.on.call(this.opts.body, 'data', function () { - this[kBodyUsed] = 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) && - util.isIterable(this.opts.body) - ) { - this.opts.body = new BodyAsyncIterable(this.opts.body); + this[kState] = []; + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.append'; + webidl.argumentLengthCheck(arguments, 2, prefix); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); } + name = webidl.converters.USVString(name, prefix, 'name'); + value = isBlobLike(value) + ? webidl.converters.Blob(value, prefix, 'value', { strict: false }) + : webidl.converters.USVString(value, prefix, 'value'); + filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, 'filename') : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); } - onConnect(abort) { - this.abort = abort; - this.handler.onConnect(abort, { history: this.history }); + delete(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.delete'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, 'name'); + this[kState] = this[kState].filter(entry => entry.name !== name); } - onUpgrade(statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket); + get(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.get'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, 'name'); + const idx = this[kState].findIndex(entry => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; } - onError(error) { - this.handler.onError(error); + getAll(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.getAll'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, 'name'); + return this[kState].filter(entry => entry.name === name).map(entry => entry.value); } - onHeaders(statusCode, headers, resume, statusText) { - this.location = - this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) - ? null - : parseLocation(statusCode, headers); - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)); + has(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.has'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, 'name'); + return this[kState].findIndex(entry => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.set'; + webidl.argumentLengthCheck(arguments, 2, prefix); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); } - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText); + name = webidl.converters.USVString(name, prefix, 'name'); + value = isBlobLike(value) + ? webidl.converters.Blob(value, prefix, 'name', { strict: false }) + : webidl.converters.USVString(value, prefix, 'name'); + filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, 'name') : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex(entry2 => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter(entry2 => entry2.name !== name) + ]; + } else { + this[kState].push(entry); } - const { origin, pathname, search } = util.parseURL( - new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)) + } + [nodeUtil.inspect.custom](depth, options) { + const state = this[kState].reduce( + (a, b) => { + if (a[b.name]) { + if (Array.isArray(a[b.name])) { + a[b.name].push(b.value); + } else { + a[b.name] = [a[b.name], b.value]; + } + } else { + a[b.name] = b.value; + } + return a; + }, + { __proto__: null } ); - const path = search ? `${pathname}${search}` : pathname; - this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); - this.opts.path = path; - this.opts.origin = origin; - this.opts.maxRedirections = 0; - this.opts.query = null; - if (statusCode === 303 && this.opts.method !== 'HEAD') { - this.opts.method = 'GET'; - this.opts.body = null; - } + options.depth ??= depth; + options.colors ??= true; + const output = nodeUtil.formatWithOptions(options, state); + return `FormData ${output.slice(output.indexOf(']') + 2)}`; } - onData(chunk) { - if (this.location) { - } else { - return this.handler.onData(chunk); - } + }; + iteratorMixin('FormData', FormData, kState, 'name', 'value'); + Object.defineProperties(FormData.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + getAll: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true } - onComplete(trailers) { - if (this.location) { - this.location = null; - this.abort = null; - this.dispatch(this.opts, this); - } else { - this.handler.onComplete(trailers); + }); + function makeEntry(name, value, filename) { + if (typeof value === 'string') { + } else { + if (!isFileLike(value)) { + value = + value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options); } } - onBodySent(chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk); + return { name, value }; + } + module2.exports = { FormData, makeEntry }; + } +}); + +// node_modules/undici/lib/web/fetch/formdata-parser.js +var require_formdata_parser = __commonJS({ + 'node_modules/undici/lib/web/fetch/formdata-parser.js'(exports2, module2) { + 'use strict'; + var { isUSVString, bufferToLowerCasedHeaderName } = require_util(); + var { utf8DecodeBytes } = require_util2(); + var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url(); + var { isFileLike } = require_file(); + var { makeEntry } = require_formdata(); + var assert = require('node:assert'); + var { File: NodeFile } = require('node:buffer'); + var File = globalThis.File ?? NodeFile; + var formDataNameBuffer = Buffer.from('form-data; name="'); + var filenameBuffer = Buffer.from('; filename'); + var dd = Buffer.from('--'); + var ddcrlf = Buffer.from('--\r\n'); + function isAsciiString(chars) { + for (let i = 0; i < chars.length; ++i) { + if ((chars.charCodeAt(i) & ~127) !== 0) { + return false; } } - }; - function parseLocation(statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { - return null; + return true; + } + function validateBoundary(boundary) { + const length = boundary.length; + if (length < 27 || length > 70) { + return false; } - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === 'location') { - return headers[i + 1]; + for (let i = 0; i < length; ++i) { + const cp = boundary.charCodeAt(i); + if ( + !((cp >= 48 && cp <= 57) || (cp >= 65 && cp <= 90) || (cp >= 97 && cp <= 122) || cp === 39 || cp === 45 || cp === 95) + ) { + return false; } } + return true; } - function shouldRemoveHeader(header, removeContent, unknownOrigin) { - if (header.length === 4) { - return util.headerNameToString(header) === 'host'; + function multipartFormDataParser(input, mimeType) { + assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data'); + const boundaryString = mimeType.parameters.get('boundary'); + if (boundaryString === void 0) { + return 'failure'; } - if (removeContent && util.headerNameToString(header).startsWith('content-')) { - return true; + const boundary = Buffer.from(`--${boundaryString}`, 'utf8'); + const entryList = []; + const position = { position: 0 }; + while (input[position.position] === 13 && input[position.position + 1] === 10) { + position.position += 2; } - if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { - const name = util.headerNameToString(header); - return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'; + let trailing = input.length; + while (input[trailing - 1] === 10 && input[trailing - 2] === 13) { + trailing -= 2; + } + if (trailing !== input.length) { + input = input.subarray(0, trailing); + } + while (true) { + if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) { + position.position += boundary.length; + } else { + return 'failure'; + } + if ( + (position.position === input.length - 2 && bufferStartsWith(input, dd, position)) || + (position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position)) + ) { + return entryList; + } + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + return 'failure'; + } + position.position += 2; + const result = parseMultipartFormDataHeaders(input, position); + if (result === 'failure') { + return 'failure'; + } + let { name, filename, contentType, encoding } = result; + position.position += 2; + let body2; + { + const boundaryIndex = input.indexOf(boundary.subarray(2), position.position); + if (boundaryIndex === -1) { + return 'failure'; + } + body2 = input.subarray(position.position, boundaryIndex - 4); + position.position += body2.length; + if (encoding === 'base64') { + body2 = Buffer.from(body2.toString(), 'base64'); + } + } + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + return 'failure'; + } else { + position.position += 2; + } + let value; + if (filename !== null) { + contentType ??= 'text/plain'; + if (!isAsciiString(contentType)) { + contentType = ''; + } + value = new File([body2], filename, { type: contentType }); + } else { + value = utf8DecodeBytes(Buffer.from(body2)); + } + assert(isUSVString(name)); + assert((typeof value === 'string' && isUSVString(value)) || isFileLike(value)); + entryList.push(makeEntry(name, value, filename)); } - return false; } - function cleanRequestHeaders(headers, removeContent, unknownOrigin) { - const ret = []; - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); + function parseMultipartFormDataHeaders(input, position) { + let name = null; + let filename = null; + let contentType = null; + let encoding = null; + while (true) { + if (input[position.position] === 13 && input[position.position + 1] === 10) { + if (name === null) { + return 'failure'; } + return { name, filename, contentType, encoding }; } - } else if (headers && typeof headers === 'object') { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]); + let headerName = collectASequenceOfBytes(char => char !== 10 && char !== 13 && char !== 58, input, position); + headerName = removeChars(headerName, true, true, char => char === 9 || char === 32); + if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) { + return 'failure'; + } + if (input[position.position] !== 58) { + return 'failure'; + } + position.position++; + collectASequenceOfBytes(char => char === 32 || char === 9, input, position); + switch (bufferToLowerCasedHeaderName(headerName)) { + case 'content-disposition': { + name = filename = null; + if (!bufferStartsWith(input, formDataNameBuffer, position)) { + return 'failure'; + } + position.position += 17; + name = parseMultipartFormDataName(input, position); + if (name === null) { + return 'failure'; + } + if (bufferStartsWith(input, filenameBuffer, position)) { + let check = position.position + filenameBuffer.length; + if (input[check] === 42) { + position.position += 1; + check += 1; + } + if (input[check] !== 61 || input[check + 1] !== 34) { + return 'failure'; + } + position.position += 12; + filename = parseMultipartFormDataName(input, position); + if (filename === null) { + return 'failure'; + } + } + break; + } + case 'content-type': { + let headerValue = collectASequenceOfBytes(char => char !== 10 && char !== 13, input, position); + headerValue = removeChars(headerValue, false, true, char => char === 9 || char === 32); + contentType = isomorphicDecode(headerValue); + break; } + case 'content-transfer-encoding': { + let headerValue = collectASequenceOfBytes(char => char !== 10 && char !== 13, input, position); + headerValue = removeChars(headerValue, false, true, char => char === 9 || char === 32); + encoding = isomorphicDecode(headerValue); + break; + } + default: { + collectASequenceOfBytes(char => char !== 10 && char !== 13, input, position); + } + } + if (input[position.position] !== 13 && input[position.position + 1] !== 10) { + return 'failure'; + } else { + position.position += 2; } + } + } + function parseMultipartFormDataName(input, position) { + assert(input[position.position - 1] === 34); + let name = collectASequenceOfBytes(char => char !== 10 && char !== 13 && char !== 34, input, position); + if (input[position.position] !== 34) { + return null; } else { - assert(headers == null, 'headers must be an object or an array'); + position.position++; } - return ret; + name = new TextDecoder().decode(name).replace(/%0A/gi, '\n').replace(/%0D/gi, '\r').replace(/%22/g, '"'); + return name; } - module2.exports = RedirectHandler; - } -}); - -// node_modules/undici/lib/interceptor/redirectInterceptor.js -var require_redirectInterceptor = __commonJS({ - 'node_modules/undici/lib/interceptor/redirectInterceptor.js'(exports2, module2) { - 'use strict'; - var RedirectHandler = require_RedirectHandler(); - function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { - return dispatch => { - return function Intercept(opts, handler) { - const { maxRedirections = defaultMaxRedirections } = opts; - if (!maxRedirections) { - return dispatch(opts, handler); - } - const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); - opts = { ...opts, maxRedirections: 0 }; - return dispatch(opts, redirectHandler); - }; - }; + function collectASequenceOfBytes(condition, input, position) { + let start = position.position; + while (start < input.length && condition(input[start])) { + ++start; + } + return input.subarray(position.position, (position.position = start)); } - module2.exports = createRedirectInterceptor; - } -}); - -// node_modules/undici/lib/llhttp/llhttp-wasm.js -var require_llhttp_wasm = __commonJS({ - 'node_modules/undici/lib/llhttp/llhttp-wasm.js'(exports2, module2) { - module2.exports = - 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='; - } -}); - -// node_modules/undici/lib/llhttp/llhttp_simd-wasm.js -var require_llhttp_simd_wasm = __commonJS({ - 'node_modules/undici/lib/llhttp/llhttp_simd-wasm.js'(exports2, module2) { - module2.exports = - 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='; + function removeChars(buf, leading, trailing, predicate) { + let lead = 0; + let trail = buf.length - 1; + if (leading) { + while (lead < buf.length && predicate(buf[lead])) lead++; + } + if (trailing) { + while (trail > 0 && predicate(buf[trail])) trail--; + } + return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1); + } + function bufferStartsWith(buffer, start, position) { + if (buffer.length < start.length) { + return false; + } + for (let i = 0; i < start.length; i++) { + if (start[i] !== buffer[position.position + i]) { + return false; + } + } + return true; + } + module2.exports = { + multipartFormDataParser, + validateBoundary + }; } }); -// node_modules/undici/lib/client.js -var require_client = __commonJS({ - 'node_modules/undici/lib/client.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/body.js +var require_body = __commonJS({ + 'node_modules/undici/lib/web/fetch/body.js'(exports2, module2) { 'use strict'; - var assert = require('assert'); - var net = require('net'); - var http = require('http'); - var { pipeline } = require('stream'); var util = require_util(); - var timers = require_timers(); - var Request = require_request(); - var DispatcherBase = require_dispatcher_base(); - var { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - InvalidArgumentError, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError, - ResponseExceededMaxSizeError, - ClientDestroyedError - } = require_errors(); - var buildConnector = require_connect(); - var { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch, - kInterceptors, - kLocalAddress, - kMaxResponseSize, - kHTTPConnVersion, - // HTTP2 - kHost, - kHTTP2Session, - kHTTP2SessionState, - kHTTP2BuildRequest, - kHTTP2CopyHeaders, - kHTTP1BuildRequest - } = require_symbols(); - var http2; - try { - http2 = require('http2'); - } catch { - http2 = { constants: {} }; - } var { - constants: { - HTTP2_HEADER_AUTHORITY, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_CONTENT_LENGTH, - HTTP2_HEADER_EXPECT, - HTTP2_HEADER_STATUS - } - } = http2; - var h2ExperimentalWarned = false; - var FastBuffer = Buffer[Symbol.species]; - var kClosedResolve = Symbol('kClosedResolve'); - var channels = {}; + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody, + extractMimeType, + utf8DecodeBytes + } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { Blob: Blob2 } = require('node:buffer'); + var assert = require('node:assert'); + var { isErrored, isDisturbed } = require('node:stream'); + var { isArrayBuffer } = require('node:util/types'); + var { serializeAMimeType } = require_data_url(); + var { multipartFormDataParser } = require_formdata_parser(); + var random; try { - const diagnosticsChannel = require('diagnostics_channel'); - channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders'); - channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect'); - channels.connectError = diagnosticsChannel.channel('undici:client:connectError'); - channels.connected = diagnosticsChannel.channel('undici:client:connected'); + const crypto = require('node:crypto'); + random = max => crypto.randomInt(0, max); } catch { - channels.sendHeaders = { hasSubscribers: false }; - channels.beforeConnect = { hasSubscribers: false }; - channels.connectError = { hasSubscribers: false }; - channels.connected = { hasSubscribers: false }; + random = max => Math.floor(Math.random(max)); } - var Client = class extends DispatcherBase { - /** - * - * @param {string|URL} url - * @param {import('../types/client').Client.Options} options - */ - constructor( - url, - { - interceptors, - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect: connect2, - maxRequestsPerClient, - localAddress, - maxResponseSize, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - // h2 - allowH2, - maxConcurrentStreams - } = {} - ) { - super(); - if (keepAlive !== void 0) { - throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead'); - } - if (socketTimeout !== void 0) { - throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead'); - } - if (requestTimeout !== void 0) { - throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead'); - } - if (idleTimeout !== void 0) { - throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead'); + var textEncoder = new TextEncoder(); + function noop3() {} + var hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf('v18') !== 0; + var streamRegistry; + if (hasFinalizationRegistry) { + streamRegistry = new FinalizationRegistry(weakRef => { + const stream = weakRef.deref(); + if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) { + stream.cancel('Response object has been garbage collected').catch(noop3); } - if (maxKeepAliveTimeout !== void 0) { - throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead'); - } - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError('invalid maxHeaderSize'); - } - if (socketPath != null && typeof socketPath !== 'string') { - throw new InvalidArgumentError('invalid socketPath'); - } - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError('invalid connectTimeout'); - } - if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveTimeout'); - } - if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveMaxTimeout'); - } - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold'); - } - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('headersTimeout must be a positive integer or zero'); - } - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero'); - } - if (connect2 != null && typeof connect2 !== 'function' && typeof connect2 !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object'); - } - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number'); - } - if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { - throw new InvalidArgumentError('maxRequestsPerClient must be a positive number'); - } - if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { - throw new InvalidArgumentError('localAddress must be valid string IP address'); - } - if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { - throw new InvalidArgumentError('maxResponseSize must be a positive number'); - } - if ( - autoSelectFamilyAttemptTimeout != null && - (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) - ) { - throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number'); - } - if (allowH2 != null && typeof allowH2 !== 'boolean') { - throw new InvalidArgumentError('allowH2 must be a valid boolean value'); + }); + } + function extractBody(object, keepalive = false) { + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + async pull(controller) { + const buffer = typeof source === 'string' ? textEncoder.encode(source) : source; + if (buffer.byteLength) { + controller.enqueue(buffer); + } + queueMicrotask(() => readableStreamClose(controller)); + }, + start() {}, + type: 'bytes' + }); + } + assert(isReadableStreamLike(stream)); + let action = null; + let source = null; + let length = null; + let type = null; + if (typeof object === 'string') { + source = object; + type = 'text/plain;charset=UTF-8'; + } else if (object instanceof URLSearchParams) { + source = object.toString(); + type = 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (isArrayBuffer(object)) { + source = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22'); + const normalizeLinefeeds = value => value.replace(/\r?\n|\r/g, '\r\n'); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk2 = textEncoder.encode( + prefix + + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +` + ); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode( + `${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + + `\r +Content-Type: ${value.type || 'application/octet-stream'}\r +\r +` + ); + blobParts.push(chunk2, value, rn); + if (typeof value.size === 'number') { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } } - if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { - throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0'); + const chunk = textEncoder.encode(`--${boundary}--\r +`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; } - if (typeof connect2 !== 'function') { - connect2 = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), - ...connect2 - }); + source = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = `multipart/form-data; boundary=${boundary}`; + } else if (isBlobLike(object)) { + source = object; + length = object.size; + if (object.type) { + type = object.type; } - this[kInterceptors] = - interceptors && interceptors.Client && Array.isArray(interceptors.Client) - ? interceptors.Client - : [createRedirectInterceptor({ maxRedirections })]; - this[kUrl] = util.parseOrigin(url); - this[kConnector] = connect2; - this[kSocket] = null; - this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; - this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; - this[kServerName] = null; - this[kLocalAddress] = localAddress != null ? localAddress : null; - this[kResuming] = 0; - this[kNeedDrain] = 0; - this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r -`; - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; - this[kMaxRedirections] = maxRedirections; - this[kMaxRequests] = maxRequestsPerClient; - this[kClosedResolve] = null; - this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; - this[kHTTPConnVersion] = 'h1'; - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = !allowH2 - ? null - : { - // streams: null, // Fixed queue of streams - For future support of `push` - openStreams: 0, - // Keep track of them to decide wether or not unref the session - maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 - // Max peerConcurrentStreams for a Node h2 server - }; - this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`; - this[kQueue] = []; - this[kRunningIdx] = 0; - this[kPendingIdx] = 0; - } - get pipelining() { - return this[kPipelining]; - } - set pipelining(value) { - this[kPipelining] = value; - resume(this, true); - } - get [kPending]() { - return this[kQueue].length - this[kPendingIdx]; - } - get [kRunning]() { - return this[kPendingIdx] - this[kRunningIdx]; - } - get [kSize]() { - return this[kQueue].length - this[kRunningIdx]; - } - get [kConnected]() { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; - } - get [kBusy]() { - const socket = this[kSocket]; - return ( - (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || - this[kSize] >= (this[kPipelining] || 1) || - this[kPending] > 0 - ); - } - /* istanbul ignore: only used for test */ - [kConnect](cb) { - connect(this); - this.once('connect', cb); - } - [kDispatch](opts, handler) { - const origin = opts.origin || this[kUrl].origin; - const request = - this[kHTTPConnVersion] === 'h2' - ? Request[kHTTP2BuildRequest](origin, opts, handler) - : Request[kHTTP1BuildRequest](origin, opts, handler); - this[kQueue].push(request); - if (this[kResuming]) { - } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { - this[kResuming] = 1; - process.nextTick(resume, this); - } else { - resume(this, true); + } else if (typeof object[Symbol.asyncIterator] === 'function') { + if (keepalive) { + throw new TypeError('keepalive'); } - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2; + if (util.isDisturbed(object) || object.locked) { + throw new TypeError('Response body object should not be disturbed or locked'); } - return this[kNeedDrain] < 2; + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); } - async [kClose]() { - return new Promise(resolve => { - if (!this[kSize]) { - resolve(null); - } else { - this[kClosedResolve] = resolve; - } - }); + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source); } - async [kDestroy](err) { - return new Promise(resolve => { - const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - const callback = () => { - if (this[kClosedResolve]) { - this[kClosedResolve](); - this[kClosedResolve] = null; + if (action != null) { + let iterator2; + stream = new ReadableStream({ + async start() { + iterator2 = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator2.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + controller.byobRequest?.respond(0); + }); + } else { + if (!isErrored(stream)) { + const buffer = new Uint8Array(value); + if (buffer.byteLength) { + controller.enqueue(buffer); + } + } } - resolve(); - }; - if (this[kHTTP2Session] != null) { - util.destroy(this[kHTTP2Session], err); - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = null; - } - if (!this[kSocket]) { - queueMicrotask(callback); - } else { - util.destroy(this[kSocket].on('close', callback), err); - } - resume(this); + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator2.return(); + }, + type: 'bytes' }); } - }; - function onHttp2SessionError(err) { - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); - this[kSocket][kError] = err; - onError(this[kClient], err); + const body2 = { stream, source, length }; + return [body2, type]; } - function onHttp2FrameError(type, code, id) { - const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); - if (id === 0) { - this[kSocket][kError] = err; - onError(this[kClient], err); + function safelyExtractBody(object, keepalive = false) { + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), 'The body has already been consumed.'); + assert(!object.locked, 'The stream is locked.'); } + return extractBody(object, keepalive); } - function onHttp2SessionEnd() { - util.destroy(this, new SocketError('other side closed')); - util.destroy(this[kSocket], new SocketError('other side closed')); + function cloneBody(instance, body2) { + const [out1, out2] = body2.stream.tee(); + body2.stream = out1; + return { + stream: out2, + length: body2.length, + source: body2.source + }; } - function onHTTP2GoAway(code) { - const client = this[kClient]; - const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - client[kSocket] = null; - client[kHTTP2Session] = null; - if (client.destroyed) { - assert(this[kPending] === 0); - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError'); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return consumeBody( + this, + bytes => { + let mimeType = bodyMimeType(this); + if (mimeType === null) { + mimeType = ''; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, + instance + ); + }, + arrayBuffer() { + return consumeBody( + this, + bytes => { + return new Uint8Array(bytes).buffer; + }, + instance + ); + }, + text() { + return consumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return consumeBody(this, parseJSONFromBytes, instance); + }, + formData() { + return consumeBody( + this, + value => { + const mimeType = bodyMimeType(this); + if (mimeType !== null) { + switch (mimeType.essence) { + case 'multipart/form-data': { + const parsed = multipartFormDataParser(value, mimeType); + if (parsed === 'failure') { + throw new TypeError('Failed to parse body as FormData.'); + } + const fd = new FormData(); + fd[kState] = parsed; + return fd; + } + case 'application/x-www-form-urlencoded': { + const entries = new URLSearchParams(value.toString()); + const fd = new FormData(); + for (const [name, value2] of entries) { + fd.append(name, value2); + } + return fd; + } + } + } + throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".'); + }, + instance + ); + }, + bytes() { + return consumeBody( + this, + bytes => { + return new Uint8Array(bytes); + }, + instance + ); } - } else if (client[kRunning] > 0) { - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - errorRequest(client, request, err); + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function consumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + if (bodyUnusable(object)) { + throw new TypeError('Body is unusable: Body has already been read'); } - client[kPendingIdx] = client[kRunningIdx]; - assert(client[kRunning] === 0); - client.emit('disconnect', client[kUrl], [client], err); - resume(client); + throwIfAborted(object[kState]); + const promise = createDeferredPromise(); + const errorSteps = error => promise.reject(error); + const successSteps = data => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(Buffer.allocUnsafe(0)); + return promise.promise; + } + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(object) { + const body2 = object[kState].body; + return body2 != null && (body2.stream.locked || util.isDisturbed(body2.stream)); + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(requestOrResponse) { + const headers = requestOrResponse[kState].headersList; + const mimeType = extractMimeType(headers); + if (mimeType === 'failure') { + return null; + } + return mimeType; } - var constants = require_constants3(); - var createRedirectInterceptor = require_redirectInterceptor(); + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody, + streamRegistry, + hasFinalizationRegistry, + bodyUnusable + }; + } +}); + +// node_modules/undici/lib/dispatcher/client-h1.js +var require_client_h1 = __commonJS({ + 'node_modules/undici/lib/dispatcher/client-h1.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var util = require_util(); + var { channels } = require_diagnostics(); + var timers = require_timers(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError + } = require_errors(); + var { + kUrl, + kReset, + kClient, + kParser, + kBlocking, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kMaxRequests, + kCounter, + kMaxResponseSize, + kOnError, + kResume, + kHTTPContext + } = require_symbols(); + var constants = require_constants2(); var EMPTY_BUF = Buffer.alloc(0); + var FastBuffer = Buffer[Symbol.species]; + var addListener = util.addListener; + var removeAllListeners = util.removeAllListeners; + var extractBody; async function lazyllhttp() { const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; let mod; try { - mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), 'base64')); + mod = await WebAssembly.compile(require_llhttp_simd_wasm()); } catch (e) { - mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), 'base64')); + mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm()); } return await WebAssembly.instantiate(mod, { env: { @@ -7521,35 +5948,35 @@ var require_client = __commonJS({ return 0; }, wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); const start = at - currentBufferPtr + currentBufferRef.byteOffset; return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; }, wasm_on_message_begin: p => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); return currentParser.onMessageBegin() || 0; }, wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); const start = at - currentBufferPtr + currentBufferRef.byteOffset; return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; }, wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); const start = at - currentBufferPtr + currentBufferRef.byteOffset; return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; }, wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; }, wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); const start = at - currentBufferPtr + currentBufferRef.byteOffset; return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; }, wasm_on_message_complete: p => { - assert.strictEqual(currentParser.ptr, p); + assert(currentParser.ptr === p); return currentParser.onMessageComplete() || 0; } /* eslint-enable camelcase */ @@ -7563,9 +5990,11 @@ var require_client = __commonJS({ var currentBufferRef = null; var currentBufferSize = 0; var currentBufferPtr = null; - var TIMEOUT_HEADERS = 1; - var TIMEOUT_BODY = 2; - var TIMEOUT_IDLE = 3; + var USE_NATIVE_TIMER = 0; + var USE_FAST_TIMER = 1; + var TIMEOUT_HEADERS = 2 | USE_FAST_TIMER; + var TIMEOUT_BODY = 4 | USE_FAST_TIMER; + var TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER; var Parser = class { constructor(client, socket, { exports: exports3 }) { assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); @@ -7591,24 +6020,27 @@ var require_client = __commonJS({ this.connection = ''; this.maxResponseSize = client[kMaxResponseSize]; } - setTimeout(value, type) { - this.timeoutType = type; - if (value !== this.timeoutValue) { - timers.clearTimeout(this.timeout); - if (value) { - this.timeout = timers.setTimeout(onParserTimeout, value, this); - if (this.timeout.unref) { + setTimeout(delay, type) { + if (delay !== this.timeoutValue || (type & USE_FAST_TIMER) ^ (this.timeoutType & USE_FAST_TIMER)) { + if (this.timeout) { + timers.clearTimeout(this.timeout); + this.timeout = null; + } + if (delay) { + if (type & USE_FAST_TIMER) { + this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this)); + } else { + this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this)); this.timeout.unref(); } - } else { - this.timeout = null; } - this.timeoutValue = value; + this.timeoutValue = delay; } else if (this.timeout) { if (this.timeout.refresh) { this.timeout.refresh(); } } + this.timeoutType = type; } resume() { if (this.socket.destroyed || !this.paused) { @@ -7686,7 +6118,7 @@ var require_client = __commonJS({ assert(currentParser == null); this.llhttp.llhttp_free(this.ptr); this.ptr = null; - timers.clearTimeout(this.timeout); + this.timeout && timers.clearTimeout(this.timeout); this.timeout = null; this.timeoutValue = null; this.timeoutType = null; @@ -7700,10 +6132,11 @@ var require_client = __commonJS({ if (socket.destroyed) { return -1; } - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { return -1; } + request2.onResponseStarted(); } onHeaderField(buf) { const len = this.headers.length; @@ -7723,11 +6156,14 @@ var require_client = __commonJS({ this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); } const key = this.headers[len - 2]; - if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { - this.keepAlive += buf.toString(); - } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { - this.connection += buf.toString(); - } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + if (key.length === 10) { + const headerName = util.bufferToLowerCasedHeaderName(key); + if (headerName === 'keep-alive') { + this.keepAlive += buf.toString(); + } else if (headerName === 'connection') { + this.connection += buf.toString(); + } + } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') { this.contentLength += buf.toString(); } this.trackHeader(buf.length); @@ -7741,16 +6177,16 @@ var require_client = __commonJS({ onUpgrade(head) { const { upgrade, client, socket, headers, statusCode } = this; assert(upgrade); - const request = client[kQueue][client[kRunningIdx]]; - assert(request); + assert(client[kSocket] === socket); assert(!socket.destroyed); - assert(socket === client[kSocket]); assert(!this.paused); - assert(request.upgrade || request.method === 'CONNECT'); + assert((headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); + assert(request2.upgrade || request2.method === 'CONNECT'); this.statusCode = null; this.statusText = ''; this.shouldKeepAlive = null; - assert(this.headers.length % 2 === 0); this.headers = []; this.headersSize = 0; socket.unshift(head); @@ -7758,28 +6194,25 @@ var require_client = __commonJS({ socket[kParser] = null; socket[kClient] = null; socket[kError] = null; - socket - .removeListener('error', onSocketError) - .removeListener('readable', onSocketReadable) - .removeListener('end', onSocketEnd) - .removeListener('close', onSocketClose); + removeAllListeners(socket); client[kSocket] = null; + client[kHTTPContext] = null; client[kQueue][client[kRunningIdx]++] = null; client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')); try { - request.onUpgrade(statusCode, headers, socket); + request2.onUpgrade(statusCode, headers, socket); } catch (err) { util.destroy(socket, err); } - resume(client); + client[kResume](); } onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { const { client, socket, headers, statusText } = this; if (socket.destroyed) { return -1; } - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { return -1; } assert(!this.upgrade); @@ -7788,24 +6221,24 @@ var require_client = __commonJS({ util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); return -1; } - if (upgrade && !request.upgrade) { + if (upgrade && !request2.upgrade) { util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))); return -1; } - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + assert(this.timeoutType === TIMEOUT_HEADERS); this.statusCode = statusCode; this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. - (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive'); + (request2.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive'); if (this.statusCode >= 200) { - const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; + const bodyTimeout = request2.bodyTimeout != null ? request2.bodyTimeout : client[kBodyTimeout]; this.setTimeout(bodyTimeout, TIMEOUT_BODY); } else if (this.timeout) { if (this.timeout.refresh) { this.timeout.refresh(); } } - if (request.method === 'CONNECT') { + if (request2.method === 'CONNECT') { assert(client[kRunning] === 1); this.upgrade = true; return 2; @@ -7815,7 +6248,7 @@ var require_client = __commonJS({ this.upgrade = true; return 2; } - assert(this.headers.length % 2 === 0); + assert((this.headers.length & 1) === 0); this.headers = []; this.headersSize = 0; if (this.shouldKeepAlive && client[kPipelining]) { @@ -7833,11 +6266,11 @@ var require_client = __commonJS({ } else { socket[kReset] = true; } - const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; - if (request.aborted) { + const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false; + if (request2.aborted) { return -1; } - if (request.method === 'HEAD') { + if (request2.method === 'HEAD') { return 1; } if (statusCode < 200) { @@ -7845,7 +6278,7 @@ var require_client = __commonJS({ } if (socket[kBlocking]) { socket[kBlocking] = false; - resume(client); + client[kResume](); } return pause ? constants.ERROR.PAUSED : 0; } @@ -7854,9 +6287,9 @@ var require_client = __commonJS({ if (socket.destroyed) { return -1; } - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); + assert(this.timeoutType === TIMEOUT_BODY); if (this.timeout) { if (this.timeout.refresh) { this.timeout.refresh(); @@ -7868,7 +6301,7 @@ var require_client = __commonJS({ return -1; } this.bytesRead += buf.length; - if (request.onData(buf) === false) { + if (request2.onData(buf) === false) { return constants.ERROR.PAUSED; } } @@ -7880,29 +6313,29 @@ var require_client = __commonJS({ if (upgrade) { return; } - const request = client[kQueue][client[kRunningIdx]]; - assert(request); assert(statusCode >= 100); + assert((this.headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); this.statusCode = null; this.statusText = ''; this.bytesRead = 0; this.contentLength = ''; this.keepAlive = ''; this.connection = ''; - assert(this.headers.length % 2 === 0); this.headers = []; this.headersSize = 0; if (statusCode < 200) { return; } - if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + if (request2.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { util.destroy(socket, new ResponseContentLengthMismatchError()); return -1; } - request.onComplete(headers); + request2.onComplete(headers); client[kQueue][client[kRunningIdx]++] = null; if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0); + assert(client[kRunning] === 0); util.destroy(socket, new InformationalError('reset')); return constants.ERROR.PAUSED; } else if (!shouldKeepAlive) { @@ -7911,363 +6344,198 @@ var require_client = __commonJS({ } else if (socket[kReset] && client[kRunning] === 0) { util.destroy(socket, new InformationalError('reset')); return constants.ERROR.PAUSED; - } else if (client[kPipelining] === 1) { - setImmediate(resume, client); + } else if (client[kPipelining] == null || client[kPipelining] === 1) { + setImmediate(() => client[kResume]()); } else { - resume(client); + client[kResume](); } } }; function onParserTimeout(parser) { - const { socket, timeoutType, client } = parser; + const { socket, timeoutType, client, paused } = parser.deref(); if (timeoutType === TIMEOUT_HEADERS) { if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { - assert(!parser.paused, 'cannot be paused while waiting for headers'); + assert(!paused, 'cannot be paused while waiting for headers'); util.destroy(socket, new HeadersTimeoutError()); } } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { + if (!paused) { util.destroy(socket, new BodyTimeoutError()); } - } else if (timeoutType === TIMEOUT_IDLE) { + } else if (timeoutType === TIMEOUT_KEEP_ALIVE) { assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); util.destroy(socket, new InformationalError('socket idle timeout')); } } - function onSocketReadable() { - const { [kParser]: parser } = this; - if (parser) { - parser.readMore(); - } - } - function onSocketError(err) { - const { [kClient]: client, [kParser]: parser } = this; - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); - if (client[kHTTPConnVersion] !== 'h2') { + async function connectH1(client, socket) { + client[kSocket] = socket; + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + addListener(socket, 'error', function (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + const parser = this[kParser]; if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { parser.onMessageComplete(); return; } - } - this[kError] = err; - onError(this[kClient], err); - } - function onError(client, err) { - if (client[kRunning] === 0 && err.code !== 'UND_ERR_INFO' && err.code !== 'UND_ERR_SOCKET') { - assert(client[kPendingIdx] === client[kRunningIdx]); - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); + this[kError] = err; + this[kClient][kOnError](err); + }); + addListener(socket, 'readable', function () { + const parser = this[kParser]; + if (parser) { + parser.readMore(); } - assert(client[kSize] === 0); - } - } - function onSocketEnd() { - const { [kParser]: parser, [kClient]: client } = this; - if (client[kHTTPConnVersion] !== 'h2') { + }); + addListener(socket, 'end', function () { + const parser = this[kParser]; if (parser.statusCode && !parser.shouldKeepAlive) { parser.onMessageComplete(); return; } - } - util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + }); + addListener(socket, 'close', function () { + const client2 = this[kClient]; + const parser = this[kParser]; + if (parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + parser.onMessageComplete(); + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + client2[kSocket] = null; + client2[kHTTPContext] = null; + if (client2.destroyed) { + assert(client2[kPending] === 0); + const requests = client2[kQueue].splice(client2[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client2, request2, err); + } + } else if (client2[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + const request2 = client2[kQueue][client2[kRunningIdx]]; + client2[kQueue][client2[kRunningIdx]++] = null; + util.errorRequest(client2, request2, err); + } + client2[kPendingIdx] = client2[kRunningIdx]; + assert(client2[kRunning] === 0); + client2.emit('disconnect', client2[kUrl], [client2], err); + client2[kResume](); + }); + let closed = false; + socket.on('close', () => { + closed = true; + }); + return { + version: 'h1', + defaultPipelining: 1, + write(...args) { + return writeH1(client, ...args); + }, + resume() { + resumeH1(client); + }, + destroy(err, callback) { + if (closed) { + queueMicrotask(callback); + } else { + socket.destroy(err).on('close', callback); + } + }, + get destroyed() { + return socket.destroyed; + }, + busy(request2) { + if (socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return true; + } + if (request2) { + if (client[kRunning] > 0 && !request2.idempotent) { + return true; + } + if (client[kRunning] > 0 && (request2.upgrade || request2.method === 'CONNECT')) { + return true; + } + if ( + client[kRunning] > 0 && + util.bodyLength(request2.body) !== 0 && + (util.isStream(request2.body) || util.isAsyncIterable(request2.body) || util.isFormDataLike(request2.body)) + ) { + return true; + } + } + return false; + } + }; } - function onSocketClose() { - const { [kClient]: client, [kParser]: parser } = this; - if (client[kHTTPConnVersion] === 'h1' && parser) { - if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { - parser.onMessageComplete(); + function resumeH1(client) { + const socket = client[kSocket]; + if (socket && !socket.destroyed) { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; } - this[kParser].destroy(); - this[kParser] = null; - } - const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); - client[kSocket] = null; - if (client.destroyed) { - assert(client[kPending] === 0); - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request2 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } } - } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - errorRequest(client, request, err); } - client[kPendingIdx] = client[kRunningIdx]; - assert(client[kRunning] === 0); - client.emit('disconnect', client[kUrl], [client], err); - resume(client); } - async function connect(client) { - assert(!client[kConnecting]); - assert(!client[kSocket]); - let { host, hostname, protocol, port } = client[kUrl]; - if (hostname[0] === '[') { - const idx = hostname.indexOf(']'); - assert(idx !== -1); - const ip = hostname.substring(1, idx); - assert(net.isIP(ip)); - hostname = ip; + function shouldSendContentLength(method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; + } + function writeH1(client, request2) { + const { method, path, host, upgrade, blocking, reset } = request2; + let { body: body2, headers, contentLength } = request2; + const expectsPayload = + method === 'PUT' || + method === 'POST' || + method === 'PATCH' || + method === 'QUERY' || + method === 'PROPFIND' || + method === 'PROPPATCH'; + if (util.isFormDataLike(body2)) { + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body2); + if (request2.contentType == null) { + headers.push('content-type', contentType); + } + body2 = bodyStream.stream; + contentLength = bodyStream.length; + } else if (util.isBlobLike(body2) && request2.contentType == null && body2.type) { + headers.push('content-type', body2.type); } - client[kConnecting] = true; - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector] - }); - } - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]( - { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - (err, socket2) => { - if (err) { - reject(err); - } else { - resolve(socket2); - } - } - ); - }); - if (client.destroyed) { - util.destroy( - socket.on('error', () => {}), - new ClientDestroyedError() - ); - return; - } - client[kConnecting] = false; - assert(socket); - const isH2 = socket.alpnProtocol === 'h2'; - if (isH2) { - if (!h2ExperimentalWarned) { - h2ExperimentalWarned = true; - process.emitWarning('H2 support is experimental, expect them to change at any time.', { - code: 'UNDICI-H2' - }); - } - const session = http2.connect(client[kUrl], { - createConnection: () => socket, - peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams - }); - client[kHTTPConnVersion] = 'h2'; - session[kClient] = client; - session[kSocket] = socket; - session.on('error', onHttp2SessionError); - session.on('frameError', onHttp2FrameError); - session.on('end', onHttp2SessionEnd); - session.on('goaway', onHTTP2GoAway); - session.on('close', onSocketClose); - session.unref(); - client[kHTTP2Session] = session; - socket[kHTTP2Session] = session; - } else { - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise; - llhttpPromise = null; - } - socket[kNoRef] = false; - socket[kWriting] = false; - socket[kReset] = false; - socket[kBlocking] = false; - socket[kParser] = new Parser(client, socket, llhttpInstance); - } - socket[kCounter] = 0; - socket[kMaxRequests] = client[kMaxRequests]; - socket[kClient] = client; - socket[kError] = null; - socket.on('error', onSocketError).on('readable', onSocketReadable).on('end', onSocketEnd).on('close', onSocketClose); - client[kSocket] = socket; - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector], - socket - }); - } - client.emit('connect', client[kUrl], [client]); - } catch (err) { - if (client.destroyed) { - return; - } - client[kConnecting] = false; - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector], - error: err - }); - } - if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { - assert(client[kRunning] === 0); - while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { - const request = client[kQueue][client[kPendingIdx]++]; - errorRequest(client, request, err); - } - } else { - onError(client, err); - } - client.emit('connectionError', client[kUrl], [client], err); - } - resume(client); - } - function emitDrain(client) { - client[kNeedDrain] = 0; - client.emit('drain', client[kUrl], [client]); - } - function resume(client, sync) { - if (client[kResuming] === 2) { - return; - } - client[kResuming] = 2; - _resume(client, sync); - client[kResuming] = 0; - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]); - client[kPendingIdx] -= client[kRunningIdx]; - client[kRunningIdx] = 0; - } - } - function _resume(client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0); - return; - } - if (client[kClosedResolve] && !client[kSize]) { - client[kClosedResolve](); - client[kClosedResolve] = null; - return; - } - const socket = client[kSocket]; - if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref(); - socket[kNoRef] = true; - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref(); - socket[kNoRef] = false; - } - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request2 = client[kQueue][client[kRunningIdx]]; - const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); - } - } - } - if (client[kBusy]) { - client[kNeedDrain] = 2; - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1; - process.nextTick(emitDrain, client); - } else { - emitDrain(client); - } - continue; - } - if (client[kPending] === 0) { - return; - } - if (client[kRunning] >= (client[kPipelining] || 1)) { - return; - } - const request = client[kQueue][client[kPendingIdx]]; - if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return; - } - client[kServerName] = request.servername; - if (socket && socket.servername !== request.servername) { - util.destroy(socket, new InformationalError('servername changed')); - return; - } - } - if (client[kConnecting]) { - return; - } - if (!socket && !client[kHTTP2Session]) { - connect(client); - return; - } - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return; - } - if (client[kRunning] > 0 && !request.idempotent) { - return; - } - if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { - return; - } - if ( - client[kRunning] > 0 && - util.bodyLength(request.body) !== 0 && - (util.isStream(request.body) || util.isAsyncIterable(request.body)) - ) { - return; - } - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++; - } else { - client[kQueue].splice(client[kPendingIdx], 1); - } - } - } - function shouldSendContentLength(method) { - return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; - } - function write(client, request) { - if (client[kHTTPConnVersion] === 'h2') { - writeH2(client, client[kHTTP2Session], request); - return; - } - const { body: body2, method, path, host, upgrade, headers, blocking, reset } = request; - const expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; - if (body2 && typeof body2.read === 'function') { - body2.read(0); + if (body2 && typeof body2.read === 'function') { + body2.read(0); } const bodyLength = util.bodyLength(body2); - let contentLength = bodyLength; + contentLength = bodyLength ?? contentLength; if (contentLength === null) { - contentLength = request.contentLength; + contentLength = request2.contentLength; } if (contentLength === 0 && !expectsPayload) { contentLength = null; @@ -8275,28 +6543,30 @@ var require_client = __commonJS({ if ( shouldSendContentLength(method) && contentLength > 0 && - request.contentLength !== null && - request.contentLength !== contentLength + request2.contentLength !== null && + request2.contentLength !== contentLength ) { if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); + util.errorRequest(client, request2, new RequestContentLengthMismatchError()); return false; } process.emitWarning(new RequestContentLengthMismatchError()); } const socket = client[kSocket]; + const abort = err => { + if (request2.aborted || request2.completed) { + return; + } + util.errorRequest(client, request2, err || new RequestAbortedError()); + util.destroy(body2); + util.destroy(socket, new InformationalError('aborted')); + }; try { - request.onConnect(err => { - if (request.aborted || request.completed) { - return; - } - errorRequest(client, request, err || new RequestAbortedError()); - util.destroy(socket, new InformationalError('aborted')); - }); + request2.onConnect(abort); } catch (err) { - errorRequest(client, request, err); + util.errorRequest(client, request2, err); } - if (request.aborted) { + if (request2.aborted) { return false; } if (method === 'HEAD') { @@ -8331,293 +6601,75 @@ upgrade: ${upgrade}\r } else { header += 'connection: close\r\n'; } - if (headers) { - header += headers; + if (Array.isArray(headers)) { + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0]; + const val = headers[n + 1]; + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + header += `${key}: ${val[i]}\r +`; + } + } else { + header += `${key}: ${val}\r +`; + } + } } if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }); + channels.sendHeaders.publish({ request: request2, headers: header, socket }); } if (!body2 || bodyLength === 0) { - if (contentLength === 0) { - socket.write( - `${header}content-length: 0\r -\r -`, - 'latin1' - ); - } else { - assert(contentLength === null, 'no body must not have content length'); - socket.write( - `${header}\r -`, - 'latin1' - ); - } - request.onRequestSent(); + writeBuffer(abort, null, client, request2, socket, contentLength, header, expectsPayload); } else if (util.isBuffer(body2)) { - assert(contentLength === body2.byteLength, 'buffer body must have content length'); - socket.cork(); - socket.write( - `${header}content-length: ${contentLength}\r -\r -`, - 'latin1' - ); - socket.write(body2); - socket.uncork(); - request.onBodySent(body2); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; - } + writeBuffer(abort, body2, client, request2, socket, contentLength, header, expectsPayload); } else if (util.isBlobLike(body2)) { if (typeof body2.stream === 'function') { - writeIterable({ body: body2.stream(), client, request, socket, contentLength, header, expectsPayload }); + writeIterable(abort, body2.stream(), client, request2, socket, contentLength, header, expectsPayload); } else { - writeBlob({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + writeBlob(abort, body2, client, request2, socket, contentLength, header, expectsPayload); } } else if (util.isStream(body2)) { - writeStream({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + writeStream(abort, body2, client, request2, socket, contentLength, header, expectsPayload); } else if (util.isIterable(body2)) { - writeIterable({ body: body2, client, request, socket, contentLength, header, expectsPayload }); + writeIterable(abort, body2, client, request2, socket, contentLength, header, expectsPayload); } else { assert(false); } return true; } - function writeH2(client, session, request) { - const { body: body2, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request; - let headers; - if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); - else headers = reqHeaders; - if (upgrade) { - errorRequest(client, request, new Error('Upgrade not supported for H2')); - return false; - } - try { - request.onConnect(err => { - if (request.aborted || request.completed) { - return; + function writeStream(abort, body2, client, request2, socket, contentLength, header, expectsPayload) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); + let finished = false; + const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header }); + const onData = function (chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); } - errorRequest(client, request, err || new RequestAbortedError()); - }); - } catch (err) { - errorRequest(client, request, err); - } - if (request.aborted) { - return false; - } - let stream; - const h2State = client[kHTTP2SessionState]; - headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; - headers[HTTP2_HEADER_METHOD] = method; - if (method === 'CONNECT') { - session.ref(); - stream = session.request(headers, { endStream: false, signal }); - if (stream.id && !stream.pending) { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - } else { - stream.once('ready', () => { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - }); + } catch (err) { + util.destroy(this, err); } - stream.once('close', () => { - h2State.openStreams -= 1; - if (h2State.openStreams === 0) session.unref(); + }; + const onDrain = function () { + if (finished) { + return; + } + if (body2.resume) { + body2.resume(); + } + }; + const onClose = function () { + queueMicrotask(() => { + body2.removeListener('error', onFinished); }); - return true; - } - headers[HTTP2_HEADER_PATH] = path; - headers[HTTP2_HEADER_SCHEME] = 'https'; - const expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; - if (body2 && typeof body2.read === 'function') { - body2.read(0); - } - let contentLength = util.bodyLength(body2); - if (contentLength == null) { - contentLength = request.contentLength; - } - if (contentLength === 0 || !expectsPayload) { - contentLength = null; - } - if ( - shouldSendContentLength(method) && - contentLength > 0 && - request.contentLength != null && - request.contentLength !== contentLength - ) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; + if (!finished) { + const err = new RequestAbortedError(); + queueMicrotask(() => onFinished(err)); } - process.emitWarning(new RequestContentLengthMismatchError()); - } - if (contentLength != null) { - assert(body2, 'no body must not have content length'); - headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; - } - session.ref(); - const shouldEndStream = method === 'GET' || method === 'HEAD'; - if (expectContinue) { - headers[HTTP2_HEADER_EXPECT] = '100-continue'; - stream = session.request(headers, { endStream: shouldEndStream, signal }); - stream.once('continue', writeBodyH2); - } else { - stream = session.request(headers, { - endStream: shouldEndStream, - signal - }); - writeBodyH2(); - } - ++h2State.openStreams; - stream.once('response', headers2 => { - const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2; - if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { - stream.pause(); - } - }); - stream.once('end', () => { - request.onComplete([]); - }); - stream.on('data', chunk => { - if (request.onData(chunk) === false) { - stream.pause(); - } - }); - stream.once('close', () => { - h2State.openStreams -= 1; - if (h2State.openStreams === 0) { - session.unref(); - } - }); - stream.once('error', function (err) { - if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - stream.once('frameError', (type, code) => { - const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); - errorRequest(client, request, err); - if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - return true; - function writeBodyH2() { - if (!body2) { - request.onRequestSent(); - } else if (util.isBuffer(body2)) { - assert(contentLength === body2.byteLength, 'buffer body must have content length'); - stream.cork(); - stream.write(body2); - stream.uncork(); - stream.end(); - request.onBodySent(body2); - request.onRequestSent(); - } else if (util.isBlobLike(body2)) { - if (typeof body2.stream === 'function') { - writeIterable({ - client, - request, - contentLength, - h2stream: stream, - expectsPayload, - body: body2.stream(), - socket: client[kSocket], - header: '' - }); - } else { - writeBlob({ - body: body2, - client, - request, - contentLength, - expectsPayload, - h2stream: stream, - header: '', - socket: client[kSocket] - }); - } - } else if (util.isStream(body2)) { - writeStream({ - body: body2, - client, - request, - contentLength, - expectsPayload, - socket: client[kSocket], - h2stream: stream, - header: '' - }); - } else if (util.isIterable(body2)) { - writeIterable({ - body: body2, - client, - request, - contentLength, - expectsPayload, - header: '', - h2stream: stream, - socket: client[kSocket] - }); - } else { - assert(false); - } - } - } - function writeStream({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); - if (client[kHTTPConnVersion] === 'h2') { - let onPipeData = function (chunk) { - request.onBodySent(chunk); - }; - const pipe = pipeline(body2, h2stream, err => { - if (err) { - util.destroy(body2, err); - util.destroy(h2stream, err); - } else { - request.onRequestSent(); - } - }); - pipe.on('data', onPipeData); - pipe.once('end', () => { - pipe.removeListener('data', onPipeData); - util.destroy(pipe); - }); - return; - } - let finished = false; - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); - const onData = function (chunk) { - if (finished) { - return; - } - try { - if (!writer.write(chunk) && this.pause) { - this.pause(); - } - } catch (err) { - util.destroy(this, err); - } - }; - const onDrain = function () { - if (finished) { - return; - } - if (body2.resume) { - body2.resume(); - } - }; - const onAbort = function () { - if (finished) { - return; - } - const err = new RequestAbortedError(); - queueMicrotask(() => onFinished(err)); }; const onFinished = function (err) { if (finished) { @@ -8626,11 +6678,7 @@ upgrade: ${upgrade}\r finished = true; assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)); socket.off('drain', onDrain).off('error', onFinished); - body2 - .removeListener('data', onData) - .removeListener('end', onFinished) - .removeListener('error', onFinished) - .removeListener('close', onAbort); + body2.removeListener('data', onData).removeListener('end', onFinished).removeListener('close', onClose); if (!err) { try { writer.end(); @@ -8645,25 +6693,40 @@ upgrade: ${upgrade}\r util.destroy(body2); } }; - body2.on('data', onData).on('end', onFinished).on('error', onFinished).on('close', onAbort); + body2.on('data', onData).on('end', onFinished).on('error', onFinished).on('close', onClose); if (body2.resume) { body2.resume(); } socket.on('drain', onDrain).on('error', onFinished); + if (body2.errorEmitted ?? body2.errored) { + setImmediate(() => onFinished(body2.errored)); + } else if (body2.endEmitted ?? body2.readableEnded) { + setImmediate(() => onFinished(null)); + } + if (body2.closeEmitted ?? body2.closed) { + setImmediate(onClose); + } } - async function writeBlob({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength === body2.size, 'blob body must have content length'); - const isH2 = client[kHTTPConnVersion] === 'h2'; + function writeBuffer(abort, body2, client, request2, socket, contentLength, header, expectsPayload) { try { - if (contentLength != null && contentLength !== body2.size) { - throw new RequestContentLengthMismatchError(); - } - const buffer = Buffer.from(await body2.arrayBuffer()); - if (isH2) { - h2stream.cork(); - h2stream.write(buffer); - h2stream.uncork(); - } else { + if (!body2) { + if (contentLength === 0) { + socket.write( + `${header}content-length: 0\r +\r +`, + 'latin1' + ); + } else { + assert(contentLength === null, 'no body must not have content length'); + socket.write( + `${header}\r +`, + 'latin1' + ); + } + } else if (util.isBuffer(body2)) { + assert(contentLength === body2.byteLength, 'buffer body must have content length'); socket.cork(); socket.write( `${header}content-length: ${contentLength}\r @@ -8671,20 +6734,46 @@ upgrade: ${upgrade}\r `, 'latin1' ); - socket.write(buffer); + socket.write(body2); socket.uncork(); + request2.onBodySent(body2); + if (!expectsPayload && request2.reset !== false) { + socket[kReset] = true; + } } - request.onBodySent(buffer); - request.onRequestSent(); - if (!expectsPayload) { + request2.onRequestSent(); + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeBlob(abort, body2, client, request2, socket, contentLength, header, expectsPayload) { + assert(contentLength === body2.size, 'blob body must have content length'); + try { + if (contentLength != null && contentLength !== body2.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body2.arrayBuffer()); + socket.cork(); + socket.write( + `${header}content-length: ${contentLength}\r +\r +`, + 'latin1' + ); + socket.write(buffer); + socket.uncork(); + request2.onBodySent(buffer); + request2.onRequestSent(); + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } - resume(client); + client[kResume](); } catch (err) { - util.destroy(isH2 ? h2stream : socket, err); + abort(err); } } - async function writeIterable({ h2stream, body: body2, client, request, socket, contentLength, header, expectsPayload }) { + async function writeIterable(abort, body2, client, request2, socket, contentLength, header, expectsPayload) { assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined'); let callback = null; function onDrain() { @@ -8703,30 +6792,8 @@ upgrade: ${upgrade}\r callback = resolve; } }); - if (client[kHTTPConnVersion] === 'h2') { - h2stream.on('close', onDrain).on('drain', onDrain); - try { - for await (const chunk of body2) { - if (socket[kError]) { - throw socket[kError]; - } - const res = h2stream.write(chunk); - request.onBodySent(chunk); - if (!res) { - await waitForDrain(); - } - } - } catch (err) { - h2stream.destroy(err); - } finally { - request.onRequestSent(); - h2stream.end(); - h2stream.off('close', onDrain).off('drain', onDrain); - } - return; - } socket.on('close', onDrain).on('drain', onDrain); - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header }); try { for await (const chunk of body2) { if (socket[kError]) { @@ -8744,18 +6811,19 @@ upgrade: ${upgrade}\r } } var AsyncWriter = class { - constructor({ socket, request, contentLength, client, expectsPayload, header }) { + constructor({ abort, socket, request: request2, contentLength, client, expectsPayload, header }) { this.socket = socket; - this.request = request; + this.request = request2; this.contentLength = contentLength; this.client = client; this.bytesWritten = 0; this.expectsPayload = expectsPayload; this.header = header; + this.abort = abort; socket[kWriting] = true; } write(chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this; + const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this; if (socket[kError]) { throw socket[kError]; } @@ -8774,7 +6842,7 @@ upgrade: ${upgrade}\r } socket.cork(); if (bytesWritten === 0) { - if (!expectsPayload) { + if (!expectsPayload && request2.reset !== false) { socket[kReset] = true; } if (contentLength === null) { @@ -8803,7 +6871,7 @@ ${len.toString(16)}\r this.bytesWritten += len; const ret = socket.write(chunk); socket.uncork(); - request.onBodySent(chunk); + request2.onBodySent(chunk); if (!ret) { if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { if (socket[kParser].timeout.refresh) { @@ -8814,8 +6882,8 @@ ${len.toString(16)}\r return ret; } end() { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this; - request.onRequestSent(); + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this; + request2.onRequestSent(); socket[kWriting] = false; if (socket[kError]) { throw socket[kError]; @@ -8853,5703 +6921,7876 @@ ${len.toString(16)}\r socket[kParser].timeout.refresh(); } } - resume(client); + client[kResume](); } destroy(err) { - const { socket, client } = this; + const { socket, client, abort } = this; socket[kWriting] = false; if (err) { assert(client[kRunning] <= 1, 'pipeline should only contain this request'); - util.destroy(socket, err); + abort(err); } } }; - function errorRequest(client, request, err) { - try { - request.onError(err); - assert(request.aborted); - } catch (err2) { - client.emit('error', err2); - } - } - module2.exports = Client; + module2.exports = connectH1; } }); -// node_modules/undici/lib/node/fixed-queue.js -var require_fixed_queue = __commonJS({ - 'node_modules/undici/lib/node/fixed-queue.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/client-h2.js +var require_client_h2 = __commonJS({ + 'node_modules/undici/lib/dispatcher/client-h2.js'(exports2, module2) { 'use strict'; - var kSize = 2048; - var kMask = kSize - 1; - var FixedCircularBuffer = class { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; - } - isEmpty() { - return this.top === this.bottom; - } - isFull() { - return ((this.top + 1) & kMask) === this.bottom; - } - push(data) { - this.list[this.top] = data; - this.top = (this.top + 1) & kMask; - } - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === void 0) return null; - this.list[this.bottom] = void 0; - this.bottom = (this.bottom + 1) & kMask; - return nextItem; + var assert = require('node:assert'); + var { pipeline } = require('node:stream'); + var util = require_util(); + var { RequestContentLengthMismatchError, RequestAbortedError, SocketError, InformationalError } = require_errors(); + var { + kUrl, + kReset, + kClient, + kRunning, + kPending, + kQueue, + kPendingIdx, + kRunningIdx, + kError, + kSocket, + kStrictContentLength, + kOnError, + kMaxConcurrentStreams, + kHTTP2Session, + kResume, + kSize, + kHTTPContext + } = require_symbols(); + var kOpenStreams = Symbol('open streams'); + var extractBody; + var h2ExperimentalWarned = false; + var http2; + try { + http2 = require('node:http2'); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS } - }; - module2.exports = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); + } = http2; + function parseH2Headers(headers) { + const result = []; + for (const [name, value] of Object.entries(headers)) { + if (Array.isArray(value)) { + for (const subvalue of value) { + result.push(Buffer.from(name), Buffer.from(subvalue)); + } + } else { + result.push(Buffer.from(name), Buffer.from(value)); + } } - isEmpty() { - return this.head.isEmpty(); + return result; + } + async function connectH2(client, socket) { + client[kSocket] = socket; + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }); } - push(data) { - if (this.head.isFull()) { - this.head = this.head.next = new FixedCircularBuffer(); + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kMaxConcurrentStreams] + }); + session[kOpenStreams] = 0; + session[kClient] = client; + session[kSocket] = socket; + util.addListener(session, 'error', onHttp2SessionError); + util.addListener(session, 'frameError', onHttp2FrameError); + util.addListener(session, 'end', onHttp2SessionEnd); + util.addListener(session, 'goaway', onHTTP2GoAway); + util.addListener(session, 'close', function () { + const { [kClient]: client2 } = this; + const { [kSocket]: socket2 } = client2; + const err = this[kSocket][kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket2)); + client2[kHTTP2Session] = null; + if (client2.destroyed) { + assert(client2[kPending] === 0); + const requests = client2[kQueue].splice(client2[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client2, request2, err); + } } - this.head.push(data); - } - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - this.tail = tail.next; + }); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + util.addListener(socket, 'error', function (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + this[kError] = err; + this[kClient][kOnError](err); + }); + util.addListener(socket, 'end', function () { + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + }); + util.addListener(socket, 'close', function () { + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + client[kSocket] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + client[kResume](); + }); + let closed = false; + socket.on('close', () => { + closed = true; + }); + return { + version: 'h2', + defaultPipelining: Infinity, + write(...args) { + return writeH2(client, ...args); + }, + resume() { + resumeH2(client); + }, + destroy(err, callback) { + if (closed) { + queueMicrotask(callback); + } else { + socket.destroy(err).on('close', callback); + } + }, + get destroyed() { + return socket.destroyed; + }, + busy() { + return false; + } + }; + } + function resumeH2(client) { + const socket = client[kSocket]; + if (socket?.destroyed === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); } - return next; - } - }; - } -}); - -// node_modules/undici/lib/pool-stats.js -var require_pool_stats = __commonJS({ - 'node_modules/undici/lib/pool-stats.js'(exports2, module2) { - var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); - var kPool = Symbol('pool'); - var PoolStats = class { - constructor(pool) { - this[kPool] = pool; - } - get connected() { - return this[kPool][kConnected]; - } - get free() { - return this[kPool][kFree]; } - get pending() { - return this[kPool][kPending]; + } + function onHttp2SessionError(err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + this[kSocket][kError] = err; + this[kClient][kOnError](err); + } + function onHttp2FrameError(type, code, id) { + if (id === 0) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + this[kSocket][kError] = err; + this[kClient][kOnError](err); } - get queued() { - return this[kPool][kQueued]; + } + function onHttp2SessionEnd() { + const err = new SocketError('other side closed', util.getSocketInfo(this[kSocket])); + this.destroy(err); + util.destroy(this[kSocket], err); + } + function onHTTP2GoAway(code) { + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; } - get running() { - return this[kPool][kRunning]; + util.destroy(this[kSocket], err); + if (client[kRunningIdx] < client[kQueue].length) { + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; } - get size() { - return this[kPool][kSize]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + client[kResume](); + } + function shouldSendContentLength(method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; + } + function writeH2(client, request2) { + const session = client[kHTTP2Session]; + const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2; + let { body: body2 } = request2; + if (upgrade) { + util.errorRequest(client, request2, new Error('Upgrade not supported for H2')); + return false; } - }; - module2.exports = PoolStats; - } -}); - -// node_modules/undici/lib/pool-base.js -var require_pool_base = __commonJS({ - 'node_modules/undici/lib/pool-base.js'(exports2, module2) { - 'use strict'; - var DispatcherBase = require_dispatcher_base(); - var FixedQueue = require_fixed_queue(); - var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); - var PoolStats = require_pool_stats(); - var kClients = Symbol('clients'); - var kNeedDrain = Symbol('needDrain'); - var kQueue = Symbol('queue'); - var kClosedResolve = Symbol('closed resolve'); - var kOnDrain = Symbol('onDrain'); - var kOnConnect = Symbol('onConnect'); - var kOnDisconnect = Symbol('onDisconnect'); - var kOnConnectionError = Symbol('onConnectionError'); - var kGetDispatcher = Symbol('get dispatcher'); - var kAddClient = Symbol('add client'); - var kRemoveClient = Symbol('remove client'); - var kStats = Symbol('stats'); - var PoolBase = class extends DispatcherBase { - constructor() { - super(); - this[kQueue] = new FixedQueue(); - this[kClients] = []; - this[kQueued] = 0; - const pool = this; - this[kOnDrain] = function onDrain(origin, targets) { - const queue = pool[kQueue]; - let needDrain = false; - while (!needDrain) { - const item = queue.shift(); - if (!item) { - break; + const headers = {}; + for (let n = 0; n < reqHeaders.length; n += 2) { + const key = reqHeaders[n + 0]; + const val = reqHeaders[n + 1]; + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (headers[key]) { + headers[key] += `,${val[i]}`; + } else { + headers[key] = val[i]; } - pool[kQueued]--; - needDrain = !this.dispatch(item.opts, item.handler); - } - this[kNeedDrain] = needDrain; - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false; - pool.emit('drain', origin, [pool, ...targets]); - } - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise.all(pool[kClients].map(c => c.close())).then(pool[kClosedResolve]); } - }; - this[kOnConnect] = (origin, targets) => { - pool.emit('connect', origin, [pool, ...targets]); - }; - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit('disconnect', origin, [pool, ...targets], err); - }; - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit('connectionError', origin, [pool, ...targets], err); - }; - this[kStats] = new PoolStats(this); - } - get [kBusy]() { - return this[kNeedDrain]; - } - get [kConnected]() { - return this[kClients].filter(client => client[kConnected]).length; - } - get [kFree]() { - return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length; - } - get [kPending]() { - let ret = this[kQueued]; - for (const { [kPending]: pending } of this[kClients]) { - ret += pending; + } else { + headers[key] = val; } - return ret; } - get [kRunning]() { - let ret = 0; - for (const { [kRunning]: running } of this[kClients]) { - ret += running; + let stream; + const { hostname, port } = client[kUrl]; + headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ''}`; + headers[HTTP2_HEADER_METHOD] = method; + const abort = err => { + if (request2.aborted || request2.completed) { + return; } - return ret; - } - get [kSize]() { - let ret = this[kQueued]; - for (const { [kSize]: size } of this[kClients]) { - ret += size; + err = err || new RequestAbortedError(); + util.errorRequest(client, request2, err); + if (stream != null) { + util.destroy(stream, err); } - return ret; + util.destroy(body2, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); + }; + try { + request2.onConnect(abort); + } catch (err) { + util.errorRequest(client, request2, err); } - get stats() { - return this[kStats]; + if (request2.aborted) { + return false; } - async [kClose]() { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map(c => c.close())); + if (method === 'CONNECT') { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request2.onUpgrade(null, null, stream); + ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; } else { - return new Promise(resolve => { - this[kClosedResolve] = resolve; + stream.once('ready', () => { + request2.onUpgrade(null, null, stream); + ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; }); } + stream.once('close', () => { + session[kOpenStreams] -= 1; + if (session[kOpenStreams] === 0) session.unref(); + }); + return true; } - async [kDestroy](err) { - while (true) { - const item = this[kQueue].shift(); - if (!item) { - break; - } - item.handler.onError(err); - } - return Promise.all(this[kClients].map(c => c.destroy(err))); + headers[HTTP2_HEADER_PATH] = path; + headers[HTTP2_HEADER_SCHEME] = 'https'; + const expectsPayload = method === 'PUT' || method === 'POST' || method === 'PATCH'; + if (body2 && typeof body2.read === 'function') { + body2.read(0); } - [kDispatch](opts, handler) { - const dispatcher = this[kGetDispatcher](); - if (!dispatcher) { - this[kNeedDrain] = true; - this[kQueue].push({ opts, handler }); - this[kQueued]++; - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true; - this[kNeedDrain] = !this[kGetDispatcher](); - } - return !this[kNeedDrain]; + let contentLength = util.bodyLength(body2); + if (util.isFormDataLike(body2)) { + extractBody ??= require_body().extractBody; + const [bodyStream, contentType] = extractBody(body2); + headers['content-type'] = contentType; + body2 = bodyStream.stream; + contentLength = bodyStream.length; } - [kAddClient](client) { - client - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]); - this[kClients].push(client); - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]); - } - }); + if (contentLength == null) { + contentLength = request2.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if ( + shouldSendContentLength(method) && + contentLength > 0 && + request2.contentLength != null && + request2.contentLength !== contentLength + ) { + if (client[kStrictContentLength]) { + util.errorRequest(client, request2, new RequestContentLengthMismatchError()); + return false; } - return this; + process.emitWarning(new RequestContentLengthMismatchError()); } - [kRemoveClient](client) { - client.close(() => { - const idx = this[kClients].indexOf(client); - if (idx !== -1) { - this[kClients].splice(idx, 1); - } + if (contentLength != null) { + assert(body2, 'no body must not have content length'); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === 'GET' || method === 'HEAD' || body2 === null; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue'; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once('continue', writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal }); - this[kNeedDrain] = this[kClients].some( - dispatcher => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true - ); + writeBodyH2(); } - }; - module2.exports = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher - }; - } -}); - -// node_modules/undici/lib/pool.js -var require_pool = __commonJS({ - 'node_modules/undici/lib/pool.js'(exports2, module2) { - 'use strict'; - var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = require_pool_base(); - var Client = require_client(); - var { InvalidArgumentError } = require_errors(); - var util = require_util(); - var { kUrl, kInterceptors } = require_symbols(); - var buildConnector = require_connect(); - var kOptions = Symbol('options'); - var kConnections = Symbol('connections'); - var kFactory = Symbol('factory'); - function defaultFactory(origin, opts) { - return new Client(origin, opts); - } - var Pool = class extends PoolBase { - constructor( - origin, - { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - allowH2, - ...options - } = {} - ) { - super(); - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError('invalid connections'); + ++session[kOpenStreams]; + stream.once('response', headers2 => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2; + request2.onResponseStarted(); + if (request2.aborted) { + const err = new RequestAbortedError(); + util.errorRequest(client, request2, err); + util.destroy(stream, err); + return; } - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.'); + if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), '') === false) { + stream.pause(); } - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object'); + stream.on('data', chunk => { + if (request2.onData(chunk) === false) { + stream.pause(); + } + }); + }); + stream.once('end', () => { + if (stream.state?.state == null || stream.state.state < 6) { + request2.onComplete([]); } - if (typeof connect !== 'function') { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), - ...connect - }); + if (session[kOpenStreams] === 0) { + session.unref(); } - this[kInterceptors] = - options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) - ? options.interceptors.Pool - : []; - this[kConnections] = connections || null; - this[kUrl] = util.parseOrigin(origin); - this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; - this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; - this[kFactory] = factory; - } - [kGetDispatcher]() { - let dispatcher = this[kClients].find(dispatcher2 => !dispatcher2[kNeedDrain]); - if (dispatcher) { - return dispatcher; + abort(new InformationalError('HTTP/2: stream half-closed (remote)')); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); + }); + stream.once('close', () => { + session[kOpenStreams] -= 1; + if (session[kOpenStreams] === 0) { + session.unref(); } - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]); - this[kAddClient](dispatcher); + }); + stream.once('error', function (err) { + abort(err); + }); + stream.once('frameError', (type, code) => { + abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)); + }); + return true; + function writeBodyH2() { + if (!body2 || contentLength === 0) { + writeBuffer(abort, stream, null, client, request2, client[kSocket], contentLength, expectsPayload); + } else if (util.isBuffer(body2)) { + writeBuffer(abort, stream, body2, client, request2, client[kSocket], contentLength, expectsPayload); + } else if (util.isBlobLike(body2)) { + if (typeof body2.stream === 'function') { + writeIterable(abort, stream, body2.stream(), client, request2, client[kSocket], contentLength, expectsPayload); + } else { + writeBlob(abort, stream, body2, client, request2, client[kSocket], contentLength, expectsPayload); + } + } else if (util.isStream(body2)) { + writeStream(abort, client[kSocket], expectsPayload, stream, body2, client, request2, contentLength); + } else if (util.isIterable(body2)) { + writeIterable(abort, stream, body2, client, request2, client[kSocket], contentLength, expectsPayload); + } else { + assert(false); } - return dispatcher; } - }; - module2.exports = Pool; - } -}); - -// node_modules/undici/lib/balanced-pool.js -var require_balanced_pool = __commonJS({ - 'node_modules/undici/lib/balanced-pool.js'(exports2, module2) { - 'use strict'; - var { BalancedPoolMissingUpstreamError, InvalidArgumentError } = require_errors(); - var { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = require_pool_base(); - var Pool = require_pool(); - var { kUrl, kInterceptors } = require_symbols(); - var { parseOrigin } = require_util(); - var kFactory = Symbol('factory'); - var kOptions = Symbol('options'); - var kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor'); - var kCurrentWeight = Symbol('kCurrentWeight'); - var kIndex = Symbol('kIndex'); - var kWeight = Symbol('kWeight'); - var kMaxWeightPerServer = Symbol('kMaxWeightPerServer'); - var kErrorPenalty = Symbol('kErrorPenalty'); - function getGreatestCommonDivisor(a, b) { - if (b === 0) return a; - return getGreatestCommonDivisor(b, a % b); - } - function defaultFactory(origin, opts) { - return new Pool(origin, opts); } - var BalancedPool = class extends PoolBase { - constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super(); - this[kOptions] = opts; - this[kIndex] = -1; - this[kCurrentWeight] = 0; - this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; - this[kErrorPenalty] = this[kOptions].errorPenalty || 15; - if (!Array.isArray(upstreams)) { - upstreams = [upstreams]; - } - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.'); + function writeBuffer(abort, h2stream, body2, client, request2, socket, contentLength, expectsPayload) { + try { + if (body2 != null && util.isBuffer(body2)) { + assert(contentLength === body2.byteLength, 'buffer body must have content length'); + h2stream.cork(); + h2stream.write(body2); + h2stream.uncork(); + h2stream.end(); + request2.onBodySent(body2); } - this[kInterceptors] = - opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) - ? opts.interceptors.BalancedPool - : []; - this[kFactory] = factory; - for (const upstream of upstreams) { - this.addUpstream(upstream); + if (!expectsPayload) { + socket[kReset] = true; } - this._updateBalancedPoolStats(); + request2.onRequestSent(); + client[kResume](); + } catch (error) { + abort(error); } - addUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - if ( - this[kClients].find(pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true) - ) { - return this; - } - const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); - this[kAddClient](pool); - pool.on('connect', () => { - pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); - }); - pool.on('connectionError', () => { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - }); - pool.on('disconnect', (...args) => { - const err = args[2]; - if (err && err.code === 'UND_ERR_SOCKET') { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); + } + function writeStream(abort, socket, expectsPayload, h2stream, body2, client, request2, contentLength) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined'); + const pipe = pipeline(body2, h2stream, err => { + if (err) { + util.destroy(pipe, err); + abort(err); + } else { + util.removeAllListeners(pipe); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; } - }); - for (const client of this[kClients]) { - client[kWeight] = this[kMaxWeightPerServer]; - } - this._updateBalancedPoolStats(); - return this; - } - _updateBalancedPoolStats() { - this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0); - } - removeUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - const pool = this[kClients].find( - pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true - ); - if (pool) { - this[kRemoveClient](pool); + client[kResume](); } - return this; - } - get upstreams() { - return this[kClients] - .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) - .map(p => p[kUrl].origin); + }); + util.addListener(pipe, 'data', onPipeData); + function onPipeData(chunk) { + request2.onBodySent(chunk); } - [kGetDispatcher]() { - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError(); + } + async function writeBlob(abort, h2stream, body2, client, request2, socket, contentLength, expectsPayload) { + assert(contentLength === body2.size, 'blob body must have content length'); + try { + if (contentLength != null && contentLength !== body2.size) { + throw new RequestContentLengthMismatchError(); } - const dispatcher = this[kClients].find( - dispatcher2 => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true - ); - if (!dispatcher) { - return; + const buffer = Buffer.from(await body2.arrayBuffer()); + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + h2stream.end(); + request2.onBodySent(buffer); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; } - const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true); - if (allClientsBusy) { - return; + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeIterable(abort, h2stream, body2, client, request2, socket, contentLength, expectsPayload) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined'); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); } - let counter = 0; - let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]); - while (counter++ < this[kClients].length) { - this[kIndex] = (this[kIndex] + 1) % this[kClients].length; - const pool = this[kClients][this[kIndex]]; - if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { - maxWeightIndex = this[kIndex]; + } + const waitForDrain = () => + new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; } - if (this[kIndex] === 0) { - this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; - if (this[kCurrentWeight] <= 0) { - this[kCurrentWeight] = this[kMaxWeightPerServer]; - } + }); + h2stream.on('close', onDrain).on('drain', onDrain); + try { + for await (const chunk of body2) { + if (socket[kError]) { + throw socket[kError]; } - if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { - return pool; + const res = h2stream.write(chunk); + request2.onBodySent(chunk); + if (!res) { + await waitForDrain(); } } - this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; - this[kIndex] = maxWeightIndex; - return this[kClients][maxWeightIndex]; + h2stream.end(); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } finally { + h2stream.off('close', onDrain).off('drain', onDrain); } - }; - module2.exports = BalancedPool; + } + module2.exports = connectH2; } }); -// node_modules/undici/lib/compat/dispatcher-weakref.js -var require_dispatcher_weakref = __commonJS({ - 'node_modules/undici/lib/compat/dispatcher-weakref.js'(exports2, module2) { +// node_modules/undici/lib/handler/redirect-handler.js +var require_redirect_handler = __commonJS({ + 'node_modules/undici/lib/handler/redirect-handler.js'(exports2, module2) { 'use strict'; - var { kConnected, kSize } = require_symbols(); - var CompatWeakRef = class { - constructor(value) { - this.value = value; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require('node:assert'); + var { InvalidArgumentError } = require_errors(); + var EE = require('node:events'); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol('body'); + var BodyAsyncIterable = class { + constructor(body2) { + this[kBody] = body2; + this[kBodyUsed] = false; } - deref() { - return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], 'disturbed'); + this[kBodyUsed] = true; + yield* this[kBody]; } }; - var CompatFinalizer = class { - constructor(finalizer) { - this.finalizer = finalizer; - } - register(dispatcher, key) { - if (dispatcher.on) { - dispatcher.on('disconnect', () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key); - } - }); + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler2) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + util.validateHandler(handler2, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler2; + this.history = []; + this.redirectionLimitReached = false; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on('data', function () { + assert(false); + }); + } + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = 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) && + util.isIterable(this.opts.body) + ) { + this.opts.body = new BodyAsyncIterable(this.opts.body); } } - }; - module2.exports = function () { - if (process.env.NODE_V8_COVERAGE) { - return { - WeakRef: CompatWeakRef, - FinalizationRegistry: CompatFinalizer - }; + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); } - return { - WeakRef: global.WeakRef || CompatWeakRef, - FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer - }; - }; - } -}); - -// node_modules/undici/lib/agent.js -var require_agent = __commonJS({ - 'node_modules/undici/lib/agent.js'(exports2, module2) { - 'use strict'; - var { InvalidArgumentError } = require_errors(); - var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); - var DispatcherBase = require_dispatcher_base(); - var Pool = require_pool(); - var Client = require_client(); - var util = require_util(); - var createRedirectInterceptor = require_redirectInterceptor(); - var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); - var kOnConnect = Symbol('onConnect'); - var kOnDisconnect = Symbol('onDisconnect'); - var kOnConnectionError = Symbol('onConnectionError'); - var kMaxRedirections = Symbol('maxRedirections'); - var kOnDrain = Symbol('onDrain'); - var kFactory = Symbol('factory'); - var kFinalizer = Symbol('finalizer'); - var kOptions = Symbol('options'); - function defaultFactory(origin, opts) { - return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); - } - var Agent = class extends DispatcherBase { - constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.'); - } - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object'); + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = + this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers); + 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 (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError('maxRedirections must be a positive number'); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); } - if (connect && typeof connect !== 'function') { - connect = { ...connect }; + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); } - this[kInterceptors] = - options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) - ? options.interceptors.Agent - : [createRedirectInterceptor({ maxRedirections })]; - this[kOptions] = { ...util.deepClone(options), connect }; - this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; - this[kMaxRedirections] = maxRedirections; - this[kFactory] = factory; - this[kClients] = /* @__PURE__ */ new Map(); - this[kFinalizer] = new FinalizationRegistry( - /* istanbul ignore next: gc is undeterministic */ - key => { - const ref = this[kClients].get(key); - if (ref !== void 0 && ref.deref() === void 0) { - this[kClients].delete(key); - } - } + const { origin, pathname, search } = util.parseURL( + new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)) ); - const agent = this; - this[kOnDrain] = (origin, targets) => { - agent.emit('drain', origin, [agent, ...targets]); - }; - this[kOnConnect] = (origin, targets) => { - agent.emit('connect', origin, [agent, ...targets]); - }; - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit('disconnect', origin, [agent, ...targets], err); - }; - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit('connectionError', origin, [agent, ...targets], err); - }; + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET'; + this.opts.body = null; + } } - get [kRunning]() { - let ret = 0; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - ret += client[kRunning]; - } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); } - return ret; } - [kDispatch](opts, handler) { - let key; - if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { - key = String(opts.origin); + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); } else { - throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.'); + this.handler.onComplete(trailers); } - const ref = this[kClients].get(key); - let dispatcher = ref ? ref.deref() : null; - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]) - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]); - this[kClients].set(key, new WeakRef2(dispatcher)); - this[kFinalizer].register(dispatcher, key); + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); } - return dispatcher.dispatch(opts, handler); } - async [kClose]() { - const closePromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - closePromises.push(client.close()); - } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].length === 8 && util.headerNameToString(headers[i]) === 'location') { + return headers[i + 1]; } - await Promise.all(closePromises); } - async [kDestroy](err) { - const destroyPromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - destroyPromises.push(client.destroy(err)); + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host'; + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true; + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header); + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'; + } + return false; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); } } - await Promise.all(destroyPromises); + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert(headers == null, 'headers must be an object or an array'); } - }; - module2.exports = Agent; + return ret; + } + module2.exports = RedirectHandler; } }); -// node_modules/undici/lib/api/readable.js -var require_readable = __commonJS({ - 'node_modules/undici/lib/api/readable.js'(exports2, module2) { +// node_modules/undici/lib/interceptor/redirect-interceptor.js +var require_redirect_interceptor = __commonJS({ + 'node_modules/undici/lib/interceptor/redirect-interceptor.js'(exports2, module2) { 'use strict'; - var assert = require('assert'); - var { Readable } = require('stream'); - var { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require_errors(); + var RedirectHandler = require_redirect_handler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return dispatch => { + return function Intercept(opts, handler2) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler2); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler2); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/undici/lib/dispatcher/client.js +var require_client = __commonJS({ + 'node_modules/undici/lib/dispatcher/client.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var net = require('node:net'); + var http = require('node:http'); var util = require_util(); - var { ReadableStreamFrom, toUSVString } = require_util(); - var Blob2; - var kConsume = Symbol('kConsume'); - var kReading = Symbol('kReading'); - var kBody = Symbol('kBody'); - var kAbort = Symbol('abort'); - var kContentType = Symbol('kContentType'); - var noop = () => {}; - module2.exports = class BodyReadable extends Readable { - constructor({ - resume, - abort, - contentType = '', - highWaterMark = 64 * 1024 - // Same as nodejs fs streams. - }) { - super({ - autoDestroy: true, - read: resume, - highWaterMark - }); - this._readableState.dataEmitted = false; - this[kAbort] = abort; - this[kConsume] = null; - this[kBody] = null; - this[kContentType] = contentType; - this[kReading] = false; - } - destroy(err) { - if (this.destroyed) { - return this; + var { channels } = require_diagnostics(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, InformationalError, ClientDestroyedError } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kServerName, + kClient, + kBusy, + kConnect, + kResuming, + kRunning, + kPending, + kSize, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kOnError, + kHTTPContext, + kMaxConcurrentStreams, + kResume + } = require_symbols(); + var connectH1 = require_client_h1(); + var connectH2 = require_client_h2(); + var deprecatedInterceptorWarned = false; + var kClosedResolve = Symbol('kClosedResolve'); + var noop3 = () => {}; + function getPipelining(client) { + return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../../types/client.js').Client.Options} options + */ + constructor( + url, + { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + maxConcurrentStreams, + allowH2 + } = {} + ) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead'); } - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); + if (socketTimeout !== void 0) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead'); } - if (err) { - this[kAbort](); + if (requestTimeout !== void 0) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead'); } - return super.destroy(err); - } - emit(ev, ...args) { - if (ev === 'data') { - this._readableState.dataEmitted = true; - } else if (ev === 'error') { - this._readableState.errorEmitted = true; + if (idleTimeout !== void 0) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead'); } - return super.emit(ev, ...args); - } - on(ev, ...args) { - if (ev === 'data' || ev === 'readable') { - this[kReading] = true; + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead'); } - return super.on(ev, ...args); - } - addListener(ev, ...args) { - return this.on(ev, ...args); - } - off(ev, ...args) { - const ret = super.off(ev, ...args); - if (ev === 'data' || ev === 'readable') { - this[kReading] = this.listenerCount('data') > 0 || this.listenerCount('readable') > 0; + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize'); } - return ret; + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath'); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout'); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout'); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout'); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold'); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero'); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero'); + } + if (connect2 != null && typeof connect2 !== 'function' && typeof connect2 !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number'); + } + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address'); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number'); + } + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number'); + } + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value'); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0'); + } + if (typeof connect2 !== 'function') { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect2 + }); + } + if (interceptors?.Client && Array.isArray(interceptors.Client)) { + this[kInterceptors] = interceptors.Client; + if (!deprecatedInterceptorWarned) { + deprecatedInterceptorWarned = true; + process.emitWarning('Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.', { + code: 'UNDICI-CLIENT-INTERCEPTOR-DEPRECATED' + }); + } + } else { + this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })]; + } + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100; + this[kHTTPContext] = null; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + this[kResume] = sync => resume(this, sync); + this[kOnError] = err => onError(this, err); } - removeListener(ev, ...args) { - return this.off(ev, ...args); + get pipelining() { + return this[kPipelining]; } - push(chunk) { - if (this[kConsume] && chunk !== null && this.readableLength === 0) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true; - } - return super.push(chunk); + set pipelining(value) { + this[kPipelining] = value; + this[kResume](true); } - // https://fetch.spec.whatwg.org/#dom-body-text - async text() { - return consume(this, 'text'); + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; } - // https://fetch.spec.whatwg.org/#dom-body-json - async json() { - return consume(this, 'json'); + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; } - // https://fetch.spec.whatwg.org/#dom-body-blob - async blob() { - return consume(this, 'blob'); + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; } - // https://fetch.spec.whatwg.org/#dom-body-arraybuffer - async arrayBuffer() { - return consume(this, 'arrayBuffer'); + get [kConnected]() { + return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed; } - // https://fetch.spec.whatwg.org/#dom-body-formdata - async formData() { - throw new NotSupportedError(); + get [kBusy]() { + return Boolean(this[kHTTPContext]?.busy(null) || this[kSize] >= (getPipelining(this) || 1) || this[kPending] > 0); } - // https://fetch.spec.whatwg.org/#dom-body-bodyused - get bodyUsed() { - return util.isDisturbed(this); + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once('connect', cb); } - // https://fetch.spec.whatwg.org/#dom-body-body - get body() { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); - if (this[kConsume]) { - this[kBody].getReader(); - assert(this[kBody].locked); - } + [kDispatch](opts, handler2) { + const origin = opts.origin || this[kUrl].origin; + const request2 = new Request(origin, opts, handler2); + this[kQueue].push(request2); + if (this[kResuming]) { + } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) { + this[kResuming] = 1; + queueMicrotask(() => resume(this)); + } else { + this[kResume](true); } - return this[kBody]; + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; } - dump(opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; - const signal = opts && opts.signal; - if (signal) { - try { - if (typeof signal !== 'object' || !('aborted' in signal)) { - throw new InvalidArgumentError('signal must be an AbortSignal'); - } - util.throwIfAborted(signal); - } catch (err) { - return Promise.reject(err); + async [kClose]() { + return new Promise(resolve => { + if (this[kSize]) { + this[kClosedResolve] = resolve; + } else { + resolve(null); } - } - if (this.closed) { - return Promise.resolve(null); - } - return new Promise((resolve, reject) => { - const signalListenerCleanup = signal - ? util.addAbortListener(signal, () => { - this.destroy(); - }) - : noop; - this.on('close', function () { - signalListenerCleanup(); - if (signal && signal.aborted) { - reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })); - } else { - resolve(null); + }); + } + async [kDestroy](err) { + return new Promise(resolve => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(this, request2, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; } - }) - .on('error', noop) - .on('data', function (chunk) { - limit -= chunk.length; - if (limit <= 0) { - this.destroy(); - } - }) - .resume(); + resolve(null); + }; + if (this[kHTTPContext]) { + this[kHTTPContext].destroy(err, callback); + this[kHTTPContext] = null; + } else { + queueMicrotask(callback); + } + this[kResume](); }); } }; - function isLocked(self) { - return (self[kBody] && self[kBody].locked === true) || self[kConsume]; - } - function isUnusable(self) { - return util.isDisturbed(self) || isLocked(self); - } - async function consume(stream, type) { - if (isUnusable(stream)) { - throw new TypeError('unusable'); + var createRedirectInterceptor = require_redirect_interceptor(); + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== 'UND_ERR_INFO' && err.code !== 'UND_ERR_SOCKET') { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client, request2, err); + } + assert(client[kSize] === 0); } - assert(!stream[kConsume]); - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [] - }; - stream - .on('error', function (err) { - consumeFinish(this[kConsume], err); - }) - .on('close', function () { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()); - } - }); - process.nextTick(consumeStart, stream[kConsume]); - }); } - function consumeStart(consume2) { - if (consume2.body === null) { - return; - } - const { _readableState: state } = consume2.stream; - for (const chunk of state.buffer) { - consumePush(consume2, chunk); + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kHTTPContext]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === '[') { + const idx = hostname.indexOf(']'); + assert(idx !== -1); + const ip = hostname.substring(1, idx); + assert(net.isIP(ip)); + hostname = ip; } - if (state.endEmitted) { - consumeEnd(this[kConsume]); - } else { - consume2.stream.on('end', function () { - consumeEnd(this[kConsume]); + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] }); } - consume2.stream.resume(); - while (consume2.stream.read() != null) {} - } - function consumeEnd(consume2) { - const { type, body: body2, resolve, stream, length } = consume2; try { - if (type === 'text') { - resolve(toUSVString(Buffer.concat(body2))); - } else if (type === 'json') { - resolve(JSON.parse(Buffer.concat(body2))); - } else if (type === 'arrayBuffer') { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body2) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst.buffer); - } else if (type === 'blob') { - if (!Blob2) { - Blob2 = require('buffer').Blob; - } - resolve(new Blob2(body2, { type: stream[kContentType] })); + const socket = await new Promise((resolve, reject) => { + client[kConnector]( + { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + } + ); + }); + if (client.destroyed) { + util.destroy(socket.on('error', noop3), new ClientDestroyedError()); + return; } - consumeFinish(consume2); + assert(socket); + try { + client[kHTTPContext] = socket.alpnProtocol === 'h2' ? await connectH2(client, socket) : await connectH1(client, socket); + } catch (err) { + socket.destroy().on('error', noop3); + throw err; + } + client[kConnecting] = false; + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit('connect', client[kUrl], [client]); } catch (err) { - stream.destroy(err); + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request2 = client[kQueue][client[kPendingIdx]++]; + util.errorRequest(client, request2, err); + } + } else { + onError(client, err); + } + client.emit('connectionError', client[kUrl], [client], err); } + client[kResume](); } - function consumePush(consume2, chunk) { - consume2.length += chunk.length; - consume2.body.push(chunk); + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit('drain', client[kUrl], [client]); } - function consumeFinish(consume2, err) { - if (consume2.body === null) { + function resume(client, sync) { + if (client[kResuming] === 2) { return; } - if (err) { - consume2.reject(err); - } else { - consume2.resolve(); + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; } - consume2.type = null; - consume2.stream = null; - consume2.resolve = null; - consume2.reject = null; - consume2.length = 0; - consume2.body = null; } - } -}); - -// node_modules/undici/lib/api/util.js -var require_util3 = __commonJS({ - 'node_modules/undici/lib/api/util.js'(exports2, module2) { - var assert = require('assert'); - var { ResponseStatusCodeError } = require_errors(); - var { toUSVString } = require_util(); - async function getResolveErrorBodyCallback({ callback, body: body2, contentType, statusCode, statusMessage, headers }) { - assert(body2); - let chunks = []; - let limit = 0; - for await (const chunk of body2) { - chunks.push(chunk); - limit += chunk.length; - if (limit > 128 * 1024) { - chunks = null; - break; + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; } - } - if (statusCode === 204 || !contentType || !chunks) { - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, - statusCode, - headers - ) - ); - return; - } - try { - if (contentType.startsWith('application/json')) { - const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, - statusCode, - headers, - payload - ) - ); + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; return; } - if (contentType.startsWith('text/')) { - const payload = toUSVString(Buffer.concat(chunks)); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, - statusCode, - headers, - payload - ) - ); + if (client[kHTTPContext]) { + client[kHTTPContext].resume(); + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + queueMicrotask(() => emitDrain(client)); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { return; } - } catch (err) {} - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, - statusCode, - headers - ) - ); + if (client[kRunning] >= (getPipelining(client) || 1)) { + return; + } + const request2 = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request2.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request2.servername; + client[kHTTPContext]?.destroy(new InformationalError('servername changed'), () => { + client[kHTTPContext] = null; + resume(client); + }); + } + if (client[kConnecting]) { + return; + } + if (!client[kHTTPContext]) { + connect(client); + return; + } + if (client[kHTTPContext].destroyed) { + return; + } + if (client[kHTTPContext].busy(request2)) { + return; + } + if (!request2.aborted && client[kHTTPContext].write(request2)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } } - module2.exports = { getResolveErrorBodyCallback }; + module2.exports = Client; } }); -// node_modules/undici/lib/api/abort-signal.js -var require_abort_signal = __commonJS({ - 'node_modules/undici/lib/api/abort-signal.js'(exports2, module2) { - var { addAbortListener } = require_util(); - var { RequestAbortedError } = require_errors(); - var kListener = Symbol('kListener'); - var kSignal = Symbol('kSignal'); - function abort(self) { - if (self.abort) { - self.abort(); - } else { - self.onError(new RequestAbortedError()); +// node_modules/undici/lib/dispatcher/fixed-queue.js +var require_fixed_queue = __commonJS({ + 'node_modules/undici/lib/dispatcher/fixed-queue.js'(exports2, module2) { + 'use strict'; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; } - } - function addSignal(self, signal) { - self[kSignal] = null; - self[kListener] = null; - if (!signal) { - return; + isEmpty() { + return this.top === this.bottom; } - if (signal.aborted) { - abort(self); - return; + isFull() { + return ((this.top + 1) & kMask) === this.bottom; } - self[kSignal] = signal; - self[kListener] = () => { - abort(self); - }; - addAbortListener(self[kSignal], self[kListener]); - } - function removeSignal(self) { - if (!self[kSignal]) { - return; + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; } - if ('removeEventListener' in self[kSignal]) { - self[kSignal].removeEventListener('abort', self[kListener]); - } else { - self[kSignal].removeListener('abort', self[kListener]); + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) return null; + this.list[this.bottom] = void 0; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; } - self[kSignal] = null; - self[kListener] = null; - } - module2.exports = { - addSignal, - removeSignal }; - } -}); - -// node_modules/undici/lib/api/api-request.js -var require_api_request = __commonJS({ - 'node_modules/undici/lib/api/api-request.js'(exports2, module2) { - 'use strict'; - var Readable = require_readable(); - var { InvalidArgumentError, RequestAbortedError } = require_errors(); - var util = require_util(); - var { getResolveErrorBodyCallback } = require_util3(); - var { AsyncResource } = require('async_hooks'); - var { addSignal, removeSignal } = require_abort_signal(); - var RequestHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); - } - const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); - } - if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { - throw new InvalidArgumentError('invalid highWaterMark'); - } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); - } - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method'); - } - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback'); - } - super('UNDICI_REQUEST'); - } catch (err) { - if (util.isStream(body2)) { - util.destroy(body2.on('error', util.nop), err); - } - throw err; - } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.res = null; - this.abort = null; - this.body = body2; - this.trailers = {}; - this.context = null; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError; - this.highWaterMark = highWaterMark; - if (util.isStream(body2)) { - body2.on('error', err => { - this.onError(err); - }); - } - addSignal(this, signal); + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - this.abort = abort; - this.context = context; + isEmpty() { + return this.head.isEmpty(); } - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; - const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; - } - const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders['content-type']; - const body2 = new Readable({ resume, abort, contentType, highWaterMark }); - this.callback = null; - this.res = body2; - if (callback !== null) { - if (this.throwOnError && statusCode >= 400) { - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body: body2, - contentType, - statusCode, - statusMessage, - headers - }); - } else { - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body: body2, - context - }); - } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); } + this.head.push(data); } - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - onComplete(trailers) { - const { res } = this; - removeSignal(this); - util.parseHeaders(trailers, this.trailers); - res.push(null); - } - onError(err) { - const { res, callback, body: body2, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - if (res) { - this.res = null; - queueMicrotask(() => { - util.destroy(res, err); - }); - } - if (body2) { - this.body = null; - util.destroy(body2, err); + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; } + return next; } }; - function request(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - try { - this.dispatch(opts, new RequestHandler(opts, callback)); - } catch (err) { - if (typeof callback !== 'function') { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - module2.exports = request; - module2.exports.RequestHandler = RequestHandler; } }); -// node_modules/undici/lib/api/api-stream.js -var require_api_stream = __commonJS({ - 'node_modules/undici/lib/api/api-stream.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/pool-stats.js +var require_pool_stats = __commonJS({ + 'node_modules/undici/lib/dispatcher/pool-stats.js'(exports2, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol('pool'); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module2.exports = PoolStats; + } +}); + +// node_modules/undici/lib/dispatcher/pool-base.js +var require_pool_base = __commonJS({ + 'node_modules/undici/lib/dispatcher/pool-base.js'(exports2, module2) { 'use strict'; - var { finished, PassThrough } = require('stream'); - var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); - var util = require_util(); - var { getResolveErrorBodyCallback } = require_util3(); - var { AsyncResource } = require('async_hooks'); - var { addSignal, removeSignal } = require_abort_signal(); - var StreamHandler = class extends AsyncResource { - constructor(opts, factory, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); - } - const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError } = opts; - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); - } - if (typeof factory !== 'function') { - throw new InvalidArgumentError('invalid factory'); - } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); - } - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method'); + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol('clients'); + var kNeedDrain = Symbol('needDrain'); + var kQueue = Symbol('queue'); + var kClosedResolve = Symbol('closed resolve'); + var kOnDrain = Symbol('onDrain'); + var kOnConnect = Symbol('onConnect'); + var kOnDisconnect = Symbol('onDisconnect'); + var kOnConnectionError = Symbol('onConnectionError'); + var kGetDispatcher = Symbol('get dispatcher'); + var kAddClient = Symbol('add client'); + var kRemoveClient = Symbol('remove client'); + var kStats = Symbol('stats'); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); } - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback'); + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit('drain', origin, [pool, ...targets]); } - super('UNDICI_STREAM'); - } catch (err) { - if (util.isStream(body2)) { - util.destroy(body2.on('error', util.nop), err); + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map(c => c.close())).then(pool[kClosedResolve]); } - throw err; - } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.factory = factory; - this.callback = callback; - this.res = null; - this.abort = null; - this.context = null; - this.trailers = null; - this.body = body2; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError || false; - if (util.isStream(body2)) { - body2.on('error', err => { - this.onError(err); - }); + }; + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter(client => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; } - addSignal(this, signal); + return ret; } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; } - this.abort = abort; - this.context = context; + return ret; } - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { factory, opaque, context, callback, responseHeaders } = this; - const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; } - this.factory = null; - let res; - if (this.throwOnError && statusCode >= 400) { - const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders['content-type']; - res = new PassThrough(); - this.callback = null; - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body: res, - contentType, - statusCode, - statusMessage, - headers - }); + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + await Promise.all(this[kClients].map(c => c.close())); } else { - if (factory === null) { - return; - } - res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context - }); - if (!res || typeof res.write !== 'function' || typeof res.end !== 'function' || typeof res.on !== 'function') { - throw new InvalidReturnValueError('expected Writable'); - } - finished(res, { readable: false }, err => { - const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; - this.res = null; - if (err || !res2.readable) { - util.destroy(res2, err); - } - this.callback = null; - this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); - if (err) { - abort(); - } + await new Promise(resolve => { + this[kClosedResolve] = resolve; }); } - res.on('drain', resume); - this.res = res; - const needDrain = - res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; - return needDrain !== true; - } - onData(chunk) { - const { res } = this; - return res ? res.write(chunk) : true; } - onComplete(trailers) { - const { res } = this; - removeSignal(this); - if (!res) { - return; + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); } - this.trailers = util.parseHeaders(trailers); - res.end(); + await Promise.all(this[kClients].map(c => c.destroy(err))); } - onError(err) { - const { res, callback, opaque, body: body2 } = this; - removeSignal(this); - this.factory = null; - if (res) { - this.res = null; - util.destroy(res, err); - } else if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - if (body2) { - this.body = null; - util.destroy(body2, err); + [kDispatch](opts, handler2) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler: handler2 }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler2)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); } + return !this[kNeedDrain]; } - }; - function stream(opts, factory, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data); + [kAddClient](client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + queueMicrotask(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } }); - }); - } - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)); - } catch (err) { - if (typeof callback !== 'function') { - throw err; } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); + return this; } - } - module2.exports = stream; + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some( + dispatcher => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true + ); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; } }); -// node_modules/undici/lib/api/api-pipeline.js -var require_api_pipeline = __commonJS({ - 'node_modules/undici/lib/api/api-pipeline.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/pool.js +var require_pool = __commonJS({ + 'node_modules/undici/lib/dispatcher/pool.js'(exports2, module2) { 'use strict'; - var { Readable, Duplex, PassThrough } = require('stream'); - var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); + var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = require_pool_base(); + var Client = require_client(); + var { InvalidArgumentError } = require_errors(); var util = require_util(); - var { AsyncResource } = require('async_hooks'); - var { addSignal, removeSignal } = require_abort_signal(); - var assert = require('assert'); - var kResume = Symbol('resume'); - var PipelineRequest = class extends Readable { - constructor() { - super({ autoDestroy: true }); - this[kResume] = null; - } - _read() { - const { [kResume]: resume } = this; - if (resume) { - this[kResume] = null; - resume(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol('options'); + var kConnections = Symbol('connections'); + var kFactory = Symbol('factory'); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor( + origin, + { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {} + ) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); + } + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect + }); } + this[kInterceptors] = + options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + this.on('connectionError', (origin2, targets, error) => { + for (const target of targets) { + const idx = this[kClients].indexOf(target); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + } + }); } - _destroy(err, callback) { - this._read(); - callback(err); + [kGetDispatcher]() { + for (const client of this[kClients]) { + if (!client[kNeedDrain]) { + return client; + } + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return dispatcher; + } } }; - var PipelineResponse = class extends Readable { - constructor(resume) { - super({ autoDestroy: true }); - this[kResume] = resume; + module2.exports = Pool; + } +}); + +// node_modules/undici/lib/dispatcher/balanced-pool.js +var require_balanced_pool = __commonJS({ + 'node_modules/undici/lib/dispatcher/balanced-pool.js'(exports2, module2) { + 'use strict'; + var { BalancedPoolMissingUpstreamError, InvalidArgumentError } = require_errors(); + var { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol('factory'); + var kOptions = Symbol('options'); + var kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor'); + var kCurrentWeight = Symbol('kCurrentWeight'); + var kIndex = Symbol('kIndex'); + var kWeight = Symbol('kWeight'); + var kMaxWeightPerServer = Symbol('kMaxWeightPerServer'); + var kErrorPenalty = Symbol('kErrorPenalty'); + function getGreatestCommonDivisor(a, b) { + if (a === 0) return b; + while (b !== 0) { + const t = b; + b = a % b; + a = t; } - _read() { - this[kResume](); + return a; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + this[kInterceptors] = + opts.interceptors?.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); } - _destroy(err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if ( + this[kClients].find(pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true) + ) { + return this; } - callback(err); + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on('disconnect', (...args) => { + const err = args[2]; + if (err && err.code === 'UND_ERR_SOCKET') { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; } - }; - var PipelineHandler = class extends AsyncResource { - constructor(opts, handler) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); + _updateBalancedPoolStats() { + let result = 0; + for (let i = 0; i < this[kClients].length; i++) { + result = getGreatestCommonDivisor(this[kClients][i][kWeight], result); } - if (typeof handler !== 'function') { - throw new InvalidArgumentError('invalid handler'); + this[kGreatestCommonDivisor] = result; + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find( + pool2 => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true + ); + if (pool) { + this[kRemoveClient](pool); } - const { signal, method, opaque, onInfo, responseHeaders } = opts; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + return this; + } + get upstreams() { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map(p => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); } - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method'); + const dispatcher = this[kClients].find( + dispatcher2 => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true + ); + if (!dispatcher) { + return; } - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback'); + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; } - super('UNDICI_PIPELINE'); - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.handler = handler; - this.abort = null; - this.context = null; - this.onInfo = onInfo || null; - this.req = new PipelineRequest().on('error', util.nop); - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body: body2 } = this; - if (body2 && body2.resume) { - body2.resume(); - } - }, - write: (chunk, encoding, callback) => { - const { req } = this; - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback(); - } else { - req[kResume] = callback; - } - }, - destroy: (err, callback) => { - const { body: body2, req, res, ret, abort } = this; - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError(); - } - if (abort && err) { - abort(); + let counter = 0; + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; } - util.destroy(body2, err); - util.destroy(req, err); - util.destroy(res, err); - removeSignal(this); - callback(err); } - }).on('prefinish', () => { - const { req } = this; - req.push(null); - }); - this.res = null; - addSignal(this, signal); - } - onConnect(abort, context) { - const { ret, res } = this; - assert(!res, 'pipeline cannot be retried'); - if (ret.destroyed) { - throw new RequestAbortedError(); - } - this.abort = abort; - this.context = context; - } - onHeaders(statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this; - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; } - return; - } - this.res = new PipelineResponse(resume); - let body2; - try { - this.handler = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - body2 = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context - }); - } catch (err) { - this.res.on('error', util.nop); - throw err; - } - if (!body2 || typeof body2.on !== 'function') { - throw new InvalidReturnValueError('expected Readable'); } - body2 - .on('data', chunk => { - const { ret, body: body3 } = this; - if (!ret.push(chunk) && body3.pause) { - body3.pause(); - } - }) - .on('error', err => { - const { ret } = this; - util.destroy(ret, err); - }) - .on('end', () => { - const { ret } = this; - ret.push(null); - }) - .on('close', () => { - const { ret } = this; - if (!ret._readableState.ended) { - util.destroy(ret, new RequestAbortedError()); - } - }); - this.body = body2; - } - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - onComplete(trailers) { - const { res } = this; - res.push(null); - } - onError(err) { - const { ret } = this; - this.handler = null; - util.destroy(ret, err); + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; } }; - function pipeline(opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler); - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); - return pipelineHandler.ret; - } catch (err) { - return new PassThrough().destroy(err); - } - } - module2.exports = pipeline; + module2.exports = BalancedPool; } }); -// node_modules/undici/lib/api/api-upgrade.js -var require_api_upgrade = __commonJS({ - 'node_modules/undici/lib/api/api-upgrade.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/agent.js +var require_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/agent.js'(exports2, module2) { 'use strict'; - var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); - var { AsyncResource } = require('async_hooks'); + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); var util = require_util(); - var { addSignal, removeSignal } = require_abort_signal(); - var assert = require('assert'); - var UpgradeHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); + var createRedirectInterceptor = require_redirect_interceptor(); + var kOnConnect = Symbol('onConnect'); + var kOnDisconnect = Symbol('onDisconnect'); + var kOnConnectionError = Symbol('onConnectionError'); + var kMaxRedirections = Symbol('maxRedirections'); + var kOnDrain = Symbol('onDrain'); + var kFactory = Symbol('factory'); + var kOptions = Symbol('options'); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object'); } - const { signal, opaque, responseHeaders } = opts; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); } - super('UNDICI_UPGRADE'); - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.abort = null; - this.context = null; - addSignal(this, signal); + if (connect && typeof connect !== 'function') { + connect = { ...connect }; + } + this[kInterceptors] = + options.interceptors?.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kOnDrain] = (origin, targets) => { + this.emit('drain', origin, [this, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + this.emit('connect', origin, [this, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + this.emit('disconnect', origin, [this, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + this.emit('connectionError', origin, [this, ...targets], err); + }; } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); + get [kRunning]() { + let ret = 0; + for (const client of this[kClients].values()) { + ret += client[kRunning]; } - this.abort = abort; - this.context = null; + return ret; } - onHeaders() { - throw new SocketError('bad upgrade', null); + [kDispatch](opts, handler2) { + let key; + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.'); + } + let dispatcher = this[kClients].get(key); + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]); + this[kClients].set(key, dispatcher); + } + return dispatcher.dispatch(opts, handler2); } - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - assert.strictEqual(statusCode, 101); - removeSignal(this); - this.callback = null; - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context - }); + async [kClose]() { + const closePromises = []; + for (const client of this[kClients].values()) { + closePromises.push(client.close()); + } + this[kClients].clear(); + await Promise.all(closePromises); } - onError(err) { - const { callback, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); + async [kDestroy](err) { + const destroyPromises = []; + for (const client of this[kClients].values()) { + destroyPromises.push(client.destroy(err)); } + this[kClients].clear(); + await Promise.all(destroyPromises); } }; - function upgrade(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - try { - const upgradeHandler = new UpgradeHandler(opts, callback); - this.dispatch( - { - ...opts, - method: opts.method || 'GET', - upgrade: opts.protocol || 'Websocket' + module2.exports = Agent; + } +}); + +// node_modules/undici/lib/dispatcher/proxy-agent.js +var require_proxy_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/proxy-agent.js'(exports2, module2) { + 'use strict'; + var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var { URL: URL2 } = require('node:url'); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors(); + var buildConnector = require_connect(); + var Client = require_client(); + var kAgent = Symbol('proxy agent'); + var kClient = Symbol('proxy client'); + var kProxyHeaders = Symbol('proxy headers'); + var kRequestTls = Symbol('request tls settings'); + var kProxyTls = Symbol('proxy tls settings'); + var kConnectEndpoint = Symbol('connect endpoint function'); + var kTunnelProxy = Symbol('tunnel proxy'); + function defaultProtocolPort(protocol) { + return protocol === 'https:' ? 443 : 80; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var noop3 = () => {}; + function defaultAgentFactory(origin, opts) { + if (opts.connections === 1) { + return new Client(origin, opts); + } + return new Pool(origin, opts); + } + var Http1ProxyWrapper = class extends DispatcherBase { + #client; + constructor(proxyUrl, { headers = {}, connect, factory }) { + super(); + if (!proxyUrl) { + throw new InvalidArgumentError('Proxy URL is mandatory'); + } + this[kProxyHeaders] = headers; + if (factory) { + this.#client = factory(proxyUrl, { connect }); + } else { + this.#client = new Client(proxyUrl, { connect }); + } + } + [kDispatch](opts, handler2) { + const onHeaders = handler2.onHeaders; + handler2.onHeaders = function (statusCode, data, resume) { + if (statusCode === 407) { + if (typeof handler2.onError === 'function') { + handler2.onError(new InvalidArgumentError('Proxy Authentication Required (407)')); + } + return; + } + if (onHeaders) onHeaders.call(this, statusCode, data, resume); + }; + const { origin, path = '/', headers = {} } = opts; + opts.path = origin + path; + if (!('host' in headers) && !('Host' in headers)) { + const { host } = new URL2(origin); + headers.host = host; + } + opts.headers = { ...this[kProxyHeaders], ...headers }; + return this.#client[kDispatch](opts, handler2); + } + async [kClose]() { + return this.#client.close(); + } + async [kDestroy](err) { + return this.#client.destroy(err); + } + }; + var ProxyAgent = class extends DispatcherBase { + constructor(opts) { + super(); + if (!opts || (typeof opts === 'object' && !(opts instanceof URL2) && !opts.uri)) { + throw new InvalidArgumentError('Proxy uri is mandatory'); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.'); + } + const { proxyTunnel = true } = opts; + const url = this.#getUrl(opts); + const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url; + this[kProxy] = { uri: href, protocol }; + this[kInterceptors] = + opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + this[kTunnelProxy] = proxyTunnel; + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token'); + } else if (opts.auth) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token; + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from( + `${decodeURIComponent(username)}:${decodeURIComponent(password)}` + ).toString('base64')}`; + } + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + const agentFactory = opts.factory || defaultAgentFactory; + const factory = (origin2, options) => { + const { protocol: protocol2 } = new URL2(origin2); + if (!this[kTunnelProxy] && protocol2 === 'http:' && this[kProxy].protocol === 'http:') { + return new Http1ProxyWrapper(this[kProxy].uri, { + headers: this[kProxyHeaders], + connect, + factory: agentFactory + }); + } + return agentFactory(origin2, options); + }; + this[kClient] = clientFactory(url, { connect }); + this[kAgent] = new Agent({ + ...opts, + factory, + connect: async (opts2, callback) => { + let requestedPath = opts2.host; + if (!opts2.port) { + requestedPath += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedPath, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host: opts2.host + }, + servername: this[kProxyTls]?.servername || proxyHostname + }); + if (statusCode !== 200) { + socket.on('error', noop3).destroy(); + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); + } + if (opts2.protocol !== 'https:') { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + callback(new SecureProxyConnectionError(err)); + } else { + callback(err); + } + } + } + }); + } + dispatch(opts, handler2) { + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + if (headers && !('host' in headers) && !('Host' in headers)) { + const { host } = new URL2(opts.origin); + headers.host = host; + } + return this[kAgent].dispatch( + { + ...opts, + headers }, - upgradeHandler + handler2 ); - } catch (err) { - if (typeof callback !== 'function') { - throw err; + } + /** + * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts + * @returns {URL} + */ + #getUrl(opts) { + if (typeof opts === 'string') { + return new URL2(opts); + } else if (opts instanceof URL2) { + return opts; + } else { + return new URL2(opts.uri); } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; } - module2.exports = upgrade; + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find(key => key.toLowerCase() === 'proxy-authorization'); + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor'); + } + } + module2.exports = ProxyAgent; } }); -// node_modules/undici/lib/api/api-connect.js -var require_api_connect = __commonJS({ - 'node_modules/undici/lib/api/api-connect.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +var require_env_http_proxy_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/env-http-proxy-agent.js'(exports2, module2) { 'use strict'; - var { AsyncResource } = require('async_hooks'); - var { InvalidArgumentError, RequestAbortedError, SocketError } = require_errors(); - var util = require_util(); - var { addSignal, removeSignal } = require_abort_signal(); - var ConnectHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); + var DispatcherBase = require_dispatcher_base(); + var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = + require_symbols(); + var ProxyAgent = require_proxy_agent(); + var Agent = require_agent(); + var DEFAULT_PORTS = { + 'http:': 80, + 'https:': 443 + }; + var experimentalWarned = false; + var EnvHttpProxyAgent = class extends DispatcherBase { + #noProxyValue = null; + #noProxyEntries = null; + #opts = null; + constructor(opts = {}) { + super(); + this.#opts = opts; + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning('EnvHttpProxyAgent is experimental, expect them to change at any time.', { + code: 'UNDICI-EHPA' + }); } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback'); + const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts; + this[kNoProxyAgent] = new Agent(agentOpts); + const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY; + if (HTTP_PROXY) { + this[kHttpProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTP_PROXY }); + } else { + this[kHttpProxyAgent] = this[kNoProxyAgent]; } - const { signal, opaque, responseHeaders } = opts; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY; + if (HTTPS_PROXY) { + this[kHttpsProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTPS_PROXY }); + } else { + this[kHttpsProxyAgent] = this[kHttpProxyAgent]; } - super('UNDICI_CONNECT'); - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.callback = callback; - this.abort = null; - addSignal(this, signal); + this.#parseNoProxy(); } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); + [kDispatch](opts, handler2) { + const url = new URL(opts.origin); + const agent = this.#getProxyAgentForUrl(url); + return agent.dispatch(opts, handler2); + } + async [kClose]() { + await this[kNoProxyAgent].close(); + if (!this[kHttpProxyAgent][kClosed]) { + await this[kHttpProxyAgent].close(); + } + if (!this[kHttpsProxyAgent][kClosed]) { + await this[kHttpsProxyAgent].close(); } - this.abort = abort; - this.context = context; } - onHeaders() { - throw new SocketError('bad connect', null); + async [kDestroy](err) { + await this[kNoProxyAgent].destroy(err); + if (!this[kHttpProxyAgent][kDestroyed]) { + await this[kHttpProxyAgent].destroy(err); + } + if (!this[kHttpsProxyAgent][kDestroyed]) { + await this[kHttpsProxyAgent].destroy(err); + } } - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - removeSignal(this); - this.callback = null; - let headers = rawHeaders; - if (headers != null) { - headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + #getProxyAgentForUrl(url) { + let { protocol, host: hostname, port } = url; + hostname = hostname.replace(/:\d*$/, '').toLowerCase(); + port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0; + if (!this.#shouldProxy(hostname, port)) { + return this[kNoProxyAgent]; } - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context - }); + if (protocol === 'https:') { + return this[kHttpsProxyAgent]; + } + return this[kHttpProxyAgent]; } - onError(err) { - const { callback, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); + #shouldProxy(hostname, port) { + if (this.#noProxyChanged) { + this.#parseNoProxy(); + } + if (this.#noProxyEntries.length === 0) { + return true; + } + if (this.#noProxyValue === '*') { + return false; + } + for (let i = 0; i < this.#noProxyEntries.length; i++) { + const entry = this.#noProxyEntries[i]; + if (entry.port && entry.port !== port) { + continue; + } + if (!/^[.*]/.test(entry.hostname)) { + if (hostname === entry.hostname) { + return false; + } + } else { + if (hostname.endsWith(entry.hostname.replace(/^\*/, ''))) { + return false; + } + } } + return true; } - }; - function connect(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); + #parseNoProxy() { + const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv; + const noProxySplit = noProxyValue.split(/[,\s]/); + const noProxyEntries = []; + for (let i = 0; i < noProxySplit.length; i++) { + const entry = noProxySplit[i]; + if (!entry) { + continue; + } + const parsed = entry.match(/^(.+):(\d+)$/); + noProxyEntries.push({ + hostname: (parsed ? parsed[1] : entry).toLowerCase(), + port: parsed ? Number.parseInt(parsed[2], 10) : 0 }); - }); + } + this.#noProxyValue = noProxyValue; + this.#noProxyEntries = noProxyEntries; } - try { - const connectHandler = new ConnectHandler(opts, callback); - this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler); - } catch (err) { - if (typeof callback !== 'function') { - throw err; + get #noProxyChanged() { + if (this.#opts.noProxy !== void 0) { + return false; } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); + return this.#noProxyValue !== this.#noProxyEnv; } - } - module2.exports = connect; + get #noProxyEnv() { + return process.env.no_proxy ?? process.env.NO_PROXY ?? ''; + } + }; + module2.exports = EnvHttpProxyAgent; } }); -// node_modules/undici/lib/api/index.js -var require_api = __commonJS({ - 'node_modules/undici/lib/api/index.js'(exports2, module2) { +// node_modules/undici/lib/handler/retry-handler.js +var require_retry_handler = __commonJS({ + 'node_modules/undici/lib/handler/retry-handler.js'(exports2, module2) { 'use strict'; - module2.exports.request = require_api_request(); - module2.exports.stream = require_api_stream(); - module2.exports.pipeline = require_api_pipeline(); - module2.exports.upgrade = require_api_upgrade(); - module2.exports.connect = require_api_connect(); - } -}); - -// node_modules/undici/lib/mock/mock-errors.js -var require_mock_errors = __commonJS({ - 'node_modules/undici/lib/mock/mock-errors.js'(exports2, module2) { - 'use strict'; - var { UndiciError } = require_errors(); - var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, _MockNotMatchedError); - this.name = 'MockNotMatchedError'; - this.message = message || 'The request does not match any registered mock dispatches'; - this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; - } - }; - module2.exports = { - MockNotMatchedError - }; - } -}); - -// node_modules/undici/lib/mock/mock-symbols.js -var require_mock_symbols = __commonJS({ - 'node_modules/undici/lib/mock/mock-symbols.js'(exports2, module2) { - 'use strict'; - module2.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') - }; - } -}); - -// node_modules/undici/lib/mock/mock-utils.js -var require_mock_utils = __commonJS({ - 'node_modules/undici/lib/mock/mock-utils.js'(exports2, module2) { - 'use strict'; - var { MockNotMatchedError } = require_mock_errors(); - var { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = require_mock_symbols(); - var { buildURL, nop } = require_util(); - var { STATUS_CODES } = require('http'); - var { - types: { isPromise } - } = require('util'); - function matchValue(match, value) { - if (typeof match === 'string') { - return match === value; - } - if (match instanceof RegExp) { - return match.test(value); - } - if (typeof match === 'function') { - return match(value) === true; - } - return false; - } - function lowerCaseEntries(headers) { - return Object.fromEntries( - Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue]; - }) - ); + var assert = require('node:assert'); + var { kRetryHandlerDefaultRetry } = require_symbols(); + var { RequestRetryError } = require_errors(); + var { isDisturbed, parseHeaders, parseRangeHeader, wrapRequestBody } = require_util(); + function calculateRetryAfterHeader(retryAfter) { + const current = Date.now(); + return new Date(retryAfter).getTime() - current; } - function getHeaderByName(headers, key) { - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1]; + var RetryHandler = class _RetryHandler { + constructor(opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts; + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {}; + this.dispatch = handlers.dispatch; + this.handler = handlers.handler; + this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) }; + this.abort = null; + this.aborted = false; + this.retryOpts = { + retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1e3, + // 30s, + minTimeout: minTimeout ?? 500, + // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE', + 'UND_ERR_SOCKET' + ] + }; + this.retryCount = 0; + this.retryCountCheckpoint = 0; + this.start = 0; + this.end = null; + this.etag = null; + this.resume = null; + this.handler.onConnect(reason => { + this.aborted = true; + if (this.abort) { + this.abort(reason); + } else { + this.reason = reason; } - } - return void 0; - } else if (typeof headers.get === 'function') { - return headers.get(key); - } else { - return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; - } - } - function buildHeadersFromArray(headers) { - const clone = headers.slice(); - const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); + }); } - return Object.fromEntries(entries); - } - function matchHeaders(mockDispatch2, headers) { - if (typeof mockDispatch2.headers === 'function') { - if (Array.isArray(headers)) { - headers = buildHeadersFromArray(headers); + onRequestSent() { + if (this.handler.onRequestSent) { + this.handler.onRequestSent(); } - return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); - } - if (typeof mockDispatch2.headers === 'undefined') { - return true; - } - if (typeof headers !== 'object' || typeof mockDispatch2.headers !== 'object') { - return false; } - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { - const headerValue = getHeaderByName(headers, matchHeaderName); - if (!matchValue(matchHeaderValue, headerValue)) { - return false; + onUpgrade(statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket); } } - return true; - } - function safeUrl(path) { - if (typeof path !== 'string') { - return path; - } - const pathSegments = path.split('?'); - if (pathSegments.length !== 2) { - return path; - } - const qp = new URLSearchParams(pathSegments.pop()); - qp.sort(); - return [...pathSegments, qp.toString()].join('?'); - } - function matchKey(mockDispatch2, { path, method, body: body2, headers }) { - const pathMatch = matchValue(mockDispatch2.path, path); - const methodMatch = matchValue(mockDispatch2.method, method); - const bodyMatch = typeof mockDispatch2.body !== 'undefined' ? matchValue(mockDispatch2.body, body2) : true; - const headersMatch = matchHeaders(mockDispatch2, headers); - return pathMatch && methodMatch && bodyMatch && headersMatch; - } - function getResponseData(data) { - if (Buffer.isBuffer(data)) { - return data; - } else if (typeof data === 'object') { - return JSON.stringify(data); - } else { - return data.toString(); - } - } - function getMockDispatch(mockDispatches, key) { - const basePath = key.query ? buildURL(key.path, key.query) : key.path; - const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; - let matchedMockDispatches = mockDispatches - .filter(({ consumed }) => !consumed) - .filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); - } - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); - } - matchedMockDispatches = matchedMockDispatches.filter(({ body: body2 }) => - typeof body2 !== 'undefined' ? matchValue(body2, key.body) : true - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); + onConnect(abort) { + if (this.aborted) { + abort(this.reason); + } else { + this.abort = abort; + } } - matchedMockDispatches = matchedMockDispatches.filter(mockDispatch2 => matchHeaders(mockDispatch2, key.headers)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError( - `Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'` - ); + onBodySent(chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk); } - return matchedMockDispatches[0]; - } - function addMockDispatch(mockDispatches, key, data) { - const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; - const replyData = typeof data === 'function' ? { callback: data } : { ...data }; - const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; - mockDispatches.push(newMockDispatch); - return newMockDispatch; - } - function deleteMockDispatch(mockDispatches, key) { - const index = mockDispatches.findIndex(dispatch => { - if (!dispatch.consumed) { - return false; + static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { + const { statusCode, code, headers } = err; + const { method, retryOptions } = opts; + const { maxRetries, minTimeout, maxTimeout, timeoutFactor, statusCodes, errorCodes, methods } = retryOptions; + const { counter } = state; + if (code && code !== 'UND_ERR_REQ_RETRY' && !errorCodes.includes(code)) { + cb(err); + return; } - return matchKey(dispatch, key); - }); - if (index !== -1) { - mockDispatches.splice(index, 1); - } - } - function buildKey(opts) { - const { path, method, body: body2, headers, query } = opts; - return { - path, - method, - body: body2, - headers, - query - }; - } - function generateKeyValues(data) { - return Object.entries(data).reduce( - (keyValuePairs, [key, value]) => [ - ...keyValuePairs, - Buffer.from(`${key}`), - Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) - ], - [] - ); - } - function getStatusText(statusCode) { - return STATUS_CODES[statusCode] || 'unknown'; - } - async function getResponse(body2) { - const buffers = []; - for await (const data of body2) { - buffers.push(data); + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err); + return; + } + if (statusCode != null && Array.isArray(statusCodes) && !statusCodes.includes(statusCode)) { + cb(err); + return; + } + if (counter > maxRetries) { + cb(err); + return; + } + let retryAfterHeader = headers?.['retry-after']; + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader); + retryAfterHeader = Number.isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3; + } + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout); + setTimeout(() => cb(null), retryTimeout); } - return Buffer.concat(buffers).toString('utf8'); - } - function mockDispatch(opts, handler) { - const key = buildKey(opts); - const mockDispatch2 = getMockDispatch(this[kDispatches], key); - mockDispatch2.timesInvoked++; - if (mockDispatch2.data.callback) { - mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders); + this.retryCount += 1; + if (statusCode >= 300) { + if (this.retryOpts.statusCodes.includes(statusCode) === false) { + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } else { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + data: { + count: this.retryCount + } + }) + ); + return false; + } + } + if (this.resume != null) { + this.resume = null; + if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) { + this.abort( + new RequestRetryError( + 'server does not support the range header and the payload was partially consumed', + statusCode, + { + headers, + data: { count: this.retryCount } + } + ) + ); + return false; + } + const contentRange = parseRangeHeader(headers['content-range']); + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }) + ); + return false; + } + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }) + ); + return false; + } + const { start, size, end = size - 1 } = contentRange; + assert(this.start === start, 'content-range mismatch'); + assert(this.end == null || this.end === end, 'content-range mismatch'); + this.resume = resume; + return true; + } + if (this.end == null) { + if (statusCode === 206) { + const range = parseRangeHeader(headers['content-range']); + if (range == null) { + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + const { start, size, end = size - 1 } = range; + assert(start != null && Number.isFinite(start), 'content-range mismatch'); + assert(end != null && Number.isFinite(end), 'invalid content-length'); + this.start = start; + this.end = end; + } + if (this.end == null) { + const contentLength = headers['content-length']; + this.end = contentLength != null ? Number(contentLength) - 1 : null; + } + assert(Number.isFinite(this.start)); + assert(this.end == null || Number.isFinite(this.end), 'invalid content-length'); + this.resume = resume; + this.etag = headers.etag != null ? headers.etag : null; + if (this.etag != null && this.etag.startsWith('W/')) { + this.etag = null; + } + return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + } + const err = new RequestRetryError('Request failed', statusCode, { + headers, + data: { count: this.retryCount } + }); + this.abort(err); + return false; } - const { - data: { statusCode, data, headers, trailers, error }, - delay, - persist - } = mockDispatch2; - const { timesInvoked, times } = mockDispatch2; - mockDispatch2.consumed = !persist && timesInvoked >= times; - mockDispatch2.pending = timesInvoked < times; - if (error !== null) { - deleteMockDispatch(this[kDispatches], key); - handler.onError(error); - return true; + onData(chunk) { + this.start += chunk.length; + return this.handler.onData(chunk); } - if (typeof delay === 'number' && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]); - }, delay); - } else { - handleReply(this[kDispatches]); + onComplete(rawTrailers) { + this.retryCount = 0; + return this.handler.onComplete(rawTrailers); } - function handleReply(mockDispatches, _data = data) { - const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; - const body2 = typeof _data === 'function' ? _data({ ...opts, headers: optsHeaders }) : _data; - if (isPromise(body2)) { - body2.then(newData => handleReply(mockDispatches, newData)); - return; + onError(err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err); } - const responseData = getResponseData(body2); - const responseHeaders = generateKeyValues(headers); - const responseTrailers = generateKeyValues(trailers); - handler.abort = nop; - handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); - handler.onData(Buffer.from(responseData)); - handler.onComplete(responseTrailers); - deleteMockDispatch(mockDispatches, key); - } - function resume() {} - return true; - } - function buildMockDispatch() { - const agent = this[kMockAgent]; - const origin = this[kOrigin]; - const originalDispatch = this[kOriginalDispatch]; - return function dispatch(opts, handler) { - if (agent.isMockActive) { - try { - mockDispatch.call(this, opts, handler); - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect](); - if (netConnect === false) { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)` - ); - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler); - } else { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)` - ); - } - } else { - throw error; + if (this.retryCount - this.retryCountCheckpoint > 0) { + this.retryCount = this.retryCountCheckpoint + (this.retryCount - this.retryCountCheckpoint); + } else { + this.retryCount += 1; + } + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ); + function onRetry(err2) { + if (err2 != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err2); + } + if (this.start !== 0) { + const headers = { range: `bytes=${this.start}-${this.end ?? ''}` }; + if (this.etag != null) { + headers['if-match'] = this.etag; } + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + ...headers + } + }; + } + try { + this.retryCountCheckpoint = this.retryCount; + this.dispatch(this.opts, this); + } catch (err3) { + this.handler.onError(err3); } - } else { - originalDispatch.call(this, opts, handler); } - }; - } - function checkNetConnect(netConnect, origin) { - const url = new URL(origin); - if (netConnect === true) { - return true; - } else if (Array.isArray(netConnect) && netConnect.some(matcher => matchValue(matcher, url.host))) { - return true; - } - return false; - } - function buildMockOptions(opts) { - if (opts) { - const { agent, ...mockOptions } = opts; - return mockOptions; } - } - module2.exports = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - getStatusText, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions, - getHeaderByName }; + module2.exports = RetryHandler; } }); -// node_modules/undici/lib/mock/mock-interceptor.js -var require_mock_interceptor = __commonJS({ - 'node_modules/undici/lib/mock/mock-interceptor.js'(exports2, module2) { +// node_modules/undici/lib/dispatcher/retry-agent.js +var require_retry_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/retry-agent.js'(exports2, module2) { 'use strict'; - var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); - var { kDispatches, kDispatchKey, kDefaultHeaders, kDefaultTrailers, kContentLength, kMockDispatch } = require_mock_symbols(); - var { InvalidArgumentError } = require_errors(); - var { buildURL } = require_util(); - var MockScope = class { - constructor(mockDispatch) { - this[kMockDispatch] = mockDispatch; + var Dispatcher = require_dispatcher(); + var RetryHandler = require_retry_handler(); + var RetryAgent = class extends Dispatcher { + #agent = null; + #options = null; + constructor(agent, options = {}) { + super(options); + this.#agent = agent; + this.#options = options; + } + dispatch(opts, handler2) { + const retry = new RetryHandler( + { + ...opts, + retryOptions: this.#options + }, + { + dispatch: this.#agent.dispatch.bind(this.#agent), + handler: handler2 + } + ); + return this.#agent.dispatch(opts, retry); } - /** - * Delay a reply by a set amount in ms. - */ - delay(waitInMs) { - if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError('waitInMs must be a valid integer > 0'); - } - this[kMockDispatch].delay = waitInMs; - return this; - } - /** - * For a defined reply, never mark as consumed. - */ - persist() { - this[kMockDispatch].persist = true; - return this; + close() { + return this.#agent.close(); } - /** - * Allow one to define a reply for a set amount of matching requests. - */ - times(repeatTimes) { - if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { - throw new InvalidArgumentError('repeatTimes must be a valid integer > 0'); - } - this[kMockDispatch].times = repeatTimes; - return this; + destroy() { + return this.#agent.destroy(); } }; - var MockInterceptor = class { - constructor(opts, mockDispatches) { - if (typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object'); - } - if (typeof opts.path === 'undefined') { - throw new InvalidArgumentError('opts.path must be defined'); - } - if (typeof opts.method === 'undefined') { - opts.method = 'GET'; - } - if (typeof opts.path === 'string') { - if (opts.query) { - opts.path = buildURL(opts.path, opts.query); - } else { - const parsedURL = new URL(opts.path, 'data://'); - opts.path = parsedURL.pathname + parsedURL.search; - } - } - if (typeof opts.method === 'string') { - opts.method = opts.method.toUpperCase(); - } - this[kDispatchKey] = buildKey(opts); - this[kDispatches] = mockDispatches; - this[kDefaultHeaders] = {}; - this[kDefaultTrailers] = {}; - this[kContentLength] = false; - } - createMockScopeDispatchData(statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data); - const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}; - const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; - return { statusCode, data, headers, trailers }; + module2.exports = RetryAgent; + } +}); + +// node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + 'node_modules/undici/lib/api/readable.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { Readable } = require('node:stream'); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom } = require_util(); + var kConsume = Symbol('kConsume'); + var kReading = Symbol('kReading'); + var kBody = Symbol('kBody'); + var kAbort = Symbol('kAbort'); + var kContentType = Symbol('kContentType'); + var kContentLength = Symbol('kContentLength'); + var noop3 = () => {}; + var BodyReadable = class extends Readable { + constructor({ + resume, + abort, + contentType = '', + contentLength, + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kContentLength] = contentLength; + this[kReading] = false; } - validateReplyParameters(statusCode, data, responseOptions) { - if (typeof statusCode === 'undefined') { - throw new InvalidArgumentError('statusCode must be defined'); - } - if (typeof data === 'undefined') { - throw new InvalidArgumentError('data must be defined'); + destroy(err) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); } - if (typeof responseOptions !== 'object') { - throw new InvalidArgumentError('responseOptions must be an object'); + if (err) { + this[kAbort](); } + return super.destroy(err); } - /** - * Mock an undici request with a defined reply. - */ - reply(replyData) { - if (typeof replyData === 'function') { - const wrappedDefaultsCallback = opts => { - const resolvedData = replyData(opts); - if (typeof resolvedData !== 'object') { - throw new InvalidArgumentError('reply options callback must return an object'); - } - const { statusCode: statusCode2, data: data2 = '', responseOptions: responseOptions2 = {} } = resolvedData; - this.validateReplyParameters(statusCode2, data2, responseOptions2); - return { - ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) - }; - }; - const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); - return new MockScope(newMockDispatch2); + _destroy(err, callback) { + if (!this[kReading]) { + setImmediate(() => { + callback(err); + }); + } else { + callback(err); } - const [statusCode, data = '', responseOptions = {}] = [...arguments]; - this.validateReplyParameters(statusCode, data, responseOptions); - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); - return new MockScope(newMockDispatch); } - /** - * Mock an undici request with a defined error. - */ - replyWithError(error) { - if (typeof error === 'undefined') { - throw new InvalidArgumentError('error must be defined'); + on(ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true; } - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); - return new MockScope(newMockDispatch); + return super.on(ev, ...args); } - /** - * Set default reply headers on the interceptor for subsequent replies - */ - defaultReplyHeaders(headers) { - if (typeof headers === 'undefined') { - throw new InvalidArgumentError('headers must be defined'); - } - this[kDefaultHeaders] = headers; - return this; + addListener(ev, ...args) { + return this.on(ev, ...args); } - /** - * Set default reply trailers on the interceptor for subsequent replies - */ - defaultReplyTrailers(trailers) { - if (typeof trailers === 'undefined') { - throw new InvalidArgumentError('trailers must be defined'); + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === 'data' || ev === 'readable') { + this[kReading] = this.listenerCount('data') > 0 || this.listenerCount('readable') > 0; } - this[kDefaultTrailers] = trailers; - return this; + return ret; } - /** - * Set reply content length header for replies on the interceptor - */ - replyContentLength() { - this[kContentLength] = true; - return this; + removeListener(ev, ...args) { + return this.off(ev, ...args); } - }; - module2.exports.MockInterceptor = MockInterceptor; - module2.exports.MockScope = MockScope; - } -}); - -// node_modules/undici/lib/mock/mock-client.js -var require_mock_client = __commonJS({ - 'node_modules/undici/lib/mock/mock-client.js'(exports2, module2) { - 'use strict'; - var { promisify } = require('util'); - var Client = require_client(); - var { buildMockDispatch } = require_mock_utils(); - var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); - var { MockInterceptor } = require_mock_interceptor(); - var Symbols = require_symbols(); - var { InvalidArgumentError } = require_errors(); - var MockClient = class extends Client { - constructor(origin, opts) { - super(origin, opts); - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + push(chunk) { + if (this[kConsume] && chunk !== null) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; } - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; + return super.push(chunk); } - get [Symbols.kConnected]() { - return this[kConnected]; + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, 'text'); } - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, 'json'); } - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, 'blob'); } - }; - module2.exports = MockClient; - } -}); - -// node_modules/undici/lib/mock/mock-pool.js -var require_mock_pool = __commonJS({ - 'node_modules/undici/lib/mock/mock-pool.js'(exports2, module2) { - 'use strict'; - var { promisify } = require('util'); - var Pool = require_pool(); - var { buildMockDispatch } = require_mock_utils(); - var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); - var { MockInterceptor } = require_mock_interceptor(); - var Symbols = require_symbols(); - var { InvalidArgumentError } = require_errors(); - var MockPool = class extends Pool { - constructor(origin, opts) { - super(origin, opts); - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent'); - } - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; + // https://fetch.spec.whatwg.org/#dom-body-bytes + async bytes() { + return consume(this, 'bytes'); } - get [Symbols.kConnected]() { - return this[kConnected]; + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, 'arrayBuffer'); } - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); } - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); } - }; - module2.exports = MockPool; - } -}); - -// node_modules/undici/lib/mock/pluralizer.js -var require_pluralizer = __commonJS({ - 'node_modules/undici/lib/mock/pluralizer.js'(exports2, module2) { - 'use strict'; - var singulars = { - pronoun: 'it', - is: 'is', - was: 'was', - this: 'this' - }; - var plurals = { - pronoun: 'they', - is: 'are', - was: 'were', - this: 'these' - }; - module2.exports = class Pluralizer { - constructor(singular, plural) { - this.singular = singular; - this.plural = plural; - } - pluralize(count) { - const one = count === 1; - const keys = one ? singulars : plurals; - const noun = one ? this.singular : this.plural; - return { ...keys, count, noun }; - } - }; - } -}); - -// node_modules/undici/lib/mock/pending-interceptors-formatter.js -var require_pending_interceptors_formatter = __commonJS({ - 'node_modules/undici/lib/mock/pending-interceptors-formatter.js'(exports2, module2) { - 'use strict'; - var { Transform } = require('stream'); - var { Console } = require('console'); - module2.exports = class PendingInterceptorsFormatter { - constructor({ disableColors } = {}) { - this.transform = new Transform({ - transform(chunk, _enc, cb) { - cb(null, chunk); - } - }); - this.logger = new Console({ - stdout: this.transform, - inspectOptions: { - colors: !disableColors && !process.env.CI + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); } - }); + } + return this[kBody]; } - format(pendingInterceptors) { - const withPrettyHeaders = pendingInterceptors.map( - ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ - Method: method, - Origin: origin, - Path: path, - 'Status code': statusCode, - Persistent: persist ? '\u2705' : '\u274C', - Invocations: timesInvoked, - Remaining: persist ? Infinity : times - timesInvoked + async dump(opts) { + let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024; + const signal = opts?.signal; + if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) { + throw new InvalidArgumentError('signal must be an AbortSignal'); + } + signal?.throwIfAborted(); + if (this._readableState.closeEmitted) { + return null; + } + return await new Promise((resolve, reject) => { + if (this[kContentLength] > limit) { + this.destroy(new AbortError()); + } + const onAbort = () => { + this.destroy(signal.reason ?? new AbortError()); + }; + signal?.addEventListener('abort', onAbort); + this.on('close', function () { + signal?.removeEventListener('abort', onAbort); + if (signal?.aborted) { + reject(signal.reason ?? new AbortError()); + } else { + resolve(null); + } }) - ); - this.logger.table(withPrettyHeaders); - return this.transform.read().toString(); - } - }; - } -}); - -// node_modules/undici/lib/mock/mock-agent.js -var require_mock_agent = __commonJS({ - 'node_modules/undici/lib/mock/mock-agent.js'(exports2, module2) { - 'use strict'; - var { kClients } = require_symbols(); - var Agent = require_agent(); - var { kAgent, kMockAgentSet, kMockAgentGet, kDispatches, kIsMockActive, kNetConnect, kGetNetConnect, kOptions, kFactory } = - require_mock_symbols(); - var MockClient = require_mock_client(); - var MockPool = require_mock_pool(); - var { matchValue, buildMockOptions } = require_mock_utils(); - var { InvalidArgumentError, UndiciError } = require_errors(); - var Dispatcher = require_dispatcher(); - var Pluralizer = require_pluralizer(); - var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); - var FakeWeakRef = class { - constructor(value) { - this.value = value; - } - deref() { - return this.value; + .on('error', noop3) + .on('data', function (chunk) { + limit -= chunk.length; + if (limit <= 0) { + this.destroy(); + } + }) + .resume(); + }); } }; - var MockAgent = class extends Dispatcher { - constructor(opts) { - super(opts); - this[kNetConnect] = true; - this[kIsMockActive] = true; - if (opts && opts.agent && typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + function isLocked(self) { + return (self[kBody] && self[kBody].locked === true) || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + assert(!stream[kConsume]); + return new Promise((resolve, reject) => { + if (isUnusable(stream)) { + const rState = stream._readableState; + if (rState.destroyed && rState.closeEmitted === false) { + stream + .on('error', err => { + reject(err); + }) + .on('close', () => { + reject(new TypeError('unusable')); + }); + } else { + reject(rState.errored ?? new TypeError('unusable')); + } + } else { + queueMicrotask(() => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + }; + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err); + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + consumeStart(stream[kConsume]); + }); } - const agent = opts && opts.agent ? opts.agent : new Agent(opts); - this[kAgent] = agent; - this[kClients] = agent[kClients]; - this[kOptions] = buildMockOptions(opts); + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; } - get(origin) { - let dispatcher = this[kMockAgentGet](origin); - if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); + const { _readableState: state } = consume2.stream; + if (state.bufferIndex) { + const start = state.bufferIndex; + const end = state.buffer.length; + for (let n = start; n < end; n++) { + consumePush(consume2, state.buffer[n]); + } + } else { + for (const chunk of state.buffer) { + consumePush(consume2, chunk); } - return dispatcher; } - dispatch(opts, handler) { - this.get(opts.origin); - return this[kAgent].dispatch(opts, handler); + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on('end', function () { + consumeEnd(this[kConsume]); + }); } - async close() { - await this[kAgent].close(); - this[kClients].clear(); + consume2.stream.resume(); + while (consume2.stream.read() != null) {} + } + function chunksDecode(chunks, length) { + if (chunks.length === 0 || length === 0) { + return ''; } - deactivate() { - this[kIsMockActive] = false; + const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length); + const bufferLength = buffer.length; + const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; + return buffer.utf8Slice(start, bufferLength); + } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); } - activate() { - this[kIsMockActive] = true; + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); } - enableNetConnect(matcher) { - if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher); - } else { - this[kNetConnect] = [matcher]; - } - } else if (typeof matcher === 'undefined') { - this[kNetConnect] = true; - } else { - throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.'); + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } + function consumeEnd(consume2) { + const { type, body: body2, resolve, stream, length } = consume2; + try { + if (type === 'text') { + resolve(chunksDecode(body2, length)); + } else if (type === 'json') { + resolve(JSON.parse(chunksDecode(body2, length))); + } else if (type === 'arrayBuffer') { + resolve(chunksConcat(body2, length).buffer); + } else if (type === 'blob') { + resolve(new Blob(body2, { type: stream[kContentType] })); + } else if (type === 'bytes') { + resolve(chunksConcat(body2, length)); } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); } - disableNetConnect() { - this[kNetConnect] = false; + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; } - // This is required to bypass issues caused by using global symbols - see: - // https://github.com/nodejs/undici/issues/1447 - get isMockActive() { - return this[kIsMockActive]; + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); } - [kMockAgentSet](origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)); + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + module2.exports = { Readable: BodyReadable, chunksDecode }; + } +}); + +// node_modules/undici/lib/api/util.js +var require_util3 = __commonJS({ + 'node_modules/undici/lib/api/util.js'(exports2, module2) { + var assert = require('node:assert'); + var { ResponseStatusCodeError } = require_errors(); + var { chunksDecode } = require_readable(); + var CHUNK_LIMIT = 128 * 1024; + async function getResolveErrorBodyCallback({ callback, body: body2, contentType, statusCode, statusMessage, headers }) { + assert(body2); + let chunks = []; + let length = 0; + try { + for await (const chunk of body2) { + chunks.push(chunk); + length += chunk.length; + if (length > CHUNK_LIMIT) { + chunks = []; + length = 0; + break; + } + } + } catch { + chunks = []; + length = 0; } - [kFactory](origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]); - return this[kOptions] && this[kOptions].connections === 1 - ? new MockClient(origin, mockOptions) - : new MockPool(origin, mockOptions); + const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`; + if (statusCode === 204 || !contentType || !length) { + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers))); + return; } - [kMockAgentGet](origin) { - const ref = this[kClients].get(origin); - if (ref) { - return ref.deref(); - } - if (typeof origin !== 'string') { - const dispatcher = this[kFactory]('http://localhost:9999'); - this[kMockAgentSet](origin, dispatcher); - return dispatcher; + const stackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; + let payload; + try { + if (isContentTypeApplicationJson(contentType)) { + payload = JSON.parse(chunksDecode(chunks, length)); + } else if (isContentTypeText(contentType)) { + payload = chunksDecode(chunks, length); } - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref(); - if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { - const dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; - return dispatcher; - } - } - } - [kGetNetConnect]() { - return this[kNetConnect]; - } - pendingInterceptors() { - const mockAgentClients = this[kClients]; - return Array.from(mockAgentClients.entries()) - .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) - .filter(({ pending }) => pending); - } - assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { - const pending = this.pendingInterceptors(); - if (pending.length === 0) { - return; - } - const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length); - throw new UndiciError( - ` -${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: - -${pendingInterceptorsFormatter.format(pending)} -`.trim() - ); + } catch { + } finally { + Error.stackTraceLimit = stackTraceLimit; } + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload))); + } + var isContentTypeApplicationJson = contentType => { + return ( + contentType.length > 15 && + contentType[11] === '/' && + contentType[0] === 'a' && + contentType[1] === 'p' && + contentType[2] === 'p' && + contentType[3] === 'l' && + contentType[4] === 'i' && + contentType[5] === 'c' && + contentType[6] === 'a' && + contentType[7] === 't' && + contentType[8] === 'i' && + contentType[9] === 'o' && + contentType[10] === 'n' && + contentType[12] === 'j' && + contentType[13] === 's' && + contentType[14] === 'o' && + contentType[15] === 'n' + ); + }; + var isContentTypeText = contentType => { + return ( + contentType.length > 4 && + contentType[4] === '/' && + contentType[0] === 't' && + contentType[1] === 'e' && + contentType[2] === 'x' && + contentType[3] === 't' + ); + }; + module2.exports = { + getResolveErrorBodyCallback, + isContentTypeApplicationJson, + isContentTypeText }; - module2.exports = MockAgent; } }); -// node_modules/undici/lib/proxy-agent.js -var require_proxy_agent = __commonJS({ - 'node_modules/undici/lib/proxy-agent.js'(exports2, module2) { +// node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + 'node_modules/undici/lib/api/api-request.js'(exports2, module2) { 'use strict'; - var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols(); - var { URL: URL3 } = require('url'); - var Agent = require_agent(); - var Pool = require_pool(); - var DispatcherBase = require_dispatcher_base(); + var assert = require('node:assert'); + var { Readable } = require_readable(); var { InvalidArgumentError, RequestAbortedError } = require_errors(); - var buildConnector = require_connect(); - var kAgent = Symbol('proxy agent'); - var kClient = Symbol('proxy client'); - var kProxyHeaders = Symbol('proxy headers'); - var kRequestTls = Symbol('request tls settings'); - var kProxyTls = Symbol('proxy tls settings'); - var kConnectEndpoint = Symbol('connect endpoint function'); - function defaultProtocolPort(protocol) { - return protocol === 'https:' ? 443 : 80; - } - function buildProxyOptions(opts) { - if (typeof opts === 'string') { - opts = { uri: opts }; - } - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory'); - } - return { - uri: opts.uri, - protocol: opts.protocol || 'https' - }; - } - function defaultFactory(origin, opts) { - return new Pool(origin, opts); - } - var ProxyAgent = class extends DispatcherBase { - constructor(opts) { - super(opts); - this[kProxy] = buildProxyOptions(opts); - this[kAgent] = new Agent(opts); - this[kInterceptors] = - opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) - ? opts.interceptors.ProxyAgent - : []; - if (typeof opts === 'string') { - opts = { uri: opts }; - } - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory'); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require('node:async_hooks'); + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); } - const { clientFactory = defaultFactory } = opts; - if (typeof clientFactory !== 'function') { - throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.'); + const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + super('UNDICI_REQUEST'); + } catch (err) { + if (util.isStream(body2)) { + util.destroy(body2.on('error', util.nop), err); + } + throw err; } - this[kRequestTls] = opts.requestTls; - this[kProxyTls] = opts.proxyTls; - this[kProxyHeaders] = opts.headers || {}; - const resolvedUrl = new URL3(opts.uri); - const { origin, port, host, username, password } = resolvedUrl; - if (opts.auth && opts.token) { - throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token'); - } else if (opts.auth) { - this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`; - } else if (opts.token) { - this[kProxyHeaders]['proxy-authorization'] = opts.token; - } else if (username && password) { - this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from( - `${decodeURIComponent(username)}:${decodeURIComponent(password)}` - ).toString('base64')}`; + this.method = method; + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body2; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + this.signal = signal; + this.reason = null; + this.removeAbortListener = null; + if (util.isStream(body2)) { + body2.on('error', err => { + this.onError(err); + }); } - const connect = buildConnector({ ...opts.proxyTls }); - this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); - this[kClient] = clientFactory(resolvedUrl, { connect }); - this[kAgent] = new Agent({ - ...opts, - connect: async (opts2, callback) => { - let requestedHost = opts2.host; - if (!opts2.port) { - requestedHost += `:${defaultProtocolPort(opts2.protocol)}`; - } - try { - const { socket, statusCode } = await this[kClient].connect({ - origin, - port, - path: requestedHost, - signal: opts2.signal, - headers: { - ...this[kProxyHeaders], - host - } - }); - if (statusCode !== 200) { - socket.on('error', () => {}).destroy(); - callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); - } - if (opts2.protocol !== 'https:') { - callback(null, socket); - return; + if (this.signal) { + if (this.signal.aborted) { + this.reason = this.signal.reason ?? new RequestAbortedError(); + } else { + this.removeAbortListener = util.addAbortListener(this.signal, () => { + this.reason = this.signal.reason ?? new RequestAbortedError(); + if (this.res) { + util.destroy(this.res.on('error', util.nop), this.reason); + } else if (this.abort) { + this.abort(this.reason); } - let servername; - if (this[kRequestTls]) { - servername = this[kRequestTls].servername; - } else { - servername = opts2.servername; + if (this.removeAbortListener) { + this.res?.off('close', this.removeAbortListener); + this.removeAbortListener(); + this.removeAbortListener = null; } - this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); - } catch (err) { - callback(err); - } + }); + } + } + } + onConnect(abort, context) { + if (this.reason) { + abort(this.reason); + return; + } + assert(this.callback); + this.abort = abort; + this.context = context; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); } + return; + } + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders['content-type']; + const contentLength = parsedHeaders['content-length']; + const res = new Readable({ + resume, + abort, + contentType, + contentLength: this.method !== 'HEAD' && contentLength ? Number(contentLength) : null, + highWaterMark }); + if (this.removeAbortListener) { + res.on('close', this.removeAbortListener); + } + this.callback = null; + this.res = res; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback, + body: res, + contentType, + statusCode, + statusMessage, + headers + }); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body: res, + context + }); + } + } } - dispatch(opts, handler) { - const { host } = new URL3(opts.origin); - const headers = buildHeaders(opts.headers); - throwIfProxyAuthIsSent(headers); - return this[kAgent].dispatch( - { - ...opts, - headers: { - ...headers, - host - } - }, - handler - ); + onData(chunk) { + return this.res.push(chunk); } - async [kClose]() { - await this[kAgent].close(); - await this[kClient].close(); + onComplete(trailers) { + util.parseHeaders(trailers, this.trailers); + this.res.push(null); } - async [kDestroy]() { - await this[kAgent].destroy(); - await this[kClient].destroy(); + onError(err) { + const { res, callback, body: body2, opaque } = this; + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body2) { + this.body = null; + util.destroy(body2, err); + } + if (this.removeAbortListener) { + res?.off('close', this.removeAbortListener); + this.removeAbortListener(); + this.removeAbortListener = null; + } } }; - function buildHeaders(headers) { - if (Array.isArray(headers)) { - const headersPair = {}; - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1]; - } - return headersPair; + function request2(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + request2.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); } - return headers; - } - function throwIfProxyAuthIsSent(headers) { - const existProxyAuth = headers && Object.keys(headers).find(key => key.toLowerCase() === 'proxy-authorization'); - if (existProxyAuth) { - throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor'); + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); } } - module2.exports = ProxyAgent; + module2.exports = request2; + module2.exports.RequestHandler = RequestHandler; } }); -// node_modules/undici/lib/handler/RetryHandler.js -var require_RetryHandler = __commonJS({ - 'node_modules/undici/lib/handler/RetryHandler.js'(exports2, module2) { - var assert = require('assert'); - var { kRetryHandlerDefaultRetry } = require_symbols(); - var { RequestRetryError } = require_errors(); - var { isDisturbed, parseHeaders, parseRangeHeader } = require_util(); - function calculateRetryAfterHeader(retryAfter) { - const current = Date.now(); - const diff = new Date(retryAfter).getTime() - current; - return diff; - } - var RetryHandler = class _RetryHandler { - constructor(opts, handlers) { - const { retryOptions, ...dispatchOpts } = opts; - const { - // Retry scoped - retry: retryFn, - maxRetries, - maxTimeout, - minTimeout, - timeoutFactor, - // Response scoped - methods, - errorCodes, - retryAfter, - statusCodes - } = retryOptions ?? {}; - this.dispatch = handlers.dispatch; - this.handler = handlers.handler; - this.opts = dispatchOpts; - this.abort = null; - this.aborted = false; - this.retryOpts = { - retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry], - retryAfter: retryAfter ?? true, - maxTimeout: maxTimeout ?? 30 * 1e3, - // 30s, - timeout: minTimeout ?? 500, - // .5s - timeoutFactor: timeoutFactor ?? 2, - maxRetries: maxRetries ?? 5, - // What errors we should retry - methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], - // Indicates which errors to retry - statusCodes: statusCodes ?? [500, 502, 503, 504, 429], - // List of errors to retry - errorCodes: errorCodes ?? [ - 'ECONNRESET', - 'ECONNREFUSED', - 'ENOTFOUND', - 'ENETDOWN', - 'ENETUNREACH', - 'EHOSTDOWN', - 'EHOSTUNREACH', - 'EPIPE' - ] - }; - this.retryCount = 0; - this.start = 0; - this.end = null; - this.etag = null; - this.resume = null; - this.handler.onConnect(reason => { - this.aborted = true; - if (this.abort) { - this.abort(reason); - } else { - this.reason = reason; - } - }); +// node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + 'node_modules/undici/lib/api/abort-signal.js'(exports2, module2) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol('kListener'); + var kSignal = Symbol('kSignal'); + function abort(self) { + if (self.abort) { + self.abort(self[kSignal]?.reason); + } else { + self.reason = self[kSignal]?.reason ?? new RequestAbortedError(); } - onRequestSent() { - if (this.handler.onRequestSent) { - this.handler.onRequestSent(); - } + removeSignal(self); + } + function addSignal(self, signal) { + self.reason = null; + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; } - onUpgrade(statusCode, headers, socket) { - if (this.handler.onUpgrade) { - this.handler.onUpgrade(statusCode, headers, socket); - } + if (signal.aborted) { + abort(self); + return; } - onConnect(abort) { - if (this.aborted) { - abort(this.reason); - } else { - this.abort = abort; - } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; } - onBodySent(chunk) { - if (this.handler.onBodySent) return this.handler.onBodySent(chunk); + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]); + } else { + self[kSignal].removeListener('abort', self[kListener]); } - static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { - const { statusCode, code, headers } = err; - const { method, retryOptions } = opts; - const { maxRetries, timeout, maxTimeout, timeoutFactor, statusCodes, errorCodes, methods } = retryOptions; - let { counter, currentTimeout } = state; - currentTimeout = currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout; - if (code && code !== 'UND_ERR_REQ_RETRY' && code !== 'UND_ERR_SOCKET' && !errorCodes.includes(code)) { - cb(err); - return; + self[kSignal] = null; + self[kListener] = null; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + 'node_modules/undici/lib/api/api-stream.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { finished, PassThrough } = require('node:stream'); + var { InvalidArgumentError, InvalidReturnValueError } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource } = require('node:async_hooks'); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); } - if (Array.isArray(methods) && !methods.includes(method)) { - cb(err); - return; + const { signal, method, opaque, body: body2, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory'); + } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); + } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); + } + super('UNDICI_STREAM'); + } catch (err) { + if (util.isStream(body2)) { + util.destroy(body2.on('error', util.nop), err); + } + throw err; } - if (statusCode != null && Array.isArray(statusCodes) && !statusCodes.includes(statusCode)) { - cb(err); - return; + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body2; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body2)) { + body2.on('error', err => { + this.onError(err); + }); } - if (counter > maxRetries) { - cb(err); + addSignal(this, signal); + } + onConnect(abort, context) { + if (this.reason) { + abort(this.reason); return; } - let retryAfterHeader = headers != null && headers['retry-after']; - if (retryAfterHeader) { - retryAfterHeader = Number(retryAfterHeader); - retryAfterHeader = isNaN(retryAfterHeader) ? calculateRetryAfterHeader(retryAfterHeader) : retryAfterHeader * 1e3; - } - const retryTimeout = - retryAfterHeader > 0 - ? Math.min(retryAfterHeader, maxTimeout) - : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout); - state.currentTimeout = retryTimeout; - setTimeout(() => cb(null), retryTimeout); + assert(this.callback); + this.abort = abort; + this.context = context; } onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const headers = parseHeaders(rawHeaders); - this.retryCount += 1; - if (statusCode >= 300) { - this.abort( - new RequestRetryError('Request failed', statusCode, { - headers, - count: this.retryCount - }) - ); - return false; - } - if (this.resume != null) { - this.resume = null; - if (statusCode !== 206) { - return true; - } - const contentRange = parseRangeHeader(headers['content-range']); - if (!contentRange) { - this.abort( - new RequestRetryError('Content-Range mismatch', statusCode, { - headers, - count: this.retryCount - }) - ); - return false; - } - if (this.etag != null && this.etag !== headers.etag) { - this.abort( - new RequestRetryError('ETag mismatch', statusCode, { - headers, - count: this.retryCount - }) - ); - return false; + const { factory, opaque, context, callback, responseHeaders } = this; + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); } - const { start, size, end = size } = contentRange; - assert(this.start === start, 'content-range mismatch'); - assert(this.end == null || this.end === end, 'content-range mismatch'); - this.resume = resume; - return true; + return; } - if (this.end == null) { - if (statusCode === 206) { - const range = parseRangeHeader(headers['content-range']); - if (range == null) { - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); - } - const { start, size, end = size } = range; - assert(start != null && Number.isFinite(start) && this.start !== start, 'content-range mismatch'); - assert(Number.isFinite(start)); - assert(end != null && Number.isFinite(end) && this.end !== end, 'invalid content-length'); - this.start = start; - this.end = end; - } - if (this.end == null) { - const contentLength = headers['content-length']; - this.end = contentLength != null ? Number(contentLength) : null; + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders['content-type']; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope(getResolveErrorBodyCallback, null, { + callback, + body: res, + contentType, + statusCode, + statusMessage, + headers + }); + } else { + if (factory === null) { + return; } - assert(Number.isFinite(this.start)); - assert(this.end == null || Number.isFinite(this.end), 'invalid content-length'); - this.resume = resume; - this.etag = headers.etag != null ? headers.etag : null; - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }); + if (!res || typeof res.write !== 'function' || typeof res.end !== 'function' || typeof res.on !== 'function') { + throw new InvalidReturnValueError('expected Writable'); + } + finished(res, { readable: false }, err => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); } - const err = new RequestRetryError('Request failed', statusCode, { - headers, - count: this.retryCount - }); - this.abort(err); - return false; + res.on('drain', resume); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState?.needDrain; + return needDrain !== true; } onData(chunk) { - this.start += chunk.length; - return this.handler.onData(chunk); + const { res } = this; + return res ? res.write(chunk) : true; } - onComplete(rawTrailers) { - this.retryCount = 0; - return this.handler.onComplete(rawTrailers); + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); } onError(err) { - if (this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err); + const { res, callback, opaque, body: body2 } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); } - this.retryOpts.retry( - err, - { - state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, - opts: { retryOptions: this.retryOpts, ...this.opts } - }, - onRetry.bind(this) - ); - function onRetry(err2) { - if (err2 != null || this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err2); - } - if (this.start !== 0) { - this.opts = { - ...this.opts, - headers: { - ...this.opts.headers, - range: `bytes=${this.start}-${this.end ?? ''}` - } - }; - } - try { - this.dispatch(this.opts, this); - } catch (err3) { - this.handler.onError(err3); - } + if (body2) { + this.body = null; + util.destroy(body2, err); } } }; - module2.exports = RetryHandler; - } -}); - -// node_modules/undici/lib/global.js -var require_global2 = __commonJS({ - 'node_modules/undici/lib/global.js'(exports2, module2) { - 'use strict'; - var globalDispatcher = Symbol.for('undici.globalDispatcher.1'); - var { InvalidArgumentError } = require_errors(); - var Agent = require_agent(); - if (getGlobalDispatcher() === void 0) { - setGlobalDispatcher(new Agent()); - } - function setGlobalDispatcher(agent) { - if (!agent || typeof agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument agent must implement Agent'); + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); } - Object.defineProperty(globalThis, globalDispatcher, { - value: agent, - writable: true, - enumerable: false, - configurable: false - }); - } - function getGlobalDispatcher() { - return globalThis[globalDispatcher]; } - module2.exports = { - setGlobalDispatcher, - getGlobalDispatcher - }; + module2.exports = stream; } }); -// node_modules/undici/lib/handler/DecoratorHandler.js -var require_DecoratorHandler = __commonJS({ - 'node_modules/undici/lib/handler/DecoratorHandler.js'(exports2, module2) { +// node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + 'node_modules/undici/lib/api/api-pipeline.js'(exports2, module2) { 'use strict'; - module2.exports = class DecoratorHandler { - constructor(handler) { - this.handler = handler; - } - onConnect(...args) { - return this.handler.onConnect(...args); - } - onError(...args) { - return this.handler.onError(...args); + var { Readable, Duplex, PassThrough } = require('node:stream'); + var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { AsyncResource } = require('node:async_hooks'); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require('node:assert'); + var kResume = Symbol('resume'); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; } - onUpgrade(...args) { - return this.handler.onUpgrade(...args); + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } } - onHeaders(...args) { - return this.handler.onHeaders(...args); + _destroy(err, callback) { + this._read(); + callback(err); } - onData(...args) { - return this.handler.onData(...args); + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; } - onComplete(...args) { - return this.handler.onComplete(...args); + _read() { + this[kResume](); } - onBodySent(...args) { - return this.handler.onBodySent(...args); + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); } }; - } -}); - -// node_modules/undici/lib/fetch/headers.js -var require_headers = __commonJS({ - 'node_modules/undici/lib/fetch/headers.js'(exports2, module2) { - 'use strict'; - var { kHeadersList, kConstruct } = require_symbols(); - var { kGuard } = require_symbols2(); - var { kEnumerableProperty } = require_util(); - var { makeIterator, isValidHeaderName, isValidHeaderValue } = require_util2(); - var { webidl } = require_webidl(); - var assert = require('assert'); - var kHeadersMap = Symbol('headers map'); - var kHeadersSortedMap = Symbol('headers map sorted'); - function isHTTPWhiteSpaceCharCode(code) { - return code === 10 || code === 13 || code === 9 || code === 32; - } - function headerValueNormalize(potentialValue) { - let i = 0; - let j = potentialValue.length; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; - return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); - } - function fill(headers, object) { - if (Array.isArray(object)) { - for (let i = 0; i < object.length; ++i) { - const header = object[i]; - if (header.length !== 2) { - throw webidl.errors.exception({ - header: 'Headers constructor', - message: `expected name/value pair to be length 2, found ${header.length}.` - }); - } - appendHeader(headers, header[0], header[1]); + var PipelineHandler = class extends AsyncResource { + constructor(opts, handler2) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); } - } else if (typeof object === 'object' && object !== null) { - const keys = Object.keys(object); - for (let i = 0; i < keys.length; ++i) { - appendHeader(headers, keys[i], object[keys[i]]); + if (typeof handler2 !== 'function') { + throw new InvalidArgumentError('invalid handler'); } - } else { - throw webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence>', 'record'] - }); - } - } - function appendHeader(headers, name, value) { - value = headerValueNormalize(value); - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value: name, - type: 'header name' - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value, - type: 'header value' - }); - } - if (headers[kGuard] === 'immutable') { - throw new TypeError('immutable'); - } else if (headers[kGuard] === 'request-no-cors') { - } - return headers[kHeadersList].append(name, value); - } - var HeadersList = class _HeadersList { - /** @type {[string, string][]|null} */ - cookies = null; - constructor(init) { - if (init instanceof _HeadersList) { - this[kHeadersMap] = new Map(init[kHeadersMap]); - this[kHeadersSortedMap] = init[kHeadersSortedMap]; - this.cookies = init.cookies === null ? null : [...init.cookies]; - } else { - this[kHeadersMap] = new Map(init); - this[kHeadersSortedMap] = null; + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); } - } - // https://fetch.spec.whatwg.org/#header-list-contains - contains(name) { - name = name.toLowerCase(); - return this[kHeadersMap].has(name); - } - clear() { - this[kHeadersMap].clear(); - this[kHeadersSortedMap] = null; - this.cookies = null; - } - // https://fetch.spec.whatwg.org/#concept-header-list-append - append(name, value) { - this[kHeadersSortedMap] = null; - const lowercaseName = name.toLowerCase(); - const exists = this[kHeadersMap].get(lowercaseName); - if (exists) { - const delimiter = lowercaseName === 'cookie' ? '; ' : ', '; - this[kHeadersMap].set(lowercaseName, { - name: exists.name, - value: `${exists.value}${delimiter}${value}` - }); - } else { - this[kHeadersMap].set(lowercaseName, { name, value }); + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method'); } - if (lowercaseName === 'set-cookie') { - this.cookies ??= []; - this.cookies.push(value); + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback'); } + super('UNDICI_PIPELINE'); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler2; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on('error', util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body: body2 } = this; + if (body2?.resume) { + body2.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body: body2, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body2, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on('prefinish', () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); } - // https://fetch.spec.whatwg.org/#concept-header-list-set - set(name, value) { - this[kHeadersSortedMap] = null; - const lowercaseName = name.toLowerCase(); - if (lowercaseName === 'set-cookie') { - this.cookies = [value]; + onConnect(abort, context) { + const { ret, res } = this; + if (this.reason) { + abort(this.reason); + return; } - this[kHeadersMap].set(lowercaseName, { name, value }); + assert(!res, 'pipeline cannot be retried'); + assert(!ret.destroyed); + this.abort = abort; + this.context = context; } - // https://fetch.spec.whatwg.org/#concept-header-list-delete - delete(name) { - this[kHeadersSortedMap] = null; - name = name.toLowerCase(); - if (name === 'set-cookie') { - this.cookies = null; + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler: handler2, context } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; } - this[kHeadersMap].delete(name); + this.res = new PipelineResponse(resume); + let body2; + try { + this.handler = null; + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body2 = this.runInAsyncScope(handler2, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }); + } catch (err) { + this.res.on('error', util.nop); + throw err; + } + if (!body2 || typeof body2.on !== 'function') { + throw new InvalidReturnValueError('expected Readable'); + } + body2 + .on('data', chunk => { + const { ret, body: body3 } = this; + if (!ret.push(chunk) && body3.pause) { + body3.pause(); + } + }) + .on('error', err => { + const { ret } = this; + util.destroy(ret, err); + }) + .on('end', () => { + const { ret } = this; + ret.push(null); + }) + .on('close', () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body2; } - // https://fetch.spec.whatwg.org/#concept-header-list-get - get(name) { - const value = this[kHeadersMap].get(name.toLowerCase()); - return value === void 0 ? null : value.value; + onData(chunk) { + const { res } = this; + return res.push(chunk); } - *[Symbol.iterator]() { - for (const [name, { value }] of this[kHeadersMap]) { - yield [name, value]; - } + onComplete(trailers) { + const { res } = this; + res.push(null); } - get entries() { - const headers = {}; - if (this[kHeadersMap].size) { - for (const { name, value } of this[kHeadersMap].values()) { - headers[name] = value; - } - } - return headers; + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); } }; - var Headers = class _Headers { - constructor(init = void 0) { - if (init === kConstruct) { - return; - } - this[kHeadersList] = new HeadersList(); - this[kGuard] = 'none'; - if (init !== void 0) { - init = webidl.converters.HeadersInit(init); - fill(this, init); - } - } - // https://fetch.spec.whatwg.org/#dom-headers-append - append(name, value) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }); - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - return appendHeader(this, name, value); + function pipeline(opts, handler2) { + try { + const pipelineHandler = new PipelineHandler(opts, handler2); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); } - // https://fetch.spec.whatwg.org/#dom-headers-delete - delete(name) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }); - name = webidl.converters.ByteString(name); - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.delete', - value: name, - type: 'header name' - }); + } + module2.exports = pipeline; + } +}); + +// node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + 'node_modules/undici/lib/api/api-upgrade.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, SocketError } = require_errors(); + var { AsyncResource } = require('node:async_hooks'); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert = require('node:assert'); + var UpgradeHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); } - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable'); - } else if (this[kGuard] === 'request-no-cors') { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); } - if (!this[kHeadersList].contains(name)) { - return; + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); } - this[kHeadersList].delete(name); + super('UNDICI_UPGRADE'); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); } - // https://fetch.spec.whatwg.org/#dom-headers-get - get(name) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }); - name = webidl.converters.ByteString(name); - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.get', - value: name, - type: 'header name' - }); + onConnect(abort, context) { + if (this.reason) { + abort(this.reason); + return; } - return this[kHeadersList].get(name); + assert(this.callback); + this.abort = abort; + this.context = null; } - // https://fetch.spec.whatwg.org/#dom-headers-has - has(name) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }); - name = webidl.converters.ByteString(name); - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.has', - value: name, - type: 'header name' - }); - } - return this[kHeadersList].contains(name); + onHeaders() { + throw new SocketError('bad upgrade', null); } - // https://fetch.spec.whatwg.org/#dom-headers-set - set(name, value) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }); - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - value = headerValueNormalize(value); - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value: name, - type: 'header name' - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value, - type: 'header value' + onUpgrade(statusCode, rawHeaders, socket) { + assert(statusCode === 101); + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); }); } - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable'); - } else if (this[kGuard] === 'request-no-cors') { - } - this[kHeadersList].set(name, value); } - // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie - getSetCookie() { - webidl.brandCheck(this, _Headers); - const list = this[kHeadersList].cookies; - if (list) { - return [...list]; + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch( + { + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, + upgradeHandler + ); + } catch (err) { + if (typeof callback !== 'function') { + throw err; } - return []; + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); } - // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine - get [kHeadersSortedMap]() { - if (this[kHeadersList][kHeadersSortedMap]) { - return this[kHeadersList][kHeadersSortedMap]; + } + module2.exports = upgrade; + } +}); + +// node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + 'node_modules/undici/lib/api/api-connect.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { AsyncResource } = require('node:async_hooks'); + var { InvalidArgumentError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); } - const headers = []; - const names = [...this[kHeadersList]].sort((a, b) => (a[0] < b[0] ? -1 : 1)); - const cookies = this[kHeadersList].cookies; - for (let i = 0; i < names.length; ++i) { - const [name, value] = names[i]; - if (name === 'set-cookie') { - for (let j = 0; j < cookies.length; ++j) { - headers.push([name, cookies[j]]); - } - } else { - assert(value !== null); - headers.push([name, value]); - } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); } - this[kHeadersList][kHeadersSortedMap] = headers; - return headers; - } - keys() { - webidl.brandCheck(this, _Headers); - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, 'Headers', 'key'); + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget'); } - return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'key'); + super('UNDICI_CONNECT'); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); } - values() { - webidl.brandCheck(this, _Headers); - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, 'Headers', 'value'); + onConnect(abort, context) { + if (this.reason) { + abort(this.reason); + return; } - return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'value'); + assert(this.callback); + this.abort = abort; + this.context = context; } - entries() { - webidl.brandCheck(this, _Headers); - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, 'Headers', 'key+value'); - } - return makeIterator(() => [...this[kHeadersSortedMap].values()], 'Headers', 'key+value'); + onHeaders() { + throw new SocketError('bad connect', null); } - /** - * @param {(value: string, key: string, self: Headers) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, _Headers); - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }); - if (typeof callbackFn !== 'function') { - throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."); - } - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }); } - [Symbol.for('nodejs.util.inspect.custom')]() { - webidl.brandCheck(this, _Headers); - return this[kHeadersList]; + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } } }; - Headers.prototype[Symbol.iterator] = Headers.prototype.entries; - Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - getSetCookie: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty, - [Symbol.iterator]: { enumerable: false }, - [Symbol.toStringTag]: { - value: 'Headers', - configurable: true + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data); + }); + }); } - }); - webidl.converters.HeadersInit = function (V) { - if (webidl.util.Type(V) === 'Object') { - if (V[Symbol.iterator]) { - return webidl.converters['sequence>'](V); + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; } - return webidl.converters['record'](V); + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); } - throw webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence>', 'record'] - }); + } + module2.exports = connect; + } +}); + +// node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + 'node_modules/undici/lib/api/index.js'(exports2, module2) { + 'use strict'; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + 'node_modules/undici/lib/mock/mock-errors.js'(exports2, module2) { + 'use strict'; + var { UndiciError } = require_errors(); + var kMockNotMatchedError = Symbol.for('undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED'); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = 'MockNotMatchedError'; + this.message = message || 'The request does not match any registered mock dispatches'; + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kMockNotMatchedError] === true; + } + [kMockNotMatchedError] = true; }; module2.exports = { - fill, - Headers, - HeadersList + MockNotMatchedError }; } }); -// node_modules/undici/lib/fetch/response.js -var require_response = __commonJS({ - 'node_modules/undici/lib/fetch/response.js'(exports2, module2) { +// node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + 'node_modules/undici/lib/mock/mock-symbols.js'(exports2, module2) { 'use strict'; - var { Headers, HeadersList, fill } = require_headers(); - var { extractBody, cloneBody, mixinBody } = require_body(); - var util = require_util(); - var { kEnumerableProperty } = util; + module2.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') + }; + } +}); + +// node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + 'node_modules/undici/lib/mock/mock-utils.js'(exports2, module2) { + 'use strict'; + var { MockNotMatchedError } = require_mock_errors(); + var { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = require_mock_symbols(); + var { buildURL } = require_util(); + var { STATUS_CODES } = require('node:http'); var { - isValidReasonPhrase, - isCancelled, - isAborted, - isBlobLike, - serializeJavascriptValueToJSONString, - isErrorLike, - isomorphicEncode - } = require_util2(); - var { redirectStatusSet, nullBodyStatus, DOMException: DOMException2 } = require_constants2(); - var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); - var { webidl } = require_webidl(); - var { FormData } = require_formdata(); - var { getGlobalOrigin } = require_global(); - var { URLSerializer } = require_dataURL(); - var { kHeadersList, kConstruct } = require_symbols(); - var assert = require('assert'); - var { types } = require('util'); - var ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream; - var textEncoder = new TextEncoder('utf-8'); - var Response = class _Response { - // Creates network error Response. - static error() { - const relevantRealm = { settingsObject: {} }; - const responseObject = new _Response(); - responseObject[kState] = makeNetworkError(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; - return responseObject; - } - // https://fetch.spec.whatwg.org/#dom-response-json - static json(data, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }); - if (init !== null) { - init = webidl.converters.ResponseInit(init); - } - const bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); - const body2 = extractBody(bytes); - const relevantRealm = { settingsObject: {} }; - const responseObject = new _Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = 'response'; - responseObject[kHeaders][kRealm] = relevantRealm; - initializeResponse(responseObject, init, { body: body2[0], type: 'application/json' }); - return responseObject; + types: { isPromise } + } = require('node:util'); + function matchValue(match, value) { + if (typeof match === 'string') { + return match === value; } - // Creates a redirect Response that redirects to url with status status. - static redirect(url, status = 302) { - const relevantRealm = { settingsObject: {} }; - webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }); - url = webidl.converters.USVString(url); - status = webidl.converters['unsigned short'](status); - let parsedURL; - try { - parsedURL = new URL(url, getGlobalOrigin()); - } catch (err) { - throw Object.assign(new TypeError('Failed to parse URL from ' + url), { - cause: err - }); - } - if (!redirectStatusSet.has(status)) { - throw new RangeError('Invalid status code ' + status); - } - const responseObject = new _Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; - responseObject[kState].status = status; - const value = isomorphicEncode(URLSerializer(parsedURL)); - responseObject[kState].headersList.append('location', value); - return responseObject; + if (match instanceof RegExp) { + return match.test(value); } - // https://fetch.spec.whatwg.org/#dom-response - constructor(body2 = null, init = {}) { - if (body2 !== null) { - body2 = webidl.converters.BodyInit(body2); - } - init = webidl.converters.ResponseInit(init); - this[kRealm] = { settingsObject: {} }; - this[kState] = makeResponse({}); - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kGuard] = 'response'; - this[kHeaders][kHeadersList] = this[kState].headersList; - this[kHeaders][kRealm] = this[kRealm]; - let bodyWithType = null; - if (body2 != null) { - const [extractedBody, type] = extractBody(body2); - bodyWithType = { body: extractedBody, type }; + if (typeof match === 'function') { + return match(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } } - initializeResponse(this, init, bodyWithType); + return void 0; + } else if (typeof headers.get === 'function') { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; } - // Returns response’s type, e.g., "cors". - get type() { - webidl.brandCheck(this, _Response); - return this[kState].type; + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); } - // Returns response’s URL, if it has one; otherwise the empty string. - get url() { - webidl.brandCheck(this, _Response); - const urlList = this[kState].urlList; - const url = urlList[urlList.length - 1] ?? null; - if (url === null) { - return ''; + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === 'function') { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); } - return URLSerializer(url, true); + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); } - // Returns whether response was obtained through a redirect. - get redirected() { - webidl.brandCheck(this, _Response); - return this[kState].urlList.length > 1; + if (typeof mockDispatch2.headers === 'undefined') { + return true; } - // Returns response’s status. - get status() { - webidl.brandCheck(this, _Response); - return this[kState].status; + if (typeof headers !== 'object' || typeof mockDispatch2.headers !== 'object') { + return false; } - // Returns whether response’s status is an ok status. - get ok() { - webidl.brandCheck(this, _Response); - return this[kState].status >= 200 && this[kState].status <= 299; + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } } - // Returns response’s status message. - get statusText() { - webidl.brandCheck(this, _Response); - return this[kState].statusText; + return true; + } + function safeUrl(path) { + if (typeof path !== 'string') { + return path; } - // Returns response’s headers as Headers. - get headers() { - webidl.brandCheck(this, _Response); - return this[kHeaders]; + const pathSegments = path.split('?'); + if (pathSegments.length !== 2) { + return path; } - get body() { - webidl.brandCheck(this, _Response); - return this[kState].body ? this[kState].body.stream : null; + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join('?'); + } + function matchKey(mockDispatch2, { path, method, body: body2, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== 'undefined' ? matchValue(mockDispatch2.body, body2) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData2(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (data instanceof Uint8Array) { + return data; + } else if (data instanceof ArrayBuffer) { + return data; + } else if (typeof data === 'object') { + return JSON.stringify(data); + } else { + return data.toString(); } - get bodyUsed() { - webidl.brandCheck(this, _Response); - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches + .filter(({ consumed }) => !consumed) + .filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); } - // Returns a clone of response. - clone() { - webidl.brandCheck(this, _Response); - if (this.bodyUsed || (this.body && this.body.locked)) { - throw webidl.errors.exception({ - header: 'Response.clone', - message: 'Body has already been consumed.' - }); - } - const clonedResponse = cloneResponse(this[kState]); - const clonedResponseObject = new _Response(); - clonedResponseObject[kState] = clonedResponse; - clonedResponseObject[kRealm] = this[kRealm]; - clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; - clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - return clonedResponseObject; + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`); } - }; - mixinBody(Response); - Object.defineProperties(Response.prototype, { - type: kEnumerableProperty, - url: kEnumerableProperty, - status: kEnumerableProperty, - ok: kEnumerableProperty, - redirected: kEnumerableProperty, - statusText: kEnumerableProperty, - headers: kEnumerableProperty, - clone: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'Response', - configurable: true + matchedMockDispatches = matchedMockDispatches.filter(({ body: body2 }) => + typeof body2 !== 'undefined' ? matchValue(body2, key.body) : true + ); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`); } - }); - Object.defineProperties(Response, { - json: kEnumerableProperty, - redirect: kEnumerableProperty, - error: kEnumerableProperty - }); - function cloneResponse(response) { - if (response.internalResponse) { - return filterResponse(cloneResponse(response.internalResponse), response.type); + matchedMockDispatches = matchedMockDispatches.filter(mockDispatch2 => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + const headers = typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers; + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`); } - const newResponse = makeResponse({ ...response, body: null }); - if (response.body != null) { - newResponse.body = cloneBody(response.body); + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === 'function' ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); } - return newResponse; } - function makeResponse(init) { + function buildKey(opts) { + const { path, method, body: body2, headers, query } = opts; return { - aborted: false, - rangeRequested: false, - timingAllowPassed: false, - requestIncludesCredentials: false, - type: 'default', - status: 200, - timingInfo: null, - cacheState: '', - statusText: '', - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), - urlList: init.urlList ? [...init.urlList] : [] + path, + method, + body: body2, + headers, + query }; } - function makeNetworkError(reason) { - const isError = isErrorLike(reason); - return makeResponse({ - type: 'error', - status: 0, - error: isError ? reason : new Error(reason ? String(reason) : reason), - aborted: reason && reason.name === 'AbortError' - }); + function generateKeyValues(data) { + const keys = Object.keys(data); + const result = []; + for (let i = 0; i < keys.length; ++i) { + const key = keys[i]; + const value = data[key]; + const name = Buffer.from(`${key}`); + if (Array.isArray(value)) { + for (let j = 0; j < value.length; ++j) { + result.push(name, Buffer.from(`${value[j]}`)); + } + } else { + result.push(name, Buffer.from(`${value}`)); + } + } + return result; } - function makeFilteredResponse(response, state) { - state = { - internalResponse: response, - ...state - }; - return new Proxy(response, { - get(target, p) { - return p in state ? state[p] : target[p]; - }, - set(target, p, value) { - assert(!(p in state)); - target[p] = value; - return true; - } - }); + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || 'unknown'; } - function filterResponse(response, type) { - if (type === 'basic') { - return makeFilteredResponse(response, { - type: 'basic', - headersList: response.headersList - }); - } else if (type === 'cors') { - return makeFilteredResponse(response, { - type: 'cors', - headersList: response.headersList - }); - } else if (type === 'opaque') { - return makeFilteredResponse(response, { - type: 'opaque', - urlList: Object.freeze([]), - status: 0, - statusText: '', - body: null - }); - } else if (type === 'opaqueredirect') { - return makeFilteredResponse(response, { - type: 'opaqueredirect', - status: 0, - statusText: '', - headersList: [], - body: null - }); - } else { - assert(false); + async function getResponse(body2) { + const buffers = []; + for await (const data of body2) { + buffers.push(data); } + return Buffer.concat(buffers).toString('utf8'); } - function makeAppropriateNetworkError(fetchParams, err = null) { - assert(isCancelled(fetchParams)); - return isAborted(fetchParams) - ? makeNetworkError(Object.assign(new DOMException2('The operation was aborted.', 'AbortError'), { cause: err })) - : makeNetworkError(Object.assign(new DOMException2('Request was cancelled.'), { cause: err })); - } - function initializeResponse(response, init, body2) { - if (init.status !== null && (init.status < 200 || init.status > 599)) { - throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); - } - if ('statusText' in init && init.statusText != null) { - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError('Invalid statusText'); - } - } - if ('status' in init && init.status != null) { - response[kState].status = init.status; + function mockDispatch(opts, handler2) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; } - if ('statusText' in init && init.statusText != null) { - response[kState].statusText = init.statusText; + const { + data: { statusCode, data, headers, trailers, error }, + delay, + persist + } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error !== null) { + deleteMockDispatch(this[kDispatches], key); + handler2.onError(error); + return true; } - if ('headers' in init && init.headers != null) { - fill(response[kHeaders], init.headers); + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); } - if (body2) { - if (nullBodyStatus.includes(response.status)) { - throw webidl.errors.exception({ - header: 'Response constructor', - message: 'Invalid response status code ' + response.status - }); - } - response[kState].body = body2.body; - if (body2.type != null && !response[kState].headersList.contains('Content-Type')) { - response[kState].headersList.append('content-type', body2.type); + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body2 = typeof _data === 'function' ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body2)) { + body2.then(newData => handleReply(mockDispatches, newData)); + return; } + const responseData = getResponseData2(body2); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler2.onConnect?.(err => handler2.onError(err), null); + handler2.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler2.onData?.(Buffer.from(responseData)); + handler2.onComplete?.(responseTrailers); + deleteMockDispatch(mockDispatches, key); } + function resume() {} + return true; } - webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); - webidl.converters.FormData = webidl.interfaceConverter(FormData); - webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); - webidl.converters.XMLHttpRequestBodyInit = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V); - } - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { - return webidl.converters.BufferSource(V); - } - if (util.isFormDataLike(V)) { - return webidl.converters.FormData(V, { strict: false }); - } - if (V instanceof URLSearchParams) { - return webidl.converters.URLSearchParams(V); - } - return webidl.converters.DOMString(V); - }; - webidl.converters.BodyInit = function (V) { - if (V instanceof ReadableStream) { - return webidl.converters.ReadableStream(V); - } - if (V?.[Symbol.asyncIterator]) { - return V; + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler2) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler2); + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError( + `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)` + ); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler2); + } else { + throw new MockNotMatchedError( + `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)` + ); + } + } else { + throw error; + } + } + } else { + originalDispatch.call(this, opts, handler2); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some(matcher => matchValue(matcher, url.host))) { + return true; } - return webidl.converters.XMLHttpRequestBodyInit(V); - }; - webidl.converters.ResponseInit = webidl.dictionaryConverter([ - { - key: 'status', - converter: webidl.converters['unsigned short'], - defaultValue: 200 - }, - { - key: 'statusText', - converter: webidl.converters.ByteString, - defaultValue: '' - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; } - ]); + } module2.exports = { - makeNetworkError, - makeResponse, - makeAppropriateNetworkError, - filterResponse, - Response, - cloneResponse + getResponseData: getResponseData2, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName, + buildHeadersFromArray }; } }); -// node_modules/undici/lib/fetch/request.js -var require_request2 = __commonJS({ - 'node_modules/undici/lib/fetch/request.js'(exports2, module2) { +// node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + 'node_modules/undici/lib/mock/mock-interceptor.js'(exports2, module2) { 'use strict'; - var { extractBody, mixinBody, cloneBody } = require_body(); - var { Headers, fill: fillHeaders, HeadersList } = require_headers(); - var { FinalizationRegistry } = require_dispatcher_weakref()(); - var util = require_util(); - var { isValidHTTPToken, sameOrigin, normalizeMethod, makePolicyContainer, normalizeMethodRecord } = require_util2(); - var { - forbiddenMethodsSet, - corsSafeListedMethodsSet, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - requestDuplex - } = require_constants2(); - var { kEnumerableProperty } = util; - var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); - var { webidl } = require_webidl(); - var { getGlobalOrigin } = require_global(); - var { URLSerializer } = require_dataURL(); - var { kHeadersList, kConstruct } = require_symbols(); - var assert = require('assert'); - var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events'); - var TransformStream = globalThis.TransformStream; - var kAbortController = Symbol('abortController'); - var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { - signal.removeEventListener('abort', abort); - }); - var Request = class _Request { - // https://fetch.spec.whatwg.org/#dom-request - constructor(input, init = {}) { - if (input === kConstruct) { - return; + var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils(); + var { kDispatches, kDispatchKey, kDefaultHeaders, kDefaultTrailers, kContentLength, kMockDispatch } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0'); } - webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }); - input = webidl.converters.RequestInfo(input); - init = webidl.converters.RequestInit(init); - this[kRealm] = { - settingsObject: { - baseUrl: getGlobalOrigin(), - get origin() { - return this.baseUrl?.origin; - }, - policyContainer: makePolicyContainer() - } - }; - let request = null; - let fallbackMode = null; - const baseUrl = this[kRealm].settingsObject.baseUrl; - let signal = null; - if (typeof input === 'string') { - let parsedURL; - try { - parsedURL = new URL(input, baseUrl); - } catch (err) { - throw new TypeError('Failed to parse URL from ' + input, { cause: err }); - } - if (parsedURL.username || parsedURL.password) { - throw new TypeError('Request cannot be constructed from a URL that includes credentials: ' + input); - } - request = makeRequest({ urlList: [parsedURL] }); - fallbackMode = 'cors'; - } else { - assert(input instanceof _Request); - request = input[kState]; - signal = input[kSignal]; - } - const origin = this[kRealm].settingsObject.origin; - let window = 'client'; - if (request.window?.constructor?.name === 'EnvironmentSettingsObject' && sameOrigin(request.window, origin)) { - window = request.window; + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0'); } - if (init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`); + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object'); } - if ('window' in init) { - window = 'no-window'; + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined'); } - request = makeRequest({ - // URL request’s URL. - // undici implementation note: this is set as the first item in request's urlList in makeRequest - // method request’s method. - method: request.method, - // header list A copy of request’s header list. - // undici implementation note: headersList is cloned in makeRequest - headersList: request.headersList, - // unsafe-request flag Set. - unsafeRequest: request.unsafeRequest, - // client This’s relevant settings object. - client: this[kRealm].settingsObject, - // window window. - window, - // priority request’s priority. - priority: request.priority, - // origin request’s origin. The propagation of the origin is only significant for navigation requests - // being handled by a service worker. In this scenario a request can have an origin that is different - // from the current client. - origin: request.origin, - // referrer request’s referrer. - referrer: request.referrer, - // referrer policy request’s referrer policy. - referrerPolicy: request.referrerPolicy, - // mode request’s mode. - mode: request.mode, - // credentials mode request’s credentials mode. - credentials: request.credentials, - // cache mode request’s cache mode. - cache: request.cache, - // redirect mode request’s redirect mode. - redirect: request.redirect, - // integrity metadata request’s integrity metadata. - integrity: request.integrity, - // keepalive request’s keepalive. - keepalive: request.keepalive, - // reload-navigation flag request’s reload-navigation flag. - reloadNavigation: request.reloadNavigation, - // history-navigation flag request’s history-navigation flag. - historyNavigation: request.historyNavigation, - // URL list A clone of request’s URL list. - urlList: [...request.urlList] - }); - const initHasKey = Object.keys(init).length !== 0; - if (initHasKey) { - if (request.mode === 'navigate') { - request.mode = 'same-origin'; - } - request.reloadNavigation = false; - request.historyNavigation = false; - request.origin = 'client'; - request.referrer = 'client'; - request.referrerPolicy = ''; - request.url = request.urlList[request.urlList.length - 1]; - request.urlList = [request.url]; + if (typeof opts.method === 'undefined') { + opts.method = 'GET'; } - if (init.referrer !== void 0) { - const referrer = init.referrer; - if (referrer === '') { - request.referrer = 'no-referrer'; + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); } else { - let parsedReferrer; - try { - parsedReferrer = new URL(referrer, baseUrl); - } catch (err) { - throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); - } - if ( - (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || - (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) - ) { - request.referrer = 'client'; - } else { - request.referrer = parsedReferrer; - } - } - } - if (init.referrerPolicy !== void 0) { - request.referrerPolicy = init.referrerPolicy; - } - let mode; - if (init.mode !== void 0) { - mode = init.mode; - } else { - mode = fallbackMode; - } - if (mode === 'navigate') { - throw webidl.errors.exception({ - header: 'Request constructor', - message: 'invalid request mode navigate.' - }); - } - if (mode != null) { - request.mode = mode; - } - if (init.credentials !== void 0) { - request.credentials = init.credentials; - } - if (init.cache !== void 0) { - request.cache = init.cache; - } - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); - } - if (init.redirect !== void 0) { - request.redirect = init.redirect; - } - if (init.integrity != null) { - request.integrity = String(init.integrity); - } - if (init.keepalive !== void 0) { - request.keepalive = Boolean(init.keepalive); - } - if (init.method !== void 0) { - let method = init.method; - if (!isValidHTTPToken(method)) { - throw new TypeError(`'${method}' is not a valid HTTP method.`); - } - if (forbiddenMethodsSet.has(method.toUpperCase())) { - throw new TypeError(`'${method}' HTTP method is unsupported.`); + const parsedURL = new URL(opts.path, 'data://'); + opts.path = parsedURL.pathname + parsedURL.search; } - method = normalizeMethodRecord[method] ?? normalizeMethod(method); - request.method = method; } - if (init.signal !== void 0) { - signal = init.signal; + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase(); } - this[kState] = request; - const ac = new AbortController(); - this[kSignal] = ac.signal; - this[kSignal][kRealm] = this[kRealm]; - if (signal != null) { - if (!signal || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') { - throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal."); - } - if (signal.aborted) { - ac.abort(signal.reason); - } else { - this[kAbortController] = ac; - const acRef = new WeakRef(ac); - const abort = function () { - const ac2 = acRef.deref(); - if (ac2 !== void 0) { - ac2.abort(this.reason); - } - }; - try { - if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { - setMaxListeners(100, signal); - } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { - setMaxListeners(100, signal); - } - } catch {} - util.addAbortListener(signal, abort); - requestFinalizer.register(ac, { signal, abort }); - } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData({ statusCode, data, responseOptions }) { + const responseData = getResponseData2(data); + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(replyParameters) { + if (typeof replyParameters.statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined'); } - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kHeadersList] = request.headersList; - this[kHeaders][kGuard] = 'request'; - this[kHeaders][kRealm] = this[kRealm]; - if (mode === 'no-cors') { - if (!corsSafeListedMethodsSet.has(request.method)) { - throw new TypeError(`'${request.method} is unsupported in no-cors mode.`); - } - this[kHeaders][kGuard] = 'request-no-cors'; + if (typeof replyParameters.responseOptions !== 'object' || replyParameters.responseOptions === null) { + throw new InvalidArgumentError('responseOptions must be an object'); } - if (initHasKey) { - const headersList = this[kHeaders][kHeadersList]; - const headers = init.headers !== void 0 ? init.headers : new HeadersList(headersList); - headersList.clear(); - if (headers instanceof HeadersList) { - for (const [key, val] of headers) { - headersList.append(key, val); + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyOptionsCallbackOrStatusCode) { + if (typeof replyOptionsCallbackOrStatusCode === 'function') { + const wrappedDefaultsCallback = opts => { + const resolvedData = replyOptionsCallbackOrStatusCode(opts); + if (typeof resolvedData !== 'object' || resolvedData === null) { + throw new InvalidArgumentError('reply options callback must return an object'); } - headersList.cookies = headers.cookies; - } else { - fillHeaders(this[kHeaders], headers); - } - } - const inputBody = input instanceof _Request ? input[kState].body : null; - if ((init.body != null || inputBody != null) && (request.method === 'GET' || request.method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body.'); - } - let initBody = null; - if (init.body != null) { - const [extractedBody, contentType] = extractBody(init.body, request.keepalive); - initBody = extractedBody; - if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { - this[kHeaders].append('content-type', contentType); - } - } - const inputOrInitBody = initBody ?? inputBody; - if (inputOrInitBody != null && inputOrInitBody.source == null) { - if (initBody != null && init.duplex == null) { - throw new TypeError('RequestInit: duplex option is required when sending a body.'); - } - if (request.mode !== 'same-origin' && request.mode !== 'cors') { - throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"'); - } - request.useCORSPreflightFlag = true; - } - let finalBody = inputOrInitBody; - if (initBody == null && inputBody != null) { - if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { - throw new TypeError('Cannot construct a Request with a Request object that has already been used.'); - } - if (!TransformStream) { - TransformStream = require('stream/web').TransformStream; - } - const identityTransform = new TransformStream(); - inputBody.stream.pipeThrough(identityTransform); - finalBody = { - source: inputBody.source, - length: inputBody.length, - stream: identityTransform.readable + const replyParameters2 = { data: '', responseOptions: {}, ...resolvedData }; + this.validateReplyParameters(replyParameters2); + return { + ...this.createMockScopeDispatchData(replyParameters2) + }; }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); } - this[kState].body = finalBody; - } - // Returns request’s HTTP method, which is "GET" by default. - get method() { - webidl.brandCheck(this, _Request); - return this[kState].method; + const replyParameters = { + statusCode: replyOptionsCallbackOrStatusCode, + data: arguments[1] === void 0 ? '' : arguments[1], + responseOptions: arguments[2] === void 0 ? {} : arguments[2] + }; + this.validateReplyParameters(replyParameters); + const dispatchData = this.createMockScopeDispatchData(replyParameters); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); } - // Returns the URL of request as a string. - get url() { - webidl.brandCheck(this, _Request); - return URLSerializer(this[kState].url); + /** + * Mock an undici request with a defined error. + */ + replyWithError(error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined'); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); + return new MockScope(newMockDispatch); } - // Returns a Headers object consisting of the headers associated with request. - // Note that headers added in the network layer by the user agent will not - // be accounted for in this object, e.g., the "Host" header. - get headers() { - webidl.brandCheck(this, _Request); - return this[kHeaders]; + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined'); + } + this[kDefaultHeaders] = headers; + return this; } - // Returns the kind of resource requested by request, e.g., "document" - // or "script". - get destination() { - webidl.brandCheck(this, _Request); - return this[kState].destination; + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined'); + } + this[kDefaultTrailers] = trailers; + return this; } - // Returns the referrer of request. Its value can be a same-origin URL if - // explicitly set in init, the empty string to indicate no referrer, and - // "about:client" when defaulting to the global’s default. This is used - // during fetching to determine the value of the `Referer` header of the - // request being made. - get referrer() { - webidl.brandCheck(this, _Request); - if (this[kState].referrer === 'no-referrer') { - return ''; - } - if (this[kState].referrer === 'client') { - return 'about:client'; - } - return this[kState].referrer.toString(); - } - // Returns the referrer policy associated with request. - // This is used during fetching to compute the value of the request’s - // referrer. - get referrerPolicy() { - webidl.brandCheck(this, _Request); - return this[kState].referrerPolicy; - } - // Returns the mode associated with request, which is a string indicating - // whether the request will use CORS, or will be restricted to same-origin - // URLs. - get mode() { - webidl.brandCheck(this, _Request); - return this[kState].mode; + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; } - // Returns the credentials mode associated with request, - // which is a string indicating whether credentials will be sent with the - // request always, never, or only when sent to a same-origin URL. - get credentials() { - return this[kState].credentials; + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + 'node_modules/undici/lib/mock/mock-client.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('node:util'); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; } - // Returns the cache mode associated with request, - // which is a string indicating how the request will - // interact with the browser’s cache when fetching. - get cache() { - webidl.brandCheck(this, _Request); - return this[kState].cache; + get [Symbols.kConnected]() { + return this[kConnected]; } - // Returns the redirect mode associated with request, - // which is a string indicating how redirects for the - // request will be handled during fetching. A request - // will follow redirects by default. - get redirect() { - webidl.brandCheck(this, _Request); - return this[kState].redirect; + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); } - // Returns request’s subresource integrity metadata, which is a - // cryptographic hash of the resource being fetched. Its value - // consists of multiple hashes separated by whitespace. [SRI] - get integrity() { - webidl.brandCheck(this, _Request); - return this[kState].integrity; + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); } - // Returns a boolean indicating whether or not request can outlive the - // global in which it was created. - get keepalive() { - webidl.brandCheck(this, _Request); - return this[kState].keepalive; + }; + module2.exports = MockClient; + } +}); + +// node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + 'node_modules/undici/lib/mock/mock-pool.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('node:util'); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; } - // Returns a boolean indicating whether or not request is for a reload - // navigation. - get isReloadNavigation() { - webidl.brandCheck(this, _Request); - return this[kState].reloadNavigation; + get [Symbols.kConnected]() { + return this[kConnected]; } - // Returns a boolean indicating whether or not request is for a history - // navigation (a.k.a. back-foward navigation). - get isHistoryNavigation() { - webidl.brandCheck(this, _Request); - return this[kState].historyNavigation; + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); } - // Returns the signal associated with request, which is an AbortSignal - // object indicating whether or not request has been aborted, and its - // abort event handler. - get signal() { - webidl.brandCheck(this, _Request); - return this[kSignal]; + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); } - get body() { - webidl.brandCheck(this, _Request); - return this[kState].body ? this[kState].body.stream : null; + }; + module2.exports = MockPool; + } +}); + +// node_modules/undici/lib/mock/pluralizer.js +var require_pluralizer = __commonJS({ + 'node_modules/undici/lib/mock/pluralizer.js'(exports2, module2) { + 'use strict'; + var singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' + }; + var plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' + }; + module2.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; } - get bodyUsed() { - webidl.brandCheck(this, _Request); - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; } - get duplex() { - webidl.brandCheck(this, _Request); - return 'half'; + }; + } +}); + +// node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + 'node_modules/undici/lib/mock/pending-interceptors-formatter.js'(exports2, module2) { + 'use strict'; + var { Transform } = require('node:stream'); + var { Console } = require('node:console'); + var PERSISTENT = process.versions.icu ? '\u2705' : 'Y '; + var NOT_PERSISTENT = process.versions.icu ? '\u274C' : 'N '; + module2.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); } - // Returns a clone of request. - clone() { - webidl.brandCheck(this, _Request); - if (this.bodyUsed || this.body?.locked) { - throw new TypeError('unusable'); - } - const clonedRequest = cloneRequest(this[kState]); - const clonedRequestObject = new _Request(kConstruct); - clonedRequestObject[kState] = clonedRequest; - clonedRequestObject[kRealm] = this[kRealm]; - clonedRequestObject[kHeaders] = new Headers(kConstruct); - clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; - clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - const ac = new AbortController(); - if (this.signal.aborted) { - ac.abort(this.signal.reason); - } else { - util.addAbortListener(this.signal, () => { - ac.abort(this.signal.reason); - }); - } - clonedRequestObject[kSignal] = ac.signal; - return clonedRequestObject; + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? PERSISTENT : NOT_PERSISTENT, + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); } }; - mixinBody(Request); - function makeRequest(init) { - const request = { - method: 'GET', - localURLsOnly: false, - unsafeRequest: false, - body: null, - client: null, - reservedClient: null, - replacesClientId: '', - window: 'client', - keepalive: false, - serviceWorkers: 'all', - initiator: '', - destination: '', - priority: null, - origin: 'client', - policyContainer: 'client', - referrer: 'client', - referrerPolicy: '', - mode: 'no-cors', - useCORSPreflightFlag: false, - credentials: 'same-origin', - useCredentials: false, - cache: 'default', - redirect: 'follow', - integrity: '', - cryptoGraphicsNonceMetadata: '', - parserMetadata: '', - reloadNavigation: false, - historyNavigation: false, - userActivation: false, - taintedOrigin: false, - redirectCount: 0, - responseTainting: 'basic', - preventNoCacheCacheControlHeaderModification: false, - done: false, - timingAllowFailed: false, - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() - }; - request.url = request.urlList[0]; - return request; - } - function cloneRequest(request) { - const newRequest = makeRequest({ ...request, body: null }); - if (request.body != null) { - newRequest.body = cloneBody(request.body); - } - return newRequest; - } - Object.defineProperties(Request.prototype, { - method: kEnumerableProperty, - url: kEnumerableProperty, - headers: kEnumerableProperty, - redirect: kEnumerableProperty, - clone: kEnumerableProperty, - signal: kEnumerableProperty, - duplex: kEnumerableProperty, - destination: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - isHistoryNavigation: kEnumerableProperty, - isReloadNavigation: kEnumerableProperty, - keepalive: kEnumerableProperty, - integrity: kEnumerableProperty, - cache: kEnumerableProperty, - credentials: kEnumerableProperty, - attribute: kEnumerableProperty, - referrerPolicy: kEnumerableProperty, - referrer: kEnumerableProperty, - mode: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'Request', - configurable: true - } - }); - webidl.converters.Request = webidl.interfaceConverter(Request); - webidl.converters.RequestInfo = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V); - } - if (V instanceof Request) { - return webidl.converters.Request(V); - } - return webidl.converters.USVString(V); - }; - webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); - webidl.converters.RequestInit = webidl.dictionaryConverter([ - { - key: 'method', - converter: webidl.converters.ByteString - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit - }, - { - key: 'body', - converter: webidl.nullableConverter(webidl.converters.BodyInit) - }, - { - key: 'referrer', - converter: webidl.converters.USVString - }, - { - key: 'referrerPolicy', - converter: webidl.converters.DOMString, - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy - allowedValues: referrerPolicy - }, - { - key: 'mode', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#concept-request-mode - allowedValues: requestMode - }, - { - key: 'credentials', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcredentials - allowedValues: requestCredentials - }, - { - key: 'cache', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcache - allowedValues: requestCache - }, - { - key: 'redirect', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestredirect - allowedValues: requestRedirect - }, - { - key: 'integrity', - converter: webidl.converters.DOMString - }, - { - key: 'keepalive', - converter: webidl.converters.boolean - }, - { - key: 'signal', - converter: webidl.nullableConverter(signal => webidl.converters.AbortSignal(signal, { strict: false })) - }, - { - key: 'window', - converter: webidl.converters.any - }, - { - key: 'duplex', - converter: webidl.converters.DOMString, - allowedValues: requestDuplex - } - ]); - module2.exports = { Request, makeRequest }; } }); -// node_modules/undici/lib/fetch/index.js -var require_fetch = __commonJS({ - 'node_modules/undici/lib/fetch/index.js'(exports2, module2) { +// node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + 'node_modules/undici/lib/mock/mock-agent.js'(exports2, module2) { 'use strict'; - var { Response, makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse } = require_response(); - var { Headers } = require_headers(); - var { Request, makeRequest } = require_request2(); - var zlib = require('zlib'); - var { - bytesMatch, - makePolicyContainer, - clonePolicyContainer, - requestBadPort, - TAOCheck, - appendRequestOriginHeader, - responseLocationURL, - requestCurrentURL, - setRequestReferrerPolicyOnRedirect, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - createOpaqueTimingInfo, - appendFetchMetadata, - corsCheck, - crossOriginResourcePolicyCheck, - determineRequestsReferrer, - coarsenedSharedCurrentTime, - createDeferredPromise, - isBlobLike, - sameOrigin, - isCancelled, - isAborted, - isErrorLike, - fullyReadBody, - readableStreamClose, - isomorphicEncode, - urlIsLocal, - urlIsHttpHttpsScheme, - urlHasHttpsScheme - } = require_util2(); - var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); - var assert = require('assert'); - var { safelyExtractBody } = require_body(); - var { - redirectStatusSet, - nullBodyStatus, - safeMethodsSet, - requestBodyHeader, - subresourceSet, - DOMException: DOMException2 - } = require_constants2(); - var { kHeadersList } = require_symbols(); - var EE = require('events'); - var { Readable, pipeline } = require('stream'); - var { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require_util(); - var { dataURLProcessor, serializeAMimeType } = require_dataURL(); - var { TransformStream } = require('stream/web'); - var { getGlobalDispatcher } = require_global2(); - var { webidl } = require_webidl(); - var { STATUS_CODES } = require('http'); - var GET_OR_HEAD = ['GET', 'HEAD']; - var resolveObjectURL; - var ReadableStream = globalThis.ReadableStream; - var Fetch = class extends EE { - constructor(dispatcher) { - super(); - this.dispatcher = dispatcher; - this.connection = null; - this.dump = false; - this.state = 'ongoing'; - this.setMaxListeners(21); - } - terminate(reason) { - if (this.state !== 'ongoing') { - return; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { kAgent, kMockAgentSet, kMockAgentGet, kDispatches, kIsMockActive, kNetConnect, kGetNetConnect, kOptions, kFactory } = + require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts?.agent && typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); } - this.state = 'terminated'; - this.connection?.destroy(reason); - this.emit('terminated', reason); + const agent = opts?.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); } - // https://fetch.spec.whatwg.org/#fetch-controller-abort - abort(error) { - if (this.state !== 'ongoing') { - return; - } - this.state = 'aborted'; - if (!error) { - error = new DOMException2('The operation was aborted.', 'AbortError'); + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); } - this.serializedAbortReason = error; - this.connection?.destroy(error); - this.emit('terminated', error); + return dispatcher; } - }; - function fetch(input, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }); - const p = createDeferredPromise(); - let requestObject; - try { - requestObject = new Request(input, init); - } catch (e) { - p.reject(e); - return p.promise; + dispatch(opts, handler2) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler2); } - const request = requestObject[kState]; - if (requestObject.signal.aborted) { - abortFetch(p, request, null, requestObject.signal.reason); - return p.promise; + async close() { + await this[kAgent].close(); + this[kClients].clear(); } - const globalObject = request.client.globalObject; - if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { - request.serviceWorkers = 'none'; + deactivate() { + this[kIsMockActive] = false; } - let responseObject = null; - const relevantRealm = null; - let locallyAborted = false; - let controller = null; - addAbortListener(requestObject.signal, () => { - locallyAborted = true; - assert(controller != null); - controller.abort(requestObject.signal.reason); - abortFetch(p, request, responseObject, requestObject.signal.reason); - }); - const handleFetchDone = response => finalizeAndReportTiming(response, 'fetch'); - const processResponse = response => { - if (locallyAborted) { - return Promise.resolve(); - } - if (response.aborted) { - abortFetch(p, request, responseObject, controller.serializedAbortReason); - return Promise.resolve(); - } - if (response.type === 'error') { - p.reject(Object.assign(new TypeError('fetch failed'), { cause: response.error })); - return Promise.resolve(); - } - responseObject = new Response(); - responseObject[kState] = response; - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = 'immutable'; - responseObject[kHeaders][kRealm] = relevantRealm; - p.resolve(responseObject); - }; - controller = fetching({ - request, - processResponseEndOfBody: handleFetchDone, - processResponse, - dispatcher: init.dispatcher ?? getGlobalDispatcher() - // undici - }); - return p.promise; - } - function finalizeAndReportTiming(response, initiatorType = 'other') { - if (response.type === 'error' && response.aborted) { - return; + activate() { + this[kIsMockActive] = true; } - if (!response.urlList?.length) { - return; + enableNetConnect(matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.'); + } } - const originalURL = response.urlList[0]; - let timingInfo = response.timingInfo; - let cacheState = response.cacheState; - if (!urlIsHttpHttpsScheme(originalURL)) { - return; + disableNetConnect() { + this[kNetConnect] = false; } - if (timingInfo === null) { - return; - } - if (!response.timingAllowPassed) { - timingInfo = createOpaqueTimingInfo({ - startTime: timingInfo.startTime - }); - cacheState = ''; + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; } - timingInfo.endTime = coarsenedSharedCurrentTime(); - response.timingInfo = timingInfo; - markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); - } - function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { - if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { - performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState); + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, dispatcher); } - } - function abortFetch(p, request, responseObject, error) { - if (!error) { - error = new DOMException2('The operation was aborted.', 'AbortError'); + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions); } - p.reject(error); - if (request.body != null && isReadable(request.body?.stream)) { - request.body.stream.cancel(error).catch(err => { - if (err.code === 'ERR_INVALID_STATE') { - return; + [kMockAgentGet](origin) { + const client = this[kClients].get(origin); + if (client) { + return client; + } + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999'); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; } - throw err; - }); + } } - if (responseObject == null) { - return; + [kGetNetConnect]() { + return this[kNetConnect]; } - const response = responseObject[kState]; - if (response.body != null && isReadable(response.body?.stream)) { - response.body.stream.cancel(error).catch(err => { - if (err.code === 'ERR_INVALID_STATE') { - return; - } - throw err; - }); + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length); + throw new UndiciError( + ` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim() + ); } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + 'node_modules/undici/lib/global.js'(exports2, module2) { + 'use strict'; + var globalDispatcher = Symbol.for('undici.globalDispatcher.1'); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); } - function fetching({ - request, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseEndOfBody, - processResponseConsumeBody, - useParallelQueue = false, - dispatcher - // undici - }) { - let taskDestination = null; - let crossOriginIsolatedCapability = false; - if (request.client != null) { - taskDestination = request.client.globalObject; - crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability; + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent'); } - const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); - const timingInfo = createOpaqueTimingInfo({ - startTime: currenTime + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false }); - const fetchParams = { - controller: new Fetch(dispatcher), - request, - timingInfo, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseConsumeBody, - processResponseEndOfBody, - taskDestination, - crossOriginIsolatedCapability - }; - assert(!request.body || request.body.stream); - if (request.window === 'client') { - request.window = request.client?.globalObject?.constructor?.name === 'Window' ? request.client : 'no-window'; - } - if (request.origin === 'client') { - request.origin = request.client?.origin; - } - if (request.policyContainer === 'client') { - if (request.client != null) { - request.policyContainer = clonePolicyContainer(request.client.policyContainer); - } else { - request.policyContainer = makePolicyContainer(); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// node_modules/undici/lib/handler/decorator-handler.js +var require_decorator_handler = __commonJS({ + 'node_modules/undici/lib/handler/decorator-handler.js'(exports2, module2) { + 'use strict'; + module2.exports = class DecoratorHandler { + #handler; + constructor(handler2) { + if (typeof handler2 !== 'object' || handler2 === null) { + throw new TypeError('handler must be an object'); } + this.#handler = handler2; } - if (!request.headersList.contains('accept')) { - const value = '*/*'; - request.headersList.append('accept', value); + onConnect(...args) { + return this.#handler.onConnect?.(...args); } - if (!request.headersList.contains('accept-language')) { - request.headersList.append('accept-language', '*'); + onError(...args) { + return this.#handler.onError?.(...args); } - if (request.priority === null) { + onUpgrade(...args) { + return this.#handler.onUpgrade?.(...args); } - if (subresourceSet.has(request.destination)) { + onResponseStarted(...args) { + return this.#handler.onResponseStarted?.(...args); } - mainFetch(fetchParams).catch(err => { - fetchParams.controller.terminate(err); - }); - return fetchParams.controller; - } - async function mainFetch(fetchParams, recursive = false) { - const request = fetchParams.request; - let response = null; - if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { - response = makeNetworkError('local URLs only'); + onHeaders(...args) { + return this.#handler.onHeaders?.(...args); } - tryUpgradeRequestToAPotentiallyTrustworthyURL(request); - if (requestBadPort(request) === 'blocked') { - response = makeNetworkError('bad port'); + onData(...args) { + return this.#handler.onData?.(...args); } - if (request.referrerPolicy === '') { - request.referrerPolicy = request.policyContainer.referrerPolicy; + onComplete(...args) { + return this.#handler.onComplete?.(...args); } - if (request.referrer !== 'no-referrer') { - request.referrer = determineRequestsReferrer(request); + onBodySent(...args) { + return this.#handler.onBodySent?.(...args); } - if (response === null) { - response = await (async () => { - const currentURL = requestCurrentURL(request); - if ( - // - request’s current URL’s origin is same origin with request’s origin, - // and request’s response tainting is "basic" - (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || // request’s current URL’s scheme is "data" - currentURL.protocol === 'data:' || // - request’s mode is "navigate" or "websocket" - request.mode === 'navigate' || - request.mode === 'websocket' - ) { - request.responseTainting = 'basic'; - return await schemeFetch(fetchParams); - } - if (request.mode === 'same-origin') { - return makeNetworkError('request mode cannot be "same-origin"'); - } - if (request.mode === 'no-cors') { - if (request.redirect !== 'follow') { - return makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'); - } - request.responseTainting = 'opaque'; - return await schemeFetch(fetchParams); - } - if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { - return makeNetworkError('URL scheme must be a HTTP(S) scheme'); + }; + } +}); + +// node_modules/undici/lib/interceptor/redirect.js +var require_redirect = __commonJS({ + 'node_modules/undici/lib/interceptor/redirect.js'(exports2, module2) { + 'use strict'; + var RedirectHandler = require_redirect_handler(); + module2.exports = opts => { + const globalMaxRedirections = opts?.maxRedirections; + return dispatch => { + return function redirectInterceptor(opts2, handler2) { + const { maxRedirections = globalMaxRedirections, ...baseOpts } = opts2; + if (!maxRedirections) { + return dispatch(opts2, handler2); } - request.responseTainting = 'cors'; - return await httpFetch(fetchParams); - })(); + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts2, handler2); + return dispatch(baseOpts, redirectHandler); + }; + }; + }; + } +}); + +// node_modules/undici/lib/interceptor/retry.js +var require_retry = __commonJS({ + 'node_modules/undici/lib/interceptor/retry.js'(exports2, module2) { + 'use strict'; + var RetryHandler = require_retry_handler(); + module2.exports = globalOpts => { + return dispatch => { + return function retryInterceptor(opts, handler2) { + return dispatch( + opts, + new RetryHandler( + { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } }, + { + handler: handler2, + dispatch + } + ) + ); + }; + }; + }; + } +}); + +// node_modules/undici/lib/interceptor/dump.js +var require_dump = __commonJS({ + 'node_modules/undici/lib/interceptor/dump.js'(exports2, module2) { + 'use strict'; + var util = require_util(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var DecoratorHandler = require_decorator_handler(); + var DumpHandler = class extends DecoratorHandler { + #maxSize = 1024 * 1024; + #abort = null; + #dumped = false; + #aborted = false; + #size = 0; + #reason = null; + #handler = null; + constructor({ maxSize }, handler2) { + super(handler2); + if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) { + throw new InvalidArgumentError('maxSize must be a number greater than 0'); + } + this.#maxSize = maxSize ?? this.#maxSize; + this.#handler = handler2; } - if (recursive) { - return response; + onConnect(abort) { + this.#abort = abort; + this.#handler.onConnect(this.#customAbort.bind(this)); } - if (response.status !== 0 && !response.internalResponse) { - if (request.responseTainting === 'cors') { + #customAbort(reason) { + this.#aborted = true; + this.#reason = reason; + } + // TODO: will require adjustment after new hooks are out + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const headers = util.parseHeaders(rawHeaders); + const contentLength = headers['content-length']; + if (contentLength != null && contentLength > this.#maxSize) { + throw new RequestAbortedError(`Response size (${contentLength}) larger than maxSize (${this.#maxSize})`); } - if (request.responseTainting === 'basic') { - response = filterResponse(response, 'basic'); - } else if (request.responseTainting === 'cors') { - response = filterResponse(response, 'cors'); - } else if (request.responseTainting === 'opaque') { - response = filterResponse(response, 'opaque'); - } else { - assert(false); + if (this.#aborted) { + return true; } + return this.#handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); } - let internalResponse = response.status === 0 ? response : response.internalResponse; - if (internalResponse.urlList.length === 0) { - internalResponse.urlList.push(...request.urlList); + onError(err) { + if (this.#dumped) { + return; + } + err = this.#reason ?? err; + this.#handler.onError(err); } - if (!request.timingAllowFailed) { - response.timingAllowPassed = true; + onData(chunk) { + this.#size = this.#size + chunk.length; + if (this.#size >= this.#maxSize) { + this.#dumped = true; + if (this.#aborted) { + this.#handler.onError(this.#reason); + } else { + this.#handler.onComplete([]); + } + } + return true; } - if ( - response.type === 'opaque' && - internalResponse.status === 206 && - internalResponse.rangeRequested && - !request.headers.contains('range') - ) { - response = internalResponse = makeNetworkError(); + onComplete(trailers) { + if (this.#dumped) { + return; + } + if (this.#aborted) { + this.#handler.onError(this.reason); + return; + } + this.#handler.onComplete(trailers); } - if ( - response.status !== 0 && - (request.method === 'HEAD' || request.method === 'CONNECT' || nullBodyStatus.includes(internalResponse.status)) - ) { - internalResponse.body = null; - fetchParams.controller.dump = true; + }; + function createDumpInterceptor( + { maxSize: defaultMaxSize } = { + maxSize: 1024 * 1024 } - if (request.integrity) { - const processBodyError = reason => fetchFinale(fetchParams, makeNetworkError(reason)); - if (request.responseTainting === 'opaque' || response.body == null) { - processBodyError(response.error); + ) { + return dispatch => { + return function Intercept(opts, handler2) { + const { dumpMaxSize = defaultMaxSize } = opts; + const dumpHandler = new DumpHandler({ maxSize: dumpMaxSize }, handler2); + return dispatch(opts, dumpHandler); + }; + }; + } + module2.exports = createDumpInterceptor; + } +}); + +// node_modules/undici/lib/interceptor/dns.js +var require_dns = __commonJS({ + 'node_modules/undici/lib/interceptor/dns.js'(exports2, module2) { + 'use strict'; + var { isIP } = require('node:net'); + var { lookup } = require('node:dns'); + var DecoratorHandler = require_decorator_handler(); + var { InvalidArgumentError, InformationalError } = require_errors(); + var maxInt = Math.pow(2, 31) - 1; + var DNSInstance = class { + #maxTTL = 0; + #maxItems = 0; + #records = /* @__PURE__ */ new Map(); + dualStack = true; + affinity = null; + lookup = null; + pick = null; + constructor(opts) { + this.#maxTTL = opts.maxTTL; + this.#maxItems = opts.maxItems; + this.dualStack = opts.dualStack; + this.affinity = opts.affinity; + this.lookup = opts.lookup ?? this.#defaultLookup; + this.pick = opts.pick ?? this.#defaultPick; + } + get full() { + return this.#records.size === this.#maxItems; + } + runLookup(origin, opts, cb) { + const ips = this.#records.get(origin.hostname); + if (ips == null && this.full) { + cb(null, origin.origin); return; } - const processBody = bytes => { - if (!bytesMatch(bytes, request.integrity)) { - processBodyError('integrity mismatch'); + const newOpts = { + affinity: this.affinity, + dualStack: this.dualStack, + lookup: this.lookup, + pick: this.pick, + ...opts.dns, + maxTTL: this.#maxTTL, + maxItems: this.#maxItems + }; + if (ips == null) { + this.lookup(origin, newOpts, (err, addresses) => { + if (err || addresses == null || addresses.length === 0) { + cb(err ?? new InformationalError('No DNS entries found')); + return; + } + this.setRecords(origin, addresses); + const records = this.#records.get(origin.hostname); + const ip = this.pick(origin, records, newOpts.affinity); + let port; + if (typeof ip.port === 'number') { + port = `:${ip.port}`; + } else if (origin.port !== '') { + port = `:${origin.port}`; + } else { + port = ''; + } + cb(null, `${origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`); + }); + } else { + const ip = this.pick(origin, ips, newOpts.affinity); + if (ip == null) { + this.#records.delete(origin.hostname); + this.runLookup(origin, opts, cb); return; } - response.body = safelyExtractBody(bytes)[0]; - fetchFinale(fetchParams, response); - }; - await fullyReadBody(response.body, processBody, processBodyError); - } else { - fetchFinale(fetchParams, response); - } - } - function schemeFetch(fetchParams) { - if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { - return Promise.resolve(makeAppropriateNetworkError(fetchParams)); - } - const { request } = fetchParams; - const { protocol: scheme } = requestCurrentURL(request); - switch (scheme) { - case 'about:': { - return Promise.resolve(makeNetworkError('about scheme is not supported')); - } - case 'blob:': { - if (!resolveObjectURL) { - resolveObjectURL = require('buffer').resolveObjectURL; - } - const blobURLEntry = requestCurrentURL(request); - if (blobURLEntry.search.length !== 0) { - return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')); - } - const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); - if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { - return Promise.resolve(makeNetworkError('invalid method')); - } - const bodyWithType = safelyExtractBody(blobURLEntryObject); - const body2 = bodyWithType[0]; - const length = isomorphicEncode(`${body2.length}`); - const type = bodyWithType[1] ?? ''; - const response = makeResponse({ - statusText: 'OK', - headersList: [ - ['content-length', { name: 'Content-Length', value: length }], - ['content-type', { name: 'Content-Type', value: type }] - ] - }); - response.body = body2; - return Promise.resolve(response); - } - case 'data:': { - const currentURL = requestCurrentURL(request); - const dataURLStruct = dataURLProcessor(currentURL); - if (dataURLStruct === 'failure') { - return Promise.resolve(makeNetworkError('failed to fetch the data URL')); + let port; + if (typeof ip.port === 'number') { + port = `:${ip.port}`; + } else if (origin.port !== '') { + port = `:${origin.port}`; + } else { + port = ''; } - const mimeType = serializeAMimeType(dataURLStruct.mimeType); - return Promise.resolve( - makeResponse({ - statusText: 'OK', - headersList: [['content-type', { name: 'Content-Type', value: mimeType }]], - body: safelyExtractBody(dataURLStruct.body)[0] - }) - ); - } - case 'file:': { - return Promise.resolve(makeNetworkError('not implemented... yet...')); - } - case 'http:': - case 'https:': { - return httpFetch(fetchParams).catch(err => makeNetworkError(err)); - } - default: { - return Promise.resolve(makeNetworkError('unknown scheme')); - } - } - } - function finalizeResponse(fetchParams, response) { - fetchParams.request.done = true; - if (fetchParams.processResponseDone != null) { - queueMicrotask(() => fetchParams.processResponseDone(response)); - } - } - function fetchFinale(fetchParams, response) { - if (response.type === 'error') { - response.urlList = [fetchParams.request.urlList[0]]; - response.timingInfo = createOpaqueTimingInfo({ - startTime: fetchParams.timingInfo.startTime - }); - } - const processResponseEndOfBody = () => { - fetchParams.request.done = true; - if (fetchParams.processResponseEndOfBody != null) { - queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + cb(null, `${origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`); } - }; - if (fetchParams.processResponse != null) { - queueMicrotask(() => fetchParams.processResponse(response)); } - if (response.body == null) { - processResponseEndOfBody(); - } else { - const identityTransformAlgorithm = (chunk, controller) => { - controller.enqueue(chunk); - }; - const transformStream = new TransformStream( + #defaultLookup(origin, opts, cb) { + lookup( + origin.hostname, { - start() {}, - transform: identityTransformAlgorithm, - flush: processResponseEndOfBody + all: true, + family: this.dualStack === false ? this.affinity : 0, + order: 'ipv4first' }, - { - size() { - return 1; + (err, addresses) => { + if (err) { + return cb(err); } - }, - { - size() { - return 1; + const results = /* @__PURE__ */ new Map(); + for (const addr of addresses) { + results.set(`${addr.address}:${addr.family}`, addr); } + cb(null, results.values()); } ); - response.body = { stream: response.body.stream.pipeThrough(transformStream) }; } - if (fetchParams.processResponseConsumeBody != null) { - const processBody = nullOrBytes => fetchParams.processResponseConsumeBody(response, nullOrBytes); - const processBodyError = failure => fetchParams.processResponseConsumeBody(response, failure); - if (response.body == null) { - queueMicrotask(() => processBody(null)); + #defaultPick(origin, hostnameRecords, affinity) { + let ip = null; + const { records, offset } = hostnameRecords; + let family; + if (this.dualStack) { + if (affinity == null) { + if (offset == null || offset === maxInt) { + hostnameRecords.offset = 0; + affinity = 4; + } else { + hostnameRecords.offset++; + affinity = (hostnameRecords.offset & 1) === 1 ? 6 : 4; + } + } + if (records[affinity] != null && records[affinity].ips.length > 0) { + family = records[affinity]; + } else { + family = records[affinity === 4 ? 6 : 4]; + } } else { - return fullyReadBody(response.body, processBody, processBodyError); - } - return Promise.resolve(); - } - } - async function httpFetch(fetchParams) { - const request = fetchParams.request; - let response = null; - let actualResponse = null; - const timingInfo = fetchParams.timingInfo; - if (request.serviceWorkers === 'all') { - } - if (response === null) { - if (request.redirect === 'follow') { - request.serviceWorkers = 'none'; - } - actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); - if (request.responseTainting === 'cors' && corsCheck(request, response) === 'failure') { - return makeNetworkError('cors failure'); + family = records[affinity]; } - if (TAOCheck(request, response) === 'failure') { - request.timingAllowFailed = true; - } - } - if ( - (request.responseTainting === 'opaque' || response.type === 'opaque') && - crossOriginResourcePolicyCheck(request.origin, request.client, request.destination, actualResponse) === 'blocked' - ) { - return makeNetworkError('blocked'); - } - if (redirectStatusSet.has(actualResponse.status)) { - if (request.redirect !== 'manual') { - fetchParams.controller.connection.destroy(); + if (family == null || family.ips.length === 0) { + return ip; } - if (request.redirect === 'error') { - response = makeNetworkError('unexpected redirect'); - } else if (request.redirect === 'manual') { - response = actualResponse; - } else if (request.redirect === 'follow') { - response = await httpRedirectFetch(fetchParams, response); + if (family.offset == null || family.offset === maxInt) { + family.offset = 0; } else { - assert(false); - } - } - response.timingInfo = timingInfo; - return response; - } - function httpRedirectFetch(fetchParams, response) { - const request = fetchParams.request; - const actualResponse = response.internalResponse ? response.internalResponse : response; - let locationURL; - try { - locationURL = responseLocationURL(actualResponse, requestCurrentURL(request).hash); - if (locationURL == null) { - return response; + family.offset++; + } + const position = family.offset % family.ips.length; + ip = family.ips[position] ?? null; + if (ip == null) { + return ip; + } + if (Date.now() - ip.timestamp > ip.ttl) { + family.ips.splice(position, 1); + return this.pick(origin, hostnameRecords, affinity); + } + return ip; + } + setRecords(origin, addresses) { + const timestamp = Date.now(); + const records = { records: { 4: null, 6: null } }; + for (const record of addresses) { + record.timestamp = timestamp; + if (typeof record.ttl === 'number') { + record.ttl = Math.min(record.ttl, this.#maxTTL); + } else { + record.ttl = this.#maxTTL; + } + const familyRecords = records.records[record.family] ?? { ips: [] }; + familyRecords.ips.push(record); + records.records[record.family] = familyRecords; } - } catch (err) { - return Promise.resolve(makeNetworkError(err)); + this.#records.set(origin.hostname, records); } - if (!urlIsHttpHttpsScheme(locationURL)) { - return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')); + getHandler(meta, opts) { + return new DNSDispatchHandler(this, meta, opts); } - if (request.redirectCount === 20) { - return Promise.resolve(makeNetworkError('redirect count exceeded')); + }; + var DNSDispatchHandler = class extends DecoratorHandler { + #state = null; + #opts = null; + #dispatch = null; + #handler = null; + #origin = null; + constructor(state, { origin, handler: handler2, dispatch }, opts) { + super(handler2); + this.#origin = origin; + this.#handler = handler2; + this.#opts = { ...opts }; + this.#state = state; + this.#dispatch = dispatch; } - request.redirectCount += 1; - if (request.mode === 'cors' && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) { - return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + onError(err) { + switch (err.code) { + case 'ETIMEDOUT': + case 'ECONNREFUSED': { + if (this.#state.dualStack) { + this.#state.runLookup(this.#origin, this.#opts, (err2, newOrigin) => { + if (err2) { + return this.#handler.onError(err2); + } + const dispatchOpts = { + ...this.#opts, + origin: newOrigin + }; + this.#dispatch(dispatchOpts, this); + }); + return; + } + this.#handler.onError(err); + return; + } + case 'ENOTFOUND': + this.#state.deleteRecord(this.#origin); + default: + this.#handler.onError(err); + break; + } } - if (request.responseTainting === 'cors' && (locationURL.username || locationURL.password)) { - return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"')); + }; + module2.exports = interceptorOpts => { + if (interceptorOpts?.maxTTL != null && (typeof interceptorOpts?.maxTTL !== 'number' || interceptorOpts?.maxTTL < 0)) { + throw new InvalidArgumentError('Invalid maxTTL. Must be a positive number'); } - if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { - return Promise.resolve(makeNetworkError()); + if (interceptorOpts?.maxItems != null && (typeof interceptorOpts?.maxItems !== 'number' || interceptorOpts?.maxItems < 1)) { + throw new InvalidArgumentError('Invalid maxItems. Must be a positive number and greater than zero'); } - if ( - ([301, 302].includes(actualResponse.status) && request.method === 'POST') || - (actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) - ) { - request.method = 'GET'; - request.body = null; - for (const headerName of requestBodyHeader) { - request.headersList.delete(headerName); - } + if (interceptorOpts?.affinity != null && interceptorOpts?.affinity !== 4 && interceptorOpts?.affinity !== 6) { + throw new InvalidArgumentError('Invalid affinity. Must be either 4 or 6'); } - if (!sameOrigin(requestCurrentURL(request), locationURL)) { - request.headersList.delete('authorization'); - request.headersList.delete('proxy-authorization', true); - request.headersList.delete('cookie'); - request.headersList.delete('host'); + if (interceptorOpts?.dualStack != null && typeof interceptorOpts?.dualStack !== 'boolean') { + throw new InvalidArgumentError('Invalid dualStack. Must be a boolean'); } - if (request.body != null) { - assert(request.body.source != null); - request.body = safelyExtractBody(request.body.source)[0]; + if (interceptorOpts?.lookup != null && typeof interceptorOpts?.lookup !== 'function') { + throw new InvalidArgumentError('Invalid lookup. Must be a function'); } - const timingInfo = fetchParams.timingInfo; - timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime( - fetchParams.crossOriginIsolatedCapability - ); - if (timingInfo.redirectStartTime === 0) { - timingInfo.redirectStartTime = timingInfo.startTime; + if (interceptorOpts?.pick != null && typeof interceptorOpts?.pick !== 'function') { + throw new InvalidArgumentError('Invalid pick. Must be a function'); } - request.urlList.push(locationURL); - setRequestReferrerPolicyOnRedirect(request, actualResponse); - return mainFetch(fetchParams, true); + const dualStack = interceptorOpts?.dualStack ?? true; + let affinity; + if (dualStack) { + affinity = interceptorOpts?.affinity ?? null; + } else { + affinity = interceptorOpts?.affinity ?? 4; + } + const opts = { + maxTTL: interceptorOpts?.maxTTL ?? 1e4, + // Expressed in ms + lookup: interceptorOpts?.lookup ?? null, + pick: interceptorOpts?.pick ?? null, + dualStack, + affinity, + maxItems: interceptorOpts?.maxItems ?? Infinity + }; + const instance = new DNSInstance(opts); + return dispatch => { + return function dnsInterceptor(origDispatchOpts, handler2) { + const origin = origDispatchOpts.origin.constructor === URL ? origDispatchOpts.origin : new URL(origDispatchOpts.origin); + if (isIP(origin.hostname) !== 0) { + return dispatch(origDispatchOpts, handler2); + } + instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => { + if (err) { + return handler2.onError(err); + } + let dispatchOpts = null; + dispatchOpts = { + ...origDispatchOpts, + servername: origin.hostname, + // For SNI on TLS + origin: newOrigin, + headers: { + host: origin.hostname, + ...origDispatchOpts.headers + } + }; + dispatch(dispatchOpts, instance.getHandler({ origin, dispatch, handler: handler2 }, origDispatchOpts)); + }); + return true; + }; + }; + }; + } +}); + +// node_modules/undici/lib/web/fetch/headers.js +var require_headers = __commonJS({ + 'node_modules/undici/lib/web/fetch/headers.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols(); + var { kEnumerableProperty } = require_util(); + var { iteratorMixin, isValidHeaderName, isValidHeaderValue } = require_util2(); + var { webidl } = require_webidl(); + var assert = require('node:assert'); + var util = require('node:util'); + var kHeadersMap = Symbol('headers map'); + var kHeadersSortedMap = Symbol('headers map sorted'); + function isHTTPWhiteSpaceCharCode(code) { + return code === 10 || code === 13 || code === 9 || code === 32; } - async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { - const request = fetchParams.request; - let httpFetchParams = null; - let httpRequest = null; - let response = null; - const httpCache = null; - const revalidatingFlag = false; - if (request.window === 'no-window' && request.redirect === 'error') { - httpFetchParams = fetchParams; - httpRequest = request; + function headerValueNormalize(potentialValue) { + let i = 0; + let j = potentialValue.length; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i]; + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + appendHeader(headers, header[0], header[1]); + } + } else if (typeof object === 'object' && object !== null) { + const keys = Object.keys(object); + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]); + } } else { - httpRequest = makeRequest(request); - httpFetchParams = { ...fetchParams }; - httpFetchParams.request = httpRequest; - } - const includeCredentials = - request.credentials === 'include' || (request.credentials === 'same-origin' && request.responseTainting === 'basic'); - const contentLength = httpRequest.body ? httpRequest.body.length : null; - let contentLengthHeaderValue = null; - if (httpRequest.body == null && ['POST', 'PUT'].includes(httpRequest.method)) { - contentLengthHeaderValue = '0'; + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); } - if (contentLength != null) { - contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + function appendHeader(headers, name, value) { + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }); } - if (contentLengthHeaderValue != null) { - httpRequest.headersList.append('content-length', contentLengthHeaderValue); + if (getHeadersGuard(headers) === 'immutable') { + throw new TypeError('immutable'); } - if (contentLength != null && httpRequest.keepalive) { + return getHeadersList(headers).append(name, value, false); + } + function compareHeaderName(a, b) { + return a[0] < b[0] ? -1 : 1; + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies === null ? null : [...init.cookies]; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } } - if (httpRequest.referrer instanceof URL) { - httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)); + /** + * @see https://fetch.spec.whatwg.org/#header-list-contains + * @param {string} name + * @param {boolean} isLowerCase + */ + contains(name, isLowerCase) { + return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase()); } - appendRequestOriginHeader(httpRequest); - appendFetchMetadata(httpRequest); - if (!httpRequest.headersList.contains('user-agent')) { - httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node'); + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; } - if ( - httpRequest.cache === 'default' && - (httpRequest.headersList.contains('if-modified-since') || - httpRequest.headersList.contains('if-none-match') || - httpRequest.headersList.contains('if-unmodified-since') || - httpRequest.headersList.contains('if-match') || - httpRequest.headersList.contains('if-range')) - ) { - httpRequest.cache = 'no-store'; - } - if ( - httpRequest.cache === 'no-cache' && - !httpRequest.preventNoCacheCacheControlHeaderModification && - !httpRequest.headersList.contains('cache-control') - ) { - httpRequest.headersList.append('cache-control', 'max-age=0'); - } - if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { - if (!httpRequest.headersList.contains('pragma')) { - httpRequest.headersList.append('pragma', 'no-cache'); + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-append + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + append(name, value, isLowerCase) { + this[kHeadersSortedMap] = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + const exists = this[kHeadersMap].get(lowercaseName); + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', '; + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); } - if (!httpRequest.headersList.contains('cache-control')) { - httpRequest.headersList.append('cache-control', 'no-cache'); + if (lowercaseName === 'set-cookie') { + (this.cookies ??= []).push(value); } } - if (httpRequest.headersList.contains('range')) { - httpRequest.headersList.append('accept-encoding', 'identity'); + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-set + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + set(name, value, isLowerCase) { + this[kHeadersSortedMap] = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + if (lowercaseName === 'set-cookie') { + this.cookies = [value]; + } + this[kHeadersMap].set(lowercaseName, { name, value }); } - if (!httpRequest.headersList.contains('accept-encoding')) { - if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { - httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate'); - } else { - httpRequest.headersList.append('accept-encoding', 'gzip, deflate'); + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-delete + * @param {string} name + * @param {boolean} isLowerCase + */ + delete(name, isLowerCase) { + this[kHeadersSortedMap] = null; + if (!isLowerCase) name = name.toLowerCase(); + if (name === 'set-cookie') { + this.cookies = null; } + this[kHeadersMap].delete(name); } - httpRequest.headersList.delete('host'); - if (includeCredentials) { + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-get + * @param {string} name + * @param {boolean} isLowerCase + * @returns {string | null} + */ + get(name, isLowerCase) { + return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null; } - if (httpCache == null) { - httpRequest.cache = 'no-store'; + *[Symbol.iterator]() { + for (const { + 0: name, + 1: { value } + } of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size !== 0) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; } - if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + rawValues() { + return this[kHeadersMap].values(); } - if (response == null) { - if (httpRequest.mode === 'only-if-cached') { - return makeNetworkError('only if cached'); + get entriesList() { + const headers = []; + if (this[kHeadersMap].size !== 0) { + for (const { + 0: lowerName, + 1: { name, value } + } of this[kHeadersMap]) { + if (lowerName === 'set-cookie') { + for (const cookie of this.cookies) { + headers.push([name, cookie]); + } + } else { + headers.push([name, value]); + } + } } - const forwardResponse = await httpNetworkFetch(httpFetchParams, includeCredentials, isNewConnectionFetch); - if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + return headers; + } + // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set + toSortedArray() { + const size = this[kHeadersMap].size; + const array = new Array(size); + if (size <= 32) { + if (size === 0) { + return array; + } + const iterator2 = this[kHeadersMap][Symbol.iterator](); + const firstValue = iterator2.next().value; + array[0] = [firstValue[0], firstValue[1].value]; + assert(firstValue[1].value !== null); + for (let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value; i < size; ++i) { + value = iterator2.next().value; + x = array[i] = [value[0], value[1].value]; + assert(x[1] !== null); + left = 0; + right = i; + while (left < right) { + pivot = left + ((right - left) >> 1); + if (array[pivot][0] <= x[0]) { + left = pivot + 1; + } else { + right = pivot; + } + } + if (i !== pivot) { + j = i; + while (j > left) { + array[j] = array[--j]; + } + array[left] = x; + } + } + if (!iterator2.next().done) { + throw new TypeError('Unreachable'); + } + return array; + } else { + let i = 0; + for (const { + 0: name, + 1: { value } + } of this[kHeadersMap]) { + array[i++] = [name, value]; + assert(value !== null); + } + return array.sort(compareHeaderName); } - if (revalidatingFlag && forwardResponse.status === 304) { + } + }; + var Headers = class _Headers { + #guard; + #headersList; + constructor(init = void 0) { + webidl.util.markAsUncloneable(this); + if (init === kConstruct) { + return; } - if (response == null) { - response = forwardResponse; + this.#headersList = new HeadersList(); + this.#guard = 'none'; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init, 'Headers contructor', 'init'); + fill(this, init); } } - response.urlList = [...httpRequest.urlList]; - if (httpRequest.headersList.contains('range')) { - response.rangeRequested = true; + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, 'Headers.append'); + const prefix = 'Headers.append'; + name = webidl.converters.ByteString(name, prefix, 'name'); + value = webidl.converters.ByteString(value, prefix, 'value'); + return appendHeader(this, name, value); } - response.requestIncludesCredentials = includeCredentials; - if (response.status === 407) { - if (request.window === 'no-window') { - return makeNetworkError(); + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, 'Headers.delete'); + const prefix = 'Headers.delete'; + name = webidl.converters.ByteString(name, prefix, 'name'); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }); } - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); + if (this.#guard === 'immutable') { + throw new TypeError('immutable'); } - return makeNetworkError('proxy authentication required'); + if (!this.#headersList.contains(name, false)) { + return; + } + this.#headersList.delete(name, false); } - if ( - // response’s status is 421 - response.status === 421 && // isNewConnectionFetch is false - !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null - (request.body == null || request.body.source != null) - ) { - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, 'Headers.get'); + const prefix = 'Headers.get'; + name = webidl.converters.ByteString(name, prefix, 'name'); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }); } - fetchParams.controller.connection.destroy(); - response = await httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); + return this.#headersList.get(name, false); } - if (isAuthenticationFetch) { + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, 'Headers.has'); + const prefix = 'Headers.has'; + name = webidl.converters.ByteString(name, prefix, 'name'); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }); + } + return this.#headersList.contains(name, false); } - return response; - } - async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { - assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); - fetchParams.controller.connection = { - abort: null, - destroyed: false, - destroy(err) { - if (!this.destroyed) { - this.destroyed = true; - this.abort?.(err ?? new DOMException2('The operation was aborted.', 'AbortError')); - } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, 'Headers.set'); + const prefix = 'Headers.set'; + name = webidl.converters.ByteString(name, prefix, 'name'); + value = webidl.converters.ByteString(value, prefix, 'value'); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: 'header name' + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix, + value, + type: 'header value' + }); } - }; - const request = fetchParams.request; - let response = null; - const timingInfo = fetchParams.timingInfo; - const httpCache = null; - if (httpCache == null) { - request.cache = 'no-store'; + if (this.#guard === 'immutable') { + throw new TypeError('immutable'); + } + this.#headersList.set(name, value, false); } - const newConnection = forceNewConnection ? 'yes' : 'no'; - if (request.mode === 'websocket') { - } else { + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this.#headersList.cookies; + if (list) { + return [...list]; + } + return []; } - let requestBody = null; - if (request.body == null && fetchParams.processRequestEndOfBody) { - queueMicrotask(() => fetchParams.processRequestEndOfBody()); - } else if (request.body != null) { - const processBodyChunk = async function* (bytes) { - if (isCancelled(fetchParams)) { - return; - } - yield bytes; - fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); - }; - const processEndOfBody = () => { - if (isCancelled(fetchParams)) { - return; - } - if (fetchParams.processRequestEndOfBody) { - fetchParams.processRequestEndOfBody(); - } - }; - const processBodyError = e => { - if (isCancelled(fetchParams)) { - return; - } - if (e.name === 'AbortError') { - fetchParams.controller.abort(); - } else { - fetchParams.controller.terminate(e); - } - }; - requestBody = (async function* () { - try { - for await (const bytes of request.body.stream) { - yield* processBodyChunk(bytes); + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this.#headersList[kHeadersSortedMap]) { + return this.#headersList[kHeadersSortedMap]; + } + const headers = []; + const names = this.#headersList.toSortedArray(); + const cookies = this.#headersList.cookies; + if (cookies === null || cookies.length === 1) { + return (this.#headersList[kHeadersSortedMap] = names); + } + for (let i = 0; i < names.length; ++i) { + const { 0: name, 1: value } = names[i]; + if (name === 'set-cookie') { + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]); } - processEndOfBody(); - } catch (err) { - processBodyError(err); + } else { + headers.push([name, value]); } - })(); + } + return (this.#headersList[kHeadersSortedMap] = headers); } - try { - const { body: body2, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); - if (socket) { - response = makeResponse({ status, statusText, headersList, socket }); - } else { - const iterator = body2[Symbol.asyncIterator](); - fetchParams.controller.next = () => iterator.next(); - response = makeResponse({ status, statusText, headersList }); + [util.inspect.custom](depth, options) { + options.depth ??= depth; + return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`; + } + static getHeadersGuard(o) { + return o.#guard; + } + static setHeadersGuard(o, guard) { + o.#guard = guard; + } + static getHeadersList(o) { + return o.#headersList; + } + static setHeadersList(o, list) { + o.#headersList = list; + } + }; + var { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers; + Reflect.deleteProperty(Headers, 'getHeadersGuard'); + Reflect.deleteProperty(Headers, 'setHeadersGuard'); + Reflect.deleteProperty(Headers, 'getHeadersList'); + Reflect.deleteProperty(Headers, 'setHeadersList'); + iteratorMixin('Headers', Headers, kHeadersSortedMap, 0, 1); + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + }, + [util.inspect.custom]: { + enumerable: false + } + }); + webidl.converters.HeadersInit = function (V, prefix, argument) { + if (webidl.util.Type(V) === 'Object') { + const iterator2 = Reflect.get(V, Symbol.iterator); + if (!util.types.isProxy(V) && iterator2 === Headers.prototype.entries) { + try { + return getHeadersList(V).entriesList; + } catch {} } - } catch (err) { - if (err.name === 'AbortError') { - fetchParams.controller.connection.destroy(); - return makeAppropriateNetworkError(fetchParams, err); + if (typeof iterator2 === 'function') { + return webidl.converters['sequence>'](V, prefix, argument, iterator2.bind(V)); } - return makeNetworkError(err); + return webidl.converters['record'](V, prefix, argument); } - const pullAlgorithm = () => { - fetchParams.controller.resume(); - }; - const cancelAlgorithm = reason => { - fetchParams.controller.abort(reason); - }; - if (!ReadableStream) { - ReadableStream = require('stream/web').ReadableStream; - } - const stream = new ReadableStream( - { - async start(controller) { - fetchParams.controller.controller = controller; - }, - async pull(controller) { - await pullAlgorithm(controller); - }, - async cancel(reason) { - await cancelAlgorithm(reason); - } - }, - { - highWaterMark: 0, - size() { - return 1; - } - } - ); - response.body = { stream }; - fetchParams.controller.on('terminated', onAborted); - fetchParams.controller.resume = async () => { - while (true) { - let bytes; - let isFailure; - try { - const { done, value } = await fetchParams.controller.next(); - if (isAborted(fetchParams)) { - break; - } - bytes = done ? void 0 : value; - } catch (err) { - if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { - bytes = void 0; - } else { - bytes = err; - isFailure = true; - } - } - if (bytes === void 0) { - readableStreamClose(fetchParams.controller.controller); - finalizeResponse(fetchParams, response); - return; - } - timingInfo.decodedBodySize += bytes?.byteLength ?? 0; - if (isFailure) { - fetchParams.controller.terminate(bytes); - return; - } - fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); - if (isErrored(stream)) { - fetchParams.controller.terminate(); - return; - } - if (!fetchParams.controller.controller.desiredSize) { - return; - } - } - }; - function onAborted(reason) { - if (isAborted(fetchParams)) { - response.aborted = true; - if (isReadable(stream)) { - fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason); - } - } else { - if (isReadable(stream)) { - fetchParams.controller.controller.error( - new TypeError('terminated', { - cause: isErrorLike(reason) ? reason : void 0 - }) - ); - } - } - fetchParams.controller.connection.destroy(); - } - return response; - async function dispatch({ body: body2 }) { - const url = requestCurrentURL(request); - const agent = fetchParams.controller.dispatcher; - return new Promise((resolve, reject) => - agent.dispatch( - { - path: url.pathname + url.search, - origin: url.origin, - method: request.method, - body: fetchParams.controller.dispatcher.isMockActive - ? request.body && (request.body.source || request.body.stream) - : body2, - headers: request.headersList.entries, - maxRedirections: 0, - upgrade: request.mode === 'websocket' ? 'websocket' : void 0 - }, - { - body: null, - abort: null, - onConnect(abort) { - const { connection } = fetchParams.controller; - if (connection.destroyed) { - abort(new DOMException2('The operation was aborted.', 'AbortError')); - } else { - fetchParams.controller.on('terminated', abort); - this.abort = connection.abort = abort; - } - }, - onHeaders(status, headersList, resume, statusText) { - if (status < 200) { - return; - } - let codings = []; - let location = ''; - const headers = new Headers(); - if (Array.isArray(headersList)) { - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString('latin1'); - const val = headersList[n + 1].toString('latin1'); - if (key.toLowerCase() === 'content-encoding') { - codings = val - .toLowerCase() - .split(',') - .map(x => x.trim()); - } else if (key.toLowerCase() === 'location') { - location = val; - } - headers[kHeadersList].append(key, val); - } - } else { - const keys = Object.keys(headersList); - for (const key of keys) { - const val = headersList[key]; - if (key.toLowerCase() === 'content-encoding') { - codings = val - .toLowerCase() - .split(',') - .map(x => x.trim()) - .reverse(); - } else if (key.toLowerCase() === 'location') { - location = val; - } - headers[kHeadersList].append(key, val); - } - } - this.body = new Readable({ read: resume }); - const decoders = []; - const willFollow = request.redirect === 'follow' && location && redirectStatusSet.has(status); - if ( - request.method !== 'HEAD' && - request.method !== 'CONNECT' && - !nullBodyStatus.includes(status) && - !willFollow - ) { - for (const coding of codings) { - if (coding === 'x-gzip' || coding === 'gzip') { - decoders.push( - zlib.createGunzip({ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH - }) - ); - } else if (coding === 'deflate') { - decoders.push(zlib.createInflate()); - } else if (coding === 'br') { - decoders.push(zlib.createBrotliDecompress()); - } else { - decoders.length = 0; - break; - } - } - } - resolve({ - status, - statusText, - headersList: headers[kHeadersList], - body: decoders.length ? pipeline(this.body, ...decoders, () => {}) : this.body.on('error', () => {}) - }); - return true; - }, - onData(chunk) { - if (fetchParams.controller.dump) { - return; - } - const bytes = chunk; - timingInfo.encodedBodySize += bytes.byteLength; - return this.body.push(bytes); - }, - onComplete() { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort); - } - fetchParams.controller.ended = true; - this.body.push(null); - }, - onError(error) { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort); - } - this.body?.destroy(error); - fetchParams.controller.terminate(error); - reject(error); - }, - onUpgrade(status, headersList, socket) { - if (status !== 101) { - return; - } - const headers = new Headers(); - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString('latin1'); - const val = headersList[n + 1].toString('latin1'); - headers[kHeadersList].append(key, val); - } - resolve({ - status, - statusText: STATUS_CODES[status], - headersList: headers[kHeadersList], - socket - }); - return true; - } - } - ) - ); - } - } - module2.exports = { - fetch, - Fetch, - fetching, - finalizeAndReportTiming + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }); }; - } -}); - -// node_modules/undici/lib/fileapi/symbols.js -var require_symbols3 = __commonJS({ - 'node_modules/undici/lib/fileapi/symbols.js'(exports2, module2) { - 'use strict'; module2.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') + fill, + // for test. + compareHeaderName, + Headers, + HeadersList, + getHeadersGuard, + setHeadersGuard, + setHeadersList, + getHeadersList }; } }); -// node_modules/undici/lib/fileapi/progressevent.js -var require_progressevent = __commonJS({ - 'node_modules/undici/lib/fileapi/progressevent.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/response.js +var require_response = __commonJS({ + 'node_modules/undici/lib/web/fetch/response.js'(exports2, module2) { 'use strict'; + var { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers(); + var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body(); + var util = require_util(); + var nodeUtil = require('node:util'); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode, + environmentSettingsObject: relevantRealm + } = require_util2(); + var { redirectStatusSet, nullBodyStatus } = require_constants3(); + var { kState, kHeaders } = require_symbols2(); var { webidl } = require_webidl(); - var kState = Symbol('ProgressEvent state'); - var ProgressEvent = class _ProgressEvent extends Event { - constructor(type, eventInitDict = {}) { - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); - super(type, eventInitDict); - this[kState] = { - lengthComputable: eventInitDict.lengthComputable, - loaded: eventInitDict.loaded, - total: eventInitDict.total - }; - } - get lengthComputable() { - webidl.brandCheck(this, _ProgressEvent); - return this[kState].lengthComputable; + var { FormData } = require_formdata(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert = require('node:assert'); + var { types } = require('node:util'); + var textEncoder = new TextEncoder('utf-8'); + var Response = class _Response { + // Creates network error Response. + static error() { + const responseObject = fromInnerResponse(makeNetworkError(), 'immutable'); + return responseObject; } - get loaded() { - webidl.brandCheck(this, _ProgressEvent); - return this[kState].loaded; + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, 'Response.json'); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); + const body2 = extractBody(bytes); + const responseObject = fromInnerResponse(makeResponse({}), 'response'); + initializeResponse(responseObject, init, { body: body2[0], type: 'application/json' }); + return responseObject; } - get total() { - webidl.brandCheck(this, _ProgressEvent); - return this[kState].total; + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + webidl.argumentLengthCheck(arguments, 1, 'Response.redirect'); + url = webidl.converters.USVString(url); + status = webidl.converters['unsigned short'](status); + let parsedURL; + try { + parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl); + } catch (err) { + throw new TypeError(`Failed to parse URL from ${url}`, { cause: err }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError(`Invalid status code ${status}`); + } + const responseObject = fromInnerResponse(makeResponse({}), 'immutable'); + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append('location', value, true); + return responseObject; } - }; - webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ - { - key: 'lengthComputable', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'loaded', - converter: webidl.converters['unsigned long long'], - defaultValue: 0 - }, - { - key: 'total', - converter: webidl.converters['unsigned long long'], - defaultValue: 0 - }, + // https://fetch.spec.whatwg.org/#dom-response + constructor(body2 = null, init = {}) { + webidl.util.markAsUncloneable(this); + if (body2 === kConstruct) { + return; + } + if (body2 !== null) { + body2 = webidl.converters.BodyInit(body2); + } + init = webidl.converters.ResponseInit(init); + this[kState] = makeResponse({}); + this[kHeaders] = new Headers(kConstruct); + setHeadersGuard(this[kHeaders], 'response'); + setHeadersList(this[kHeaders], this[kState].headersList); + let bodyWithType = null; + if (body2 != null) { + const [extractedBody, type] = extractBody(body2); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ''; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (bodyUnusable(this)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }); + } + const clonedResponse = cloneResponse(this[kState]); + if (hasFinalizationRegistry && this[kState].body?.stream) { + streamRegistry.register(this, new WeakRef(this[kState].body.stream)); + } + return fromInnerResponse(clonedResponse, getHeadersGuard(this[kHeaders])); + } + [nodeUtil.inspect.custom](depth, options) { + if (options.depth === null) { + options.depth = 2; + } + options.colors ??= true; + const properties = { + 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 ${nodeUtil.formatWithOptions(options, properties)}`; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse(cloneResponse(response.internalResponse), response.type); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(newResponse, response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init?.headersList ? new HeadersList(init?.headersList) : new HeadersList(), + urlList: init?.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: 'error', + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }); + } + function isNetworkError(response) { + return ( + // A network error is a response whose type is "error", + response.type === 'error' && // status is 0 + response.status === 0 + ); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === 'basic') { + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }); + } else if (type === 'cors') { + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }); + } else if (type === 'opaque') { + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }); + } else if (type === 'opaqueredirect') { + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(isCancelled(fetchParams)); + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })); + } + function initializeResponse(response, init, body2) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ('statusText' in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText'); + } + } + if ('status' in init && init.status != null) { + response[kState].status = init.status; + } + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body2) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: `Invalid response status code ${response.status}` + }); + } + response[kState].body = body2.body; + if (body2.type != null && !response[kState].headersList.contains('content-type', true)) { + response[kState].headersList.append('content-type', body2.type, true); + } + } + } + function fromInnerResponse(innerResponse, guard) { + const response = new Response(kConstruct); + response[kState] = innerResponse; + response[kHeaders] = new Headers(kConstruct); + setHeadersList(response[kHeaders], innerResponse.headersList); + setHeadersGuard(response[kHeaders], guard); + if (hasFinalizationRegistry && innerResponse.body?.stream) { + streamRegistry.register(response, new WeakRef(innerResponse.body.stream)); + } + return response; + } + webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); + webidl.converters.FormData = webidl.interfaceConverter(FormData); + webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); + webidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) { + if (typeof V === 'string') { + return webidl.converters.USVString(V, prefix, name); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, prefix, name, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V, prefix, name); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, prefix, name, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V, prefix, name); + } + return webidl.converters.DOMString(V, prefix, name); + }; + webidl.converters.BodyInit = function (V, prefix, argument) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V, prefix, argument); + } + if (V?.[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ { - key: 'bubbles', - converter: webidl.converters.boolean, - defaultValue: false + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: () => 200 }, { - key: 'cancelable', - converter: webidl.converters.boolean, - defaultValue: false + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: () => '' }, { - key: 'composed', - converter: webidl.converters.boolean, - defaultValue: false + key: 'headers', + converter: webidl.converters.HeadersInit } ]); module2.exports = { - ProgressEvent + isNetworkError, + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse, + fromInnerResponse }; } }); -// node_modules/undici/lib/fileapi/encoding.js -var require_encoding = __commonJS({ - 'node_modules/undici/lib/fileapi/encoding.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + 'node_modules/undici/lib/web/fetch/dispatcher-weakref.js'(exports2, module2) { 'use strict'; - function getEncoding(label) { - if (!label) { - return 'failure'; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; } - switch (label.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': + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + unregister(key) {} + }; + module2.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, FinalizationRegistry }; + }; + } +}); + +// node_modules/undici/lib/web/fetch/request.js +var require_request2 = __commonJS({ + 'node_modules/undici/lib/web/fetch/request.js'(exports2, module2) { + 'use strict'; + var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body(); + var { + Headers, + fill: fillHeaders, + HeadersList, + setHeadersGuard, + getHeadersGuard, + setHeadersList, + getHeadersList + } = require_headers(); + var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()(); + var util = require_util(); + var nodeUtil = require('node:util'); + var { isValidHTTPToken, sameOrigin, environmentSettingsObject } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants3(); + var { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util; + var { kHeaders, kSignal, kState, kDispatcher } = require_symbols2(); + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert = require('node:assert'); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('node:events'); + var kAbortController = Symbol('abortController'); + var requestFinalizer = new FinalizationRegistry2(({ signal, abort }) => { + signal.removeEventListener('abort', abort); + }); + var dependentControllerMap = /* @__PURE__ */ new WeakMap(); + function buildAbort(acRef) { + return abort; + function abort() { + const ac = acRef.deref(); + if (ac !== void 0) { + requestFinalizer.unregister(abort); + this.removeEventListener('abort', abort); + ac.abort(this.reason); + const controllerList = dependentControllerMap.get(ac.signal); + if (controllerList !== void 0) { + if (controllerList.size !== 0) { + for (const ref of controllerList) { + const ctrl = ref.deref(); + if (ctrl !== void 0) { + ctrl.abort(this.reason); + } + } + controllerList.clear(); + } + dependentControllerMap.delete(ac.signal); + } + } + } + } + var patchMethodWarning = false; + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + webidl.util.markAsUncloneable(this); + if (input === kConstruct) { + return; + } + const prefix = 'Request constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + input = webidl.converters.RequestInfo(input, prefix, 'input'); + init = webidl.converters.RequestInit(init, prefix, 'init'); + let request2 = null; + let fallbackMode = null; + const baseUrl = environmentSettingsObject.settingsObject.baseUrl; + let signal = null; + if (typeof input === 'string') { + this[kDispatcher] = init.dispatcher; + let parsedURL; + try { + parsedURL = new URL(input, baseUrl); + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError('Request cannot be constructed from a URL that includes credentials: ' + input); + } + request2 = makeRequest({ urlList: [parsedURL] }); + fallbackMode = 'cors'; + } else { + this[kDispatcher] = init.dispatcher || input[kDispatcher]; + assert(input instanceof _Request); + request2 = input[kState]; + signal = input[kSignal]; + } + const origin = environmentSettingsObject.settingsObject.origin; + let window = 'client'; + if (request2.window?.constructor?.name === 'EnvironmentSettingsObject' && sameOrigin(request2.window, origin)) { + window = request2.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ('window' in init) { + window = 'no-window'; + } + request2 = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request2.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request2.headersList, + // unsafe-request flag Set. + unsafeRequest: request2.unsafeRequest, + // client This’s relevant settings object. + client: environmentSettingsObject.settingsObject, + // window window. + window, + // priority request’s priority. + priority: request2.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request2.origin, + // referrer request’s referrer. + referrer: request2.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request2.referrerPolicy, + // mode request’s mode. + mode: request2.mode, + // credentials mode request’s credentials mode. + credentials: request2.credentials, + // cache mode request’s cache mode. + cache: request2.cache, + // redirect mode request’s redirect mode. + redirect: request2.redirect, + // integrity metadata request’s integrity metadata. + integrity: request2.integrity, + // keepalive request’s keepalive. + keepalive: request2.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request2.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request2.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request2.urlList] + }); + const initHasKey = Object.keys(init).length !== 0; + if (initHasKey) { + if (request2.mode === 'navigate') { + request2.mode = 'same-origin'; + } + request2.reloadNavigation = false; + request2.historyNavigation = false; + request2.origin = 'client'; + request2.referrer = 'client'; + request2.referrerPolicy = ''; + request2.url = request2.urlList[request2.urlList.length - 1]; + request2.urlList = [request2.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === '') { + request2.referrer = 'no-referrer'; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl)) + ) { + request2.referrer = 'client'; + } else { + request2.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request2.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }); + } + if (mode != null) { + request2.mode = mode; + } + if (init.credentials !== void 0) { + request2.credentials = init.credentials; + } + if (init.cache !== void 0) { + request2.cache = init.cache; + } + if (request2.cache === 'only-if-cached' && request2.mode !== 'same-origin') { + throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); + } + if (init.redirect !== void 0) { + request2.redirect = init.redirect; + } + if (init.integrity != null) { + request2.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request2.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + const mayBeNormalized = normalizedMethodRecords[method]; + if (mayBeNormalized !== void 0) { + request2.method = mayBeNormalized; + } else { + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`); + } + const upperCase = method.toUpperCase(); + if (forbiddenMethodsSet.has(upperCase)) { + throw new TypeError(`'${method}' HTTP method is unsupported.`); + } + method = normalizedMethodRecordsBase[upperCase] ?? method; + request2.method = method; + } + if (!patchMethodWarning && request2.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' + } + ); + patchMethodWarning = true; + } + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request2; + const ac = new AbortController(); + this[kSignal] = ac.signal; + if (signal != null) { + if (!signal || typeof signal.aborted !== 'boolean' || typeof signal.addEventListener !== 'function') { + throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal."); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = buildAbort(acRef); + try { + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(1500, signal); + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(1500, signal); + } + } catch {} + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }, abort); + } + } + this[kHeaders] = new Headers(kConstruct); + setHeadersList(this[kHeaders], request2.headersList); + setHeadersGuard(this[kHeaders], 'request'); + if (mode === 'no-cors') { + if (!corsSafeListedMethodsSet.has(request2.method)) { + throw new TypeError(`'${request2.method} is unsupported in no-cors mode.`); + } + setHeadersGuard(this[kHeaders], 'request-no-cors'); + } + if (initHasKey) { + const headersList = getHeadersList(this[kHeaders]); + const headers = init.headers !== void 0 ? init.headers : new HeadersList(headersList); + headersList.clear(); + if (headers instanceof HeadersList) { + for (const { name, value } of headers.rawValues()) { + headersList.append(name, value, false); + } + headersList.cookies = headers.cookies; + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request2.method === 'GET' || request2.method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body.'); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody(init.body, request2.keepalive); + initBody = extractedBody; + if (contentType && !getHeadersList(this[kHeaders]).contains('content-type', true)) { + this[kHeaders].append('content-type', contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.'); + } + if (request2.mode !== 'same-origin' && request2.mode !== 'cors') { + throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"'); + } + request2.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (bodyUnusable(input)) { + throw new TypeError('Cannot construct a Request with a Request object that has already been used.'); + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === 'no-referrer') { + return ''; + } + if (this[kState].referrer === 'client') { + return 'about:client'; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-forward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return 'half'; + } + // Returns a clone of request. + clone() { + webidl.brandCheck(this, _Request); + if (bodyUnusable(this)) { + throw new TypeError('unusable'); + } + const clonedRequest = cloneRequest(this[kState]); + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + let list = dependentControllerMap.get(this.signal); + if (list === void 0) { + list = /* @__PURE__ */ new Set(); + dependentControllerMap.set(this.signal, list); + } + const acRef = new WeakRef(ac); + list.add(acRef); + util.addAbortListener(ac.signal, buildAbort(acRef)); + } + return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders])); + } + [nodeUtil.inspect.custom](depth, options) { + if (options.depth === null) { + options.depth = 2; + } + options.colors ??= true; + const properties = { + 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 ${nodeUtil.formatWithOptions(options, properties)}`; + } + }; + mixinBody(Request); + function makeRequest(init) { + return { + method: init.method ?? 'GET', + localURLsOnly: init.localURLsOnly ?? false, + unsafeRequest: init.unsafeRequest ?? false, + body: init.body ?? null, + client: init.client ?? null, + reservedClient: init.reservedClient ?? null, + replacesClientId: init.replacesClientId ?? '', + window: init.window ?? 'client', + keepalive: init.keepalive ?? false, + serviceWorkers: init.serviceWorkers ?? 'all', + initiator: init.initiator ?? '', + destination: init.destination ?? '', + priority: init.priority ?? null, + origin: init.origin ?? 'client', + policyContainer: init.policyContainer ?? 'client', + referrer: init.referrer ?? 'client', + referrerPolicy: init.referrerPolicy ?? '', + mode: init.mode ?? 'no-cors', + useCORSPreflightFlag: init.useCORSPreflightFlag ?? false, + credentials: init.credentials ?? 'same-origin', + useCredentials: init.useCredentials ?? false, + cache: init.cache ?? 'default', + redirect: init.redirect ?? 'follow', + integrity: init.integrity ?? '', + cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? '', + parserMetadata: init.parserMetadata ?? '', + reloadNavigation: init.reloadNavigation ?? false, + historyNavigation: init.historyNavigation ?? false, + userActivation: init.userActivation ?? false, + taintedOrigin: init.taintedOrigin ?? false, + redirectCount: init.redirectCount ?? 0, + responseTainting: init.responseTainting ?? 'basic', + preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false, + done: init.done ?? false, + timingAllowFailed: init.timingAllowFailed ?? false, + urlList: init.urlList, + url: init.urlList[0], + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + } + function cloneRequest(request2) { + const newRequest = makeRequest({ ...request2, body: null }); + if (request2.body != null) { + newRequest.body = cloneBody(newRequest, request2.body); + } + return newRequest; + } + function fromInnerRequest(innerRequest, signal, guard) { + const request2 = new Request(kConstruct); + request2[kState] = innerRequest; + request2[kSignal] = signal; + request2[kHeaders] = new Headers(kConstruct); + setHeadersList(request2[kHeaders], innerRequest.headersList); + setHeadersGuard(request2[kHeaders], guard); + return request2; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter(Request); + webidl.converters.RequestInfo = function (V, prefix, argument) { + if (typeof V === 'string') { + return webidl.converters.USVString(V, prefix, argument); + } + if (V instanceof Request) { + return webidl.converters.Request(V, prefix, argument); + } + return webidl.converters.USVString(V, prefix, argument); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter(webidl.converters.BodyInit) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter(signal => + webidl.converters.AbortSignal(signal, 'RequestInit', 'signal', { strict: false }) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + }, + { + key: 'dispatcher', + // undici specific option + converter: webidl.converters.any + } + ]); + module2.exports = { Request, makeRequest, fromInnerRequest, cloneRequest }; + } +}); + +// node_modules/undici/lib/web/fetch/index.js +var require_fetch = __commonJS({ + 'node_modules/undici/lib/web/fetch/index.js'(exports2, module2) { + 'use strict'; + var { makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse, fromInnerResponse } = require_response(); + var { HeadersList } = require_headers(); + var { Request, cloneRequest } = require_request2(); + var zlib = require('node:zlib'); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme, + clampAndCoarsenConnectionTimingInfo, + simpleRangeHeaderValue, + buildContentRange, + createInflate, + extractMimeType + } = require_util2(); + var { kState, kDispatcher } = require_symbols2(); + var assert = require('node:assert'); + var { safelyExtractBody, extractBody } = require_body(); + var { redirectStatusSet, nullBodyStatus, safeMethodsSet, requestBodyHeader, subresourceSet } = require_constants3(); + var EE = require('node:events'); + var { Readable, pipeline, finished } = require('node:stream'); + var { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require_util(); + var { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require_data_url(); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = require('node:http'); + var GET_OR_HEAD = ['GET', 'HEAD']; + var defaultUserAgent = + typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined' ? 'node' : 'undici'; + var resolveObjectURL; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = 'ongoing'; + } + terminate(reason) { + if (this.state !== 'ongoing') { + return; + } + this.state = 'terminated'; + this.connection?.destroy(reason); + this.emit('terminated', reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error) { + if (this.state !== 'ongoing') { + return; + } + this.state = 'aborted'; + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError'); + } + this.serializedAbortReason = error; + this.connection?.destroy(error); + this.emit('terminated', error); + } + }; + function handleFetchDone(response) { + finalizeAndReportTiming(response, 'fetch'); + } + function fetch(input, init = void 0) { + webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch'); + let p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request2 = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request2, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request2.client.globalObject; + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request2.serviceWorkers = 'none'; + } + let responseObject = null; + let locallyAborted = false; + let controller = null; + addAbortListener(requestObject.signal, () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + const realResponse = responseObject?.deref(); + abortFetch(p, request2, realResponse, requestObject.signal.reason); + }); + const processResponse = response => { + if (locallyAborted) { + return; + } + if (response.aborted) { + abortFetch(p, request2, responseObject, controller.serializedAbortReason); + return; + } + if (response.type === 'error') { + p.reject(new TypeError('fetch failed', { cause: response.error })); + return; + } + responseObject = new WeakRef(fromInnerResponse(response, 'immutable')); + p.resolve(responseObject.deref()); + p = null; + }; + controller = fetching({ + request: request2, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: requestObject[kDispatcher] + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = 'other') { + if (response.type === 'error' && response.aborted) { + return; + } + if (!response.urlList?.length) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ''; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState); + } + var markResourceTiming = performance.markResourceTiming; + function abortFetch(p, request2, responseObject, error) { + if (p) { + p.reject(error); + } + if (request2.body != null && isReadable(request2.body?.stream)) { + request2.body.stream.cancel(error).catch(err => { + if (err.code === 'ERR_INVALID_STATE') { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch(err => { + if (err.code === 'ERR_INVALID_STATE') { + return; + } + throw err; + }); + } + } + function fetching({ + request: request2, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher = getGlobalDispatcher() + // undici + }) { + assert(dispatcher); + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request2.client != null) { + taskDestination = request2.client.globalObject; + crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability; + } + const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currentTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request: request2, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert(!request2.body || request2.body.stream); + if (request2.window === 'client') { + request2.window = request2.client?.globalObject?.constructor?.name === 'Window' ? request2.client : 'no-window'; + } + if (request2.origin === 'client') { + request2.origin = request2.client.origin; + } + if (request2.policyContainer === 'client') { + if (request2.client != null) { + request2.policyContainer = clonePolicyContainer(request2.client.policyContainer); + } else { + request2.policyContainer = makePolicyContainer(); + } + } + if (!request2.headersList.contains('accept', true)) { + const value = '*/*'; + request2.headersList.append('accept', value, true); + } + if (!request2.headersList.contains('accept-language', true)) { + request2.headersList.append('accept-language', '*', true); + } + if (request2.priority === null) { + } + if (subresourceSet.has(request2.destination)) { + } + mainFetch(fetchParams).catch(err => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request2 = fetchParams.request; + let response = null; + if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) { + response = makeNetworkError('local URLs only'); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request2); + if (requestBadPort(request2) === 'blocked') { + response = makeNetworkError('bad port'); + } + if (request2.referrerPolicy === '') { + request2.referrerPolicy = request2.policyContainer.referrerPolicy; + } + if (request2.referrer !== 'no-referrer') { + request2.referrer = determineRequestsReferrer(request2); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request2); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request2.url) && request2.responseTainting === 'basic') || // request’s current URL’s scheme is "data" + currentURL.protocol === 'data:' || // - request’s mode is "navigate" or "websocket" + request2.mode === 'navigate' || + request2.mode === 'websocket' + ) { + request2.responseTainting = 'basic'; + return await schemeFetch(fetchParams); + } + if (request2.mode === 'same-origin') { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request2.mode === 'no-cors') { + if (request2.redirect !== 'follow') { + return makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'); + } + request2.responseTainting = 'opaque'; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) { + return makeNetworkError('URL scheme must be a HTTP(S) scheme'); + } + request2.responseTainting = 'cors'; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request2.responseTainting === 'cors') { + } + if (request2.responseTainting === 'basic') { + response = filterResponse(response, 'basic'); + } else if (request2.responseTainting === 'cors') { + response = filterResponse(response, 'cors'); + } else if (request2.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque'); + } else { + assert(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request2.urlList); + } + if (!request2.timingAllowFailed) { + response.timingAllowPassed = true; + } + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request2.headers.contains('range', true) + ) { + response = internalResponse = makeNetworkError(); + } + if ( + response.status !== 0 && + (request2.method === 'HEAD' || request2.method === 'CONNECT' || nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request2.integrity) { + const processBodyError = reason => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request2.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = bytes => { + if (!bytesMatch(bytes, request2.integrity)) { + processBodyError('integrity mismatch'); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request: request2 } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request2); + switch (scheme) { + case 'about:': { + return Promise.resolve(makeNetworkError('about scheme is not supported')); + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = require('node:buffer').resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request2); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')); + } + const blob = resolveObjectURL(blobURLEntry.toString()); + if (request2.method !== 'GET' || !isBlobLike(blob)) { + return Promise.resolve(makeNetworkError('invalid method')); + } + const response = makeResponse(); + const fullLength = blob.size; + const serializedFullLength = isomorphicEncode(`${fullLength}`); + const type = blob.type; + if (!request2.headersList.contains('range', true)) { + const bodyWithType = extractBody(blob); + response.statusText = 'OK'; + response.body = bodyWithType[0]; + response.headersList.set('content-length', serializedFullLength, true); + response.headersList.set('content-type', type, true); + } else { + response.rangeRequested = true; + const rangeHeader = request2.headersList.get('range', true); + const rangeValue = simpleRangeHeaderValue(rangeHeader, true); + if (rangeValue === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')); + } + let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue; + if (rangeStart === null) { + rangeStart = fullLength - rangeEnd; + rangeEnd = rangeStart + rangeEnd - 1; + } else { + if (rangeStart >= fullLength) { + return Promise.resolve(makeNetworkError("Range start is greater than the blob's size.")); + } + if (rangeEnd === null || rangeEnd >= fullLength) { + rangeEnd = fullLength - 1; + } + } + const slicedBlob = blob.slice(rangeStart, rangeEnd, type); + const slicedBodyWithType = extractBody(slicedBlob); + response.body = slicedBodyWithType[0]; + const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`); + const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength); + response.status = 206; + response.statusText = 'Partial Content'; + response.headersList.set('content-length', serializedSlicedLength, true); + response.headersList.set('content-type', type, true); + response.headersList.set('content-range', contentRange, true); + } + return Promise.resolve(response); + } + case 'data:': { + const currentURL = requestCurrentURL(request2); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve( + makeResponse({ + statusText: 'OK', + headersList: [['content-type', { name: 'Content-Type', value: mimeType }]], + body: safelyExtractBody(dataURLStruct.body)[0] + }) + ); + } + case 'file:': { + return Promise.resolve(makeNetworkError('not implemented... yet...')); + } + case 'http:': + case 'https:': { + return httpFetch(fetchParams).catch(err => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + let timingInfo = fetchParams.timingInfo; + const processResponseEndOfBody = () => { + const unsafeEndTime = Date.now(); + if (fetchParams.request.destination === 'document') { + fetchParams.controller.fullTimingInfo = timingInfo; + } + fetchParams.controller.reportTimingSteps = () => { + if (fetchParams.request.url.protocol !== 'https:') { + return; + } + timingInfo.endTime = unsafeEndTime; + let cacheState = response.cacheState; + const bodyInfo = response.bodyInfo; + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo(timingInfo); + cacheState = ''; + } + let responseStatus = 0; + if (fetchParams.request.mode !== 'navigator' || !response.hasCrossOriginRedirects) { + responseStatus = response.status; + const mimeType = extractMimeType(response.headersList); + if (mimeType !== 'failure') { + bodyInfo.contentType = minimizeSupportedMimeType(mimeType); + } + } + if (fetchParams.request.initiatorType != null) { + markResourceTiming( + timingInfo, + fetchParams.request.url.href, + fetchParams.request.initiatorType, + globalThis, + cacheState, + bodyInfo, + responseStatus + ); + } + }; + const processResponseEndOfBodyTask = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + if (fetchParams.request.initiatorType != null) { + fetchParams.controller.reportTimingSteps(); + } + }; + queueMicrotask(() => processResponseEndOfBodyTask()); + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => { + fetchParams.processResponse(response); + fetchParams.processResponse = null; + }); + } + const internalResponse = response.type === 'error' ? response : response.internalResponse ?? response; + if (internalResponse.body == null) { + processResponseEndOfBody(); + } else { + finished(internalResponse.body.stream, () => { + processResponseEndOfBody(); + }); + } + } + async function httpFetch(fetchParams) { + const request2 = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request2.serviceWorkers === 'all') { + } + if (response === null) { + if (request2.redirect === 'follow') { + request2.serviceWorkers = 'none'; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request2.responseTainting === 'cors' && corsCheck(request2, response) === 'failure') { + return makeNetworkError('cors failure'); + } + if (TAOCheck(request2, response) === 'failure') { + request2.timingAllowFailed = true; + } + } + if ( + (request2.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck(request2.origin, request2.client, request2.destination, actualResponse) === 'blocked' + ) { + return makeNetworkError('blocked'); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request2.redirect !== 'manual') { + fetchParams.controller.connection.destroy(void 0, false); + } + if (request2.redirect === 'error') { + response = makeNetworkError('unexpected redirect'); + } else if (request2.redirect === 'manual') { + response = actualResponse; + } else if (request2.redirect === 'follow') { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request2 = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL(actualResponse, requestCurrentURL(request2).hash); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')); + } + if (request2.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')); + } + request2.redirectCount += 1; + if (request2.mode === 'cors' && (locationURL.username || locationURL.password) && !sameOrigin(request2, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request2.responseTainting === 'cors' && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"')); + } + if (actualResponse.status !== 303 && request2.body != null && request2.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ( + ([301, 302].includes(actualResponse.status) && request2.method === 'POST') || + (actualResponse.status === 303 && !GET_OR_HEAD.includes(request2.method)) + ) { + request2.method = 'GET'; + request2.body = null; + for (const headerName of requestBodyHeader) { + request2.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request2), locationURL)) { + request2.headersList.delete('authorization', true); + request2.headersList.delete('proxy-authorization', true); + request2.headersList.delete('cookie', true); + request2.headersList.delete('host', true); + } + if (request2.body != null) { + assert(request2.body.source != null); + request2.body = safelyExtractBody(request2.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime( + fetchParams.crossOriginIsolatedCapability + ); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request2.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request2, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request2 = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request2.window === 'no-window' && request2.redirect === 'error') { + httpFetchParams = fetchParams; + httpRequest = request2; + } else { + httpRequest = cloneRequest(request2); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = + request2.credentials === 'include' || (request2.credentials === 'same-origin' && request2.responseTainting === 'basic'); + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ['POST', 'PUT'].includes(httpRequest.method)) { + contentLengthHeaderValue = '0'; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue, true); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href), true); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains('user-agent', true)) { + httpRequest.headersList.append('user-agent', defaultUserAgent); + } + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since', true) || + httpRequest.headersList.contains('if-none-match', true) || + httpRequest.headersList.contains('if-unmodified-since', true) || + httpRequest.headersList.contains('if-match', true) || + httpRequest.headersList.contains('if-range', true)) + ) { + httpRequest.cache = 'no-store'; + } + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control', true) + ) { + httpRequest.headersList.append('cache-control', 'max-age=0', true); + } + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + if (!httpRequest.headersList.contains('pragma', true)) { + httpRequest.headersList.append('pragma', 'no-cache', true); + } + if (!httpRequest.headersList.contains('cache-control', true)) { + httpRequest.headersList.append('cache-control', 'no-cache', true); + } + } + if (httpRequest.headersList.contains('range', true)) { + httpRequest.headersList.append('accept-encoding', 'identity', true); + } + if (!httpRequest.headersList.contains('accept-encoding', true)) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate', true); + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate', true); + } + } + httpRequest.headersList.delete('host', true); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = 'no-store'; + } + if (httpRequest.cache !== 'no-store' && httpRequest.cache !== 'reload') { + } + if (response == null) { + if (httpRequest.cache === 'only-if-cached') { + return makeNetworkError('only if cached'); + } + const forwardResponse = await httpNetworkFetch(httpFetchParams, includeCredentials, isNewConnectionFetch); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains('range', true)) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request2.window === 'no-window') { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError('proxy authentication required'); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request2.body == null || request2.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err, abort = true) { + if (!this.destroyed) { + this.destroyed = true; + if (abort) { + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')); + } + } + } + }; + const request2 = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request2.cache = 'no-store'; + } + const newConnection = forceNewConnection ? 'yes' : 'no'; + if (request2.mode === 'websocket') { + } else { + } + let requestBody = null; + if (request2.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request2.body != null) { + const processBodyChunk = async function* (bytes) { + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = e => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === 'AbortError') { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = (async function* () { + try { + for await (const bytes of request2.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + })(); + } + try { + const { body: body2, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator2 = body2[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator2.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === 'AbortError') { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = async () => { + await fetchParams.controller.resume(); + }; + const cancelAlgorithm = reason => { + if (!isCancelled(fetchParams)) { + fetchParams.controller.abort(reason); + } + }; + const stream = new ReadableStream({ + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + }, + type: 'bytes' + }); + response.body = { stream, source: null, length: null }; + fetchParams.controller.onAborted = onAborted; + fetchParams.controller.on('terminated', onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += bytes?.byteLength ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + const buffer = new Uint8Array(bytes); + if (buffer.byteLength) { + fetchParams.controller.controller.enqueue(buffer); + } + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (fetchParams.controller.controller.desiredSize <= 0) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error( + new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : void 0 + }) + ); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + function dispatch({ body: body2 }) { + const url = requestCurrentURL(request2); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve, reject) => + agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request2.method, + body: agent.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body2, + headers: request2.headersList.entries, + maxRedirections: 0, + upgrade: request2.mode === 'websocket' ? 'websocket' : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo( + void 0, + timingInfo.postRedirectStartTime, + fetchParams.crossOriginIsolatedCapability + ); + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')); + } else { + fetchParams.controller.on('terminated', abort); + this.abort = connection.abort = abort; + } + timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + }, + onResponseStarted() { + timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + }, + onHeaders(status, rawHeaders, resume, statusText) { + if (status < 200) { + return; + } + let location = ''; + const headersList = new HeadersList(); + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true); + } + location = headersList.get('location', true); + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = location && request2.redirect === 'follow' && redirectStatusSet.has(status); + if ( + request2.method !== 'HEAD' && + request2.method !== 'CONNECT' && + !nullBodyStatus.includes(status) && + !willFollow + ) { + const contentEncoding = headersList.get('content-encoding', true); + const codings = contentEncoding ? contentEncoding.toLowerCase().split(',') : []; + const maxContentEncodings = 5; + if (codings.length > maxContentEncodings) { + reject( + new Error( + `too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}` + ) + ); + return true; + } + for (let i = codings.length - 1; i >= 0; --i) { + const coding = codings[i].trim(); + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push( + zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + }) + ); + } else if (coding === 'deflate') { + decoders.push( + createInflate({ + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + }) + ); + } else if (coding === 'br') { + decoders.push( + zlib.createBrotliDecompress({ + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH + }) + ); + } else { + decoders.length = 0; + break; + } + } + } + const onError = this.onError.bind(this); + resolve({ + status, + statusText, + headersList, + body: decoders.length + ? pipeline(this.body, ...decoders, err => { + if (err) { + this.onError(err); + } + }).on('error', onError) + : this.body.on('error', onError) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + if (fetchParams.controller.onAborted) { + fetchParams.controller.off('terminated', fetchParams.controller.onAborted); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + this.body?.destroy(error); + fetchParams.controller.terminate(error); + reject(error); + }, + onUpgrade(status, rawHeaders, socket) { + if (status !== 101) { + return; + } + const headersList = new HeadersList(); + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true); + } + resolve({ + status, + statusText: STATUS_CODES[status], + headersList, + socket + }); + return true; + } + } + ) + ); + } + } + module2.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/undici/lib/web/fileapi/symbols.js +var require_symbols3 = __commonJS({ + 'node_modules/undici/lib/web/fileapi/symbols.js'(exports2, module2) { + 'use strict'; + module2.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') + }; + } +}); + +// node_modules/undici/lib/web/fileapi/progressevent.js +var require_progressevent = __commonJS({ + 'node_modules/undici/lib/web/fileapi/progressevent.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var kState = Symbol('ProgressEvent state'); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type, 'ProgressEvent constructor', 'type'); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: () => 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: () => 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: () => false + } + ]); + module2.exports = { + ProgressEvent + }; + } +}); + +// node_modules/undici/lib/web/fileapi/encoding.js +var require_encoding = __commonJS({ + 'node_modules/undici/lib/web/fileapi/encoding.js'(exports2, module2) { + 'use strict'; + function getEncoding(label) { + if (!label) { + return 'failure'; + } + switch (label.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': @@ -14582,2995 +14823,4731 @@ var require_encoding = __commonJS({ default: return 'failure'; } - } + } + module2.exports = { + getEncoding + }; + } +}); + +// node_modules/undici/lib/web/fileapi/util.js +var require_util4 = __commonJS({ + 'node_modules/undici/lib/web/fileapi/util.js'(exports2, module2) { + 'use strict'; + var { kState, kError, kResult, kAborted, kLastProgressEventFired } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { serializeAMimeType, parseMIMEType } = require_data_url(); + var { types } = require('node:util'); + var { StringDecoder } = require('string_decoder'); + var { btoa } = require('node:buffer'); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError'); + } + fr[kState] = 'loading'; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr); + }); + } + isFirstChunk = false; + if (!done && types.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent('progress', fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = 'done'; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent('load', fr); + } catch (error) { + fr[kError] = error; + fireAProgressEvent('error', fr); + } + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + break; + } + } catch (error) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = 'done'; + fr[kError] = error; + fireAProgressEvent('error', fr); + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case 'DataURL': { + let dataURL = 'data:'; + const parsed = parseMIMEType(mimeType || 'application/octet-stream'); + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed); + } + dataURL += ';base64,'; + const decoder = new StringDecoder('latin1'); + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)); + } + dataURL += btoa(decoder.end()); + return dataURL; + } + case 'Text': { + let encoding = 'failure'; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === 'failure' && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== 'failure') { + encoding = getEncoding(type2.parameters.get('charset')); + } + } + if (encoding === 'failure') { + encoding = 'UTF-8'; + } + return decode(bytes, encoding); + } + case 'ArrayBuffer': { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case 'BinaryString': { + let binaryString = ''; + const decoder = new StringDecoder('latin1'); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === 'UTF-8' ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return 'UTF-8'; + } else if (a === 254 && b === 255) { + return 'UTF-16BE'; + } else if (a === 255 && b === 254) { + return 'UTF-16LE'; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module2.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// node_modules/undici/lib/web/fileapi/filereader.js +var require_filereader = __commonJS({ + 'node_modules/undici/lib/web/fileapi/filereader.js'(exports2, module2) { + 'use strict'; + var { staticPropertyDescriptors, readOperation, fireAProgressEvent } = require_util4(); + var { kState, kError, kResult, kEvents, kAborted } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = 'empty'; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsArrayBuffer'); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'ArrayBuffer'); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsBinaryString'); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'BinaryString'); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsText'); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding, 'FileReader.readAsText', 'encoding'); + } + readOperation(this, blob, 'Text', encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsDataURL'); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, 'DataURL'); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null; + return; + } + if (this[kState] === 'loading') { + this[kState] = 'done'; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent('abort', this); + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case 'empty': + return this.EMPTY; + case 'loading': + return this.LOADING; + case 'done': + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend); + } + if (typeof fn === 'function') { + this[kEvents].loadend = fn; + this.addEventListener('loadend', fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error); + } + if (typeof fn === 'function') { + this[kEvents].error = fn; + this.addEventListener('error', fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart); + } + if (typeof fn === 'function') { + this[kEvents].loadstart = fn; + this.addEventListener('loadstart', fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress); + } + if (typeof fn === 'function') { + this[kEvents].progress = fn; + this.addEventListener('progress', fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load); + } + if (typeof fn === 'function') { + this[kEvents].load = fn; + this.addEventListener('load', fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort); + } + if (typeof fn === 'function') { + this[kEvents].abort = fn; + this.addEventListener('abort', fn); + } else { + this[kEvents].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: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module2.exports = { + FileReader + }; + } +}); + +// node_modules/undici/lib/web/cache/symbols.js +var require_symbols4 = __commonJS({ + 'node_modules/undici/lib/web/cache/symbols.js'(exports2, module2) { + 'use strict'; + module2.exports = { + kConstruct: require_symbols().kConstruct + }; + } +}); + +// node_modules/undici/lib/web/cache/util.js +var require_util5 = __commonJS({ + 'node_modules/undici/lib/web/cache/util.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { URLSerializer } = require_data_url(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function getFieldValues(header) { + assert(header !== null); + const values = []; + for (let value of header.split(',')) { + value = value.trim(); + if (isValidHeaderName(value)) { + values.push(value); + } + } + return values; + } + module2.exports = { + urlEquals, + getFieldValues + }; + } +}); + +// node_modules/undici/lib/web/cache/cache.js +var require_cache = __commonJS({ + 'node_modules/undici/lib/web/cache/cache.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols4(); + var { urlEquals, getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { webidl } = require_webidl(); + var { Response, cloneResponse, fromInnerResponse } = require_response(); + var { Request, fromInnerRequest } = require_request2(); + var { kState } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert = require('node:assert'); + var Cache = class _Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList; + constructor() { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + webidl.util.markAsUncloneable(this); + this.#relevantRequestResponseList = arguments[1]; + } + async match(request2, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.match'; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + const p = this.#internalMatchAll(request2, options, 1); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request2 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.matchAll'; + if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + return this.#internalMatchAll(request2, options); + } + async add(request2) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.add'; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + const requests = [request2]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.addAll'; + webidl.argumentLengthCheck(arguments, 1, prefix); + const responsePromises = []; + const requestList = []; + for (let request2 of requests) { + if (request2 === void 0) { + throw webidl.errors.conversionFailed({ + prefix, + argument: 'Argument 1', + types: ['undefined is not allowed'] + }); + } + request2 = webidl.converters.RequestInfo(request2); + if (typeof request2 === 'string') { + continue; + } + const r = request2[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected http/s scheme when method is not GET.' + }); + } + } + const fetchControllers = []; + for (const request2 of requests) { + const r = new Request(request2)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected http/s scheme.' + }); + } + r.initiator = 'fetch'; + r.destination = 'subresource'; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push( + fetching({ + request: r, + processResponse(response) { + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject( + webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + }) + ); + } else if (response.headersList.contains('vary')) { + const fieldValues = getFieldValues(response.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + responsePromise.reject( + webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + }) + ); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')); + return; + } + responsePromise.resolve(response); + } + }) + ); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: 'put', + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request2, response) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.put'; + webidl.argumentLengthCheck(arguments, 2, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + response = webidl.converters.Response(response, prefix, 'response'); + let innerRequest = null; + if (request2 instanceof Request) { + innerRequest = request2[kState]; + } else { + innerRequest = new Request(request2)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: prefix, + message: 'Expected an http/s scheme when method is not GET' + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: prefix, + message: 'Got 206 status' + }); + } + if (innerResponse.headersList.contains('vary')) { + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: prefix, + message: 'Got * vary field value' + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: prefix, + message: 'Response body is locked or disturbed' + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: 'put', + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request2, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.delete'; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + let r = null; + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request2 === 'string'); + r = new Request(request2)[kState]; + } + const operations = []; + const operation = { + type: 'delete', + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {Promise} + */ + async keys(request2 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = 'Cache.keys'; + if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2, prefix, 'request'); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + let r = null; + if (request2 !== void 0) { + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === 'string') { + r = new Request(request2)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request2 === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request3 of requests) { + const requestObject = fromInnerRequest(request3, new AbortController().signal, 'immutable'); + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations(operations) { + const cache = this.#relevantRequestResponseList; + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }); + } + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError'); + } + let requestResponses; + if (operation.type === 'delete') { + requestResponses = this.#queryCache(operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === 'put') { + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }); + } + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }); + } + requestResponses = this.#queryCache(operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + this.#relevantRequestResponseList.length = 0; + this.#relevantRequestResponseList = backupCache; + throw e; + } + } + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? this.#relevantRequestResponseList; + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + } + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem(requestQuery, request2, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request2.url); + if (options?.ignoreSearch) { + cachedURL.search = ''; + queryURL.search = ''; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || options?.ignoreVary || !response.headersList.contains('vary')) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get('vary')); + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false; + } + const requestValue = request2.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + } + #internalMatchAll(request2, options, maxResponses = Infinity) { + let r = null; + if (request2 !== void 0) { + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === 'string') { + r = new Request(request2)[kState]; + } + } + const responses = []; + if (request2 === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = fromInnerResponse(response, 'immutable'); + responseList.push(responseObject.clone()); + if (responseList.length >= maxResponses) { + break; + } + } + return Object.freeze(responseList); + } + }; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: () => false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.RequestInfo); + module2.exports = { + Cache + }; + } +}); + +// node_modules/undici/lib/web/cache/cachestorage.js +var require_cachestorage = __commonJS({ + 'node_modules/undici/lib/web/cache/cachestorage.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var CacheStorage = class _CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = 'CacheStorage.has'; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName'); + return this.#caches.has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = 'CacheStorage.open'; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName'); + if (this.#caches.has(cacheName)) { + const cache2 = this.#caches.get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + this.#caches.set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = 'CacheStorage.delete'; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName'); + return this.#caches.delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {Promise} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = this.#caches.keys(); + return [...keys]; + } + }; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); module2.exports = { - getEncoding + CacheStorage }; } }); -// node_modules/undici/lib/fileapi/util.js -var require_util4 = __commonJS({ - 'node_modules/undici/lib/fileapi/util.js'(exports2, module2) { +// node_modules/undici/lib/web/cookies/constants.js +var require_constants4 = __commonJS({ + 'node_modules/undici/lib/web/cookies/constants.js'(exports2, module2) { 'use strict'; - var { kState, kError, kResult, kAborted, kLastProgressEventFired } = require_symbols3(); - var { ProgressEvent } = require_progressevent(); - var { getEncoding } = require_encoding(); - var { DOMException: DOMException2 } = require_constants2(); - var { serializeAMimeType, parseMIMEType } = require_dataURL(); - var { types } = require('util'); - var { StringDecoder } = require('string_decoder'); - var { btoa } = require('buffer'); - var staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize }; - function readOperation(fr, blob, type, encodingName) { - if (fr[kState] === 'loading') { - throw new DOMException2('Invalid state', 'InvalidStateError'); + } +}); + +// node_modules/undici/lib/web/cookies/util.js +var require_util6 = __commonJS({ + 'node_modules/undici/lib/web/cookies/util.js'(exports2, module2) { + 'use strict'; + function isCTLExcludingHtab(value) { + for (let i = 0; i < value.length; ++i) { + const code = value.charCodeAt(i); + if ((code >= 0 && code <= 8) || (code >= 10 && code <= 31) || code === 127) { + return true; + } } - fr[kState] = 'loading'; - fr[kResult] = null; - fr[kError] = null; - const stream = blob.stream(); - const reader = stream.getReader(); - const bytes = []; - let chunkPromise = reader.read(); - let isFirstChunk = true; - (async () => { - while (!fr[kAborted]) { - try { - const { done, value } = await chunkPromise; - if (isFirstChunk && !fr[kAborted]) { - queueMicrotask(() => { - fireAProgressEvent('loadstart', fr); - }); - } - isFirstChunk = false; - if (!done && types.isUint8Array(value)) { - bytes.push(value); - if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { - fr[kLastProgressEventFired] = Date.now(); - queueMicrotask(() => { - fireAProgressEvent('progress', fr); - }); - } - chunkPromise = reader.read(); - } else if (done) { - queueMicrotask(() => { - fr[kState] = 'done'; - try { - const result = packageData(bytes, type, blob.type, encodingName); - if (fr[kAborted]) { - return; - } - fr[kResult] = result; - fireAProgressEvent('load', fr); - } catch (error) { - fr[kError] = error; - fireAProgressEvent('error', fr); - } - if (fr[kState] !== 'loading') { - fireAProgressEvent('loadend', fr); - } - }); - break; - } - } catch (error) { - if (fr[kAborted]) { - return; - } - queueMicrotask(() => { - fr[kState] = 'done'; - fr[kError] = error; - fireAProgressEvent('error', fr); - if (fr[kState] !== 'loading') { - fireAProgressEvent('loadend', fr); - } - }); - break; - } + return false; + } + function validateCookieName(name) { + for (let i = 0; i < name.length; ++i) { + const code = name.charCodeAt(i); + if ( + code < 33 || // exclude CTLs (0-31), SP and HT + code > 126 || // exclude non-ascii and DEL + code === 34 || // " + code === 40 || // ( + code === 41 || // ) + code === 60 || // < + code === 62 || // > + code === 64 || // @ + code === 44 || // , + code === 59 || // ; + code === 58 || // : + code === 92 || // \ + code === 47 || // / + code === 91 || // [ + code === 93 || // ] + code === 63 || // ? + code === 61 || // = + code === 123 || // { + code === 125 + ) { + throw new Error('Invalid cookie name'); + } + } + } + function validateCookieValue(value) { + let len = value.length; + let i = 0; + if (value[0] === '"') { + if (len === 1 || value[len - 1] !== '"') { + throw new Error('Invalid cookie value'); + } + --len; + ++i; + } + while (i < len) { + const code = value.charCodeAt(i++); + if ( + code < 33 || // exclude CTLs (0-31) + code > 126 || // non-ascii and DEL (127) + code === 34 || // " + code === 44 || // , + code === 59 || // ; + code === 92 + ) { + throw new Error('Invalid cookie value'); + } + } + } + function validateCookiePath(path) { + for (let i = 0; i < path.length; ++i) { + const code = path.charCodeAt(i); + if ( + code < 32 || // exclude CTLs (0-31) + code === 127 || // DEL + code === 59 + ) { + throw new Error('Invalid cookie path'); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith('-') || domain.endsWith('.') || domain.endsWith('-')) { + throw new Error('Invalid cookie domain'); + } + } + var IMFDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + var IMFMonths = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var IMFPaddedNumbers = Array(61) + .fill(0) + .map((_, i) => i.toString().padStart(2, '0')); + function toIMFDate(date) { + if (typeof date === 'number') { + date = new Date(date); + } + return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${ + IMFMonths[date.getUTCMonth()] + } ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${ + IMFPaddedNumbers[date.getUTCSeconds()] + } GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age'); + } + } + function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true; + } + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true; + cookie.domain = null; + cookie.path = '/'; + } + if (cookie.secure) { + out.push('Secure'); + } + if (cookie.httpOnly) { + out.push('HttpOnly'); + } + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed'); + } + const [key, ...value] = part.split('='); + out.push(`${key.trim()}=${value.join('=')}`); + } + return out.join('; '); + } + module2.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify + }; + } +}); + +// node_modules/undici/lib/web/cookies/parse.js +var require_parse = __commonJS({ + 'node_modules/undici/lib/web/cookies/parse.js'(exports2, module2) { + 'use strict'; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_data_url(); + var assert = require('node:assert'); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ''; + let unparsedAttributes = ''; + let name = ''; + let value = ''; + if (header.includes(';')) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(';', header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes('=')) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast('=', nameValuePair, position); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert(unparsedAttributes[0] === ';'); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ''; + if (unparsedAttributes.includes(';')) { + cookieAv = collectASequenceOfCodePointsFast(';', unparsedAttributes, { position: 0 }); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ''; + } + let attributeName = ''; + let attributeValue = ''; + if (cookieAv.includes('=')) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast('=', cookieAv, position); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === 'expires') { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === 'max-age') { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); } - })(); - } - function fireAProgressEvent(e, reader) { - const event = new ProgressEvent(e, { - bubbles: false, - cancelable: false - }); - reader.dispatchEvent(event); - } - function packageData(bytes, type, mimeType, encodingName) { - switch (type) { - case 'DataURL': { - let dataURL = 'data:'; - const parsed = parseMIMEType(mimeType || 'application/octet-stream'); - if (parsed !== 'failure') { - dataURL += serializeAMimeType(parsed); - } - dataURL += ';base64,'; - const decoder = new StringDecoder('latin1'); - for (const chunk of bytes) { - dataURL += btoa(decoder.write(chunk)); - } - dataURL += btoa(decoder.end()); - return dataURL; + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); } - case 'Text': { - let encoding = 'failure'; - if (encodingName) { - encoding = getEncoding(encodingName); - } - if (encoding === 'failure' && mimeType) { - const type2 = parseMIMEType(mimeType); - if (type2 !== 'failure') { - encoding = getEncoding(type2.parameters.get('charset')); - } - } - if (encoding === 'failure') { - encoding = 'UTF-8'; - } - return decode(bytes, encoding); + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === 'domain') { + let cookieDomain = attributeValue; + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1); } - case 'ArrayBuffer': { - const sequence = combineByteSequences(bytes); - return sequence.buffer; + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === 'path') { + let cookiePath = ''; + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + cookiePath = '/'; + } else { + cookiePath = attributeValue; } - case 'BinaryString': { - let binaryString = ''; - const decoder = new StringDecoder('latin1'); - for (const chunk of bytes) { - binaryString += decoder.write(chunk); - } - binaryString += decoder.end(); - return binaryString; + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === 'secure') { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === 'httponly') { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === 'samesite') { + let enforcement = 'Default'; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes('none')) { + enforcement = 'None'; + } + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict'; + } + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax'; } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ??= []; + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); } - function decode(ioQueue, encoding) { - const bytes = combineByteSequences(ioQueue); - const BOMEncoding = BOMSniffing(bytes); - let slice = 0; - if (BOMEncoding !== null) { - encoding = BOMEncoding; - slice = BOMEncoding === 'UTF-8' ? 3 : 2; + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/undici/lib/web/cookies/index.js +var require_cookies = __commonJS({ + 'node_modules/undici/lib/web/cookies/index.js'(exports2, module2) { + 'use strict'; + var { parseSetCookie } = require_parse(); + var { stringify } = require_util6(); + var { webidl } = require_webidl(); + var { Headers } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, 'getCookies'); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookie = headers.get('cookie'); + const out = {}; + if (!cookie) { + return out; } - const sliced = bytes.slice(slice); - return new TextDecoder(encoding).decode(sliced); + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('='); + out[name.trim()] = value.join('='); + } + return out; } - function BOMSniffing(ioQueue) { - const [a, b, c] = ioQueue; - if (a === 239 && b === 187 && c === 191) { - return 'UTF-8'; - } else if (a === 254 && b === 255) { - return 'UTF-16BE'; - } else if (a === 255 && b === 254) { - return 'UTF-16LE'; + function deleteCookie(headers, name, attributes) { + webidl.brandCheck(headers, Headers, { strict: false }); + const prefix = 'deleteCookie'; + webidl.argumentLengthCheck(arguments, 2, prefix); + name = webidl.converters.DOMString(name, prefix, 'name'); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: '', + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, 'getSetCookies'); + webidl.brandCheck(headers, Headers, { strict: false }); + const cookies = headers.getSetCookie(); + if (!cookies) { + return []; } - return null; + return cookies.map(pair => parseSetCookie(pair)); } - function combineByteSequences(sequences) { - const size = sequences.reduce((a, b) => { - return a + b.byteLength; - }, 0); - let offset = 0; - return sequences.reduce((a, b) => { - a.set(b, offset); - offset += b.byteLength; - return a; - }, new Uint8Array(size)); + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, 'setCookie'); + webidl.brandCheck(headers, Headers, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append('Set-Cookie', str); + } } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: () => null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter(value => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value); + } + return new Date(value); + }), + key: 'expires', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: () => null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: () => new Array(0) + } + ]); module2.exports = { - staticPropertyDescriptors, - readOperation, - fireAProgressEvent + getCookies, + deleteCookie, + getSetCookies, + setCookie }; } }); -// node_modules/undici/lib/fileapi/filereader.js -var require_filereader = __commonJS({ - 'node_modules/undici/lib/fileapi/filereader.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/events.js +var require_events = __commonJS({ + 'node_modules/undici/lib/web/websocket/events.js'(exports2, module2) { 'use strict'; - var { staticPropertyDescriptors, readOperation, fireAProgressEvent } = require_util4(); - var { kState, kError, kResult, kEvents, kAborted } = require_symbols3(); var { webidl } = require_webidl(); var { kEnumerableProperty } = require_util(); - var FileReader = class _FileReader extends EventTarget { - constructor() { - super(); - this[kState] = 'empty'; - this[kResult] = null; - this[kError] = null; - this[kEvents] = { - loadend: null, - error: null, - abort: null, - load: null, - progress: null, - loadstart: null - }; + var { kConstruct } = require_symbols(); + var { MessagePort } = require('node:worker_threads'); + var MessageEvent = class _MessageEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + if (type === kConstruct) { + super(arguments[1], arguments[2]); + webidl.util.markAsUncloneable(this); + return; + } + const prefix = 'MessageEvent constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + type = webidl.converters.DOMString(type, prefix, 'type'); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, 'eventInitDict'); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + webidl.util.markAsUncloneable(this); } - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer - * @param {import('buffer').Blob} blob - */ - readAsArrayBuffer(blob) { - webidl.brandCheck(this, _FileReader); - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }); - blob = webidl.converters.Blob(blob, { strict: false }); - readOperation(this, blob, 'ArrayBuffer'); + get data() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.data; } - /** - * @see https://w3c.github.io/FileAPI/#readAsBinaryString - * @param {import('buffer').Blob} blob - */ - readAsBinaryString(blob) { - webidl.brandCheck(this, _FileReader); - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }); - blob = webidl.converters.Blob(blob, { strict: false }); - readOperation(this, blob, 'BinaryString'); + get origin() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.origin; } - /** - * @see https://w3c.github.io/FileAPI/#readAsDataText - * @param {import('buffer').Blob} blob - * @param {string?} encoding - */ - readAsText(blob, encoding = void 0) { - webidl.brandCheck(this, _FileReader); - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }); - blob = webidl.converters.Blob(blob, { strict: false }); - if (encoding !== void 0) { - encoding = webidl.converters.DOMString(encoding); - } - readOperation(this, blob, 'Text', encoding); + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.lastEventId; } - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL - * @param {import('buffer').Blob} blob - */ - readAsDataURL(blob) { - webidl.brandCheck(this, _FileReader); - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }); - blob = webidl.converters.Blob(blob, { strict: false }); - readOperation(this, blob, 'DataURL'); + get source() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.source; } - /** - * @see https://w3c.github.io/FileAPI/#dfn-abort - */ - abort() { - if (this[kState] === 'empty' || this[kState] === 'done') { - this[kResult] = null; - return; - } - if (this[kState] === 'loading') { - this[kState] = 'done'; - this[kResult] = null; - } - this[kAborted] = true; - fireAProgressEvent('abort', this); - if (this[kState] !== 'loading') { - fireAProgressEvent('loadend', this); + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports); } + return this.#eventInit.ports; } - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate - */ - get readyState() { - webidl.brandCheck(this, _FileReader); - switch (this[kState]) { - case 'empty': - return this.EMPTY; - case 'loading': - return this.LOADING; - case 'done': - return this.DONE; - } + initMessageEvent( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, 'MessageEvent.initMessageEvent'); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source, + ports + }); } - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-result - */ - get result() { - webidl.brandCheck(this, _FileReader); - return this[kResult]; + static createFastMessageEvent(type, init) { + const messageEvent = new _MessageEvent(kConstruct, type, init); + messageEvent.#eventInit = init; + messageEvent.#eventInit.data ??= null; + messageEvent.#eventInit.origin ??= ''; + messageEvent.#eventInit.lastEventId ??= ''; + messageEvent.#eventInit.source ??= null; + messageEvent.#eventInit.ports ??= []; + return messageEvent; } - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-error - */ - get error() { - webidl.brandCheck(this, _FileReader); - return this[kError]; + }; + var { createFastMessageEvent } = MessageEvent; + delete MessageEvent.createFastMessageEvent; + var CloseEvent = class _CloseEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + const prefix = 'CloseEvent constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + type = webidl.converters.DOMString(type, prefix, 'type'); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + webidl.util.markAsUncloneable(this); } - get onloadend() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].loadend; + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.wasClean; } - set onloadend(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].loadend) { - this.removeEventListener('loadend', this[kEvents].loadend); - } - if (typeof fn === 'function') { - this[kEvents].loadend = fn; - this.addEventListener('loadend', fn); - } else { - this[kEvents].loadend = null; - } + get code() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.code; } - get onerror() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].error; + get reason() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.reason; } - set onerror(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].error) { - this.removeEventListener('error', this[kEvents].error); - } - if (typeof fn === 'function') { - this[kEvents].error = fn; - this.addEventListener('error', fn); - } else { - this[kEvents].error = null; - } + }; + var ErrorEvent = class _ErrorEvent extends Event { + #eventInit; + constructor(type, eventInitDict) { + const prefix = 'ErrorEvent constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + super(type, eventInitDict); + webidl.util.markAsUncloneable(this); + type = webidl.converters.DOMString(type, prefix, 'type'); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + this.#eventInit = eventInitDict; } - get onloadstart() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].loadstart; + get message() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.message; } - set onloadstart(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].loadstart) { - this.removeEventListener('loadstart', this[kEvents].loadstart); - } - if (typeof fn === 'function') { - this[kEvents].loadstart = fn; - this.addEventListener('loadstart', fn); - } else { - this[kEvents].loadstart = null; - } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.filename; } - get onprogress() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].progress; + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.lineno; } - set onprogress(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].progress) { - this.removeEventListener('progress', this[kEvents].progress); - } - if (typeof fn === 'function') { - this[kEvents].progress = fn; - this.addEventListener('progress', fn); - } else { - this[kEvents].progress = null; - } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.colno; } - get onload() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].load; + get error() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.error; + } + }; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.MessagePort); + var eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: () => false } - set onload(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].load) { - this.removeEventListener('load', this[kEvents].load); - } - if (typeof fn === 'function') { - this[kEvents].load = fn; - this.addEventListener('load', fn); - } else { - this[kEvents].load = null; - } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: () => null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: () => '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: () => '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: () => null + }, + { + key: 'ports', + converter: webidl.converters['sequence'], + defaultValue: () => new Array(0) } - get onabort() { - webidl.brandCheck(this, _FileReader); - return this[kEvents].abort; + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: () => 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: () => '' } - set onabort(fn) { - webidl.brandCheck(this, _FileReader); - if (this[kEvents].abort) { - this.removeEventListener('abort', this[kEvents].abort); - } - if (typeof fn === 'function') { - this[kEvents].abort = fn; - this.addEventListener('abort', fn); - } else { - this[kEvents].abort = null; - } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: () => '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: () => '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: () => 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: () => 0 + }, + { + key: 'error', + converter: webidl.converters.any } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent, + createFastMessageEvent + }; + } +}); + +// node_modules/undici/lib/web/websocket/constants.js +var require_constants5 = __commonJS({ + 'node_modules/undici/lib/web/websocket/constants.js'(exports2, module2) { + 'use strict'; + var uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var sentCloseFrameState = { + NOT_SENT: 0, + PROCESSING: 1, + SENT: 2 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + var sendHints = { + string: 1, + typedArray: 2, + arrayBuffer: 3, + blob: 4 }; - FileReader.EMPTY = FileReader.prototype.EMPTY = 0; - FileReader.LOADING = FileReader.prototype.LOADING = 1; - FileReader.DONE = FileReader.prototype.DONE = 2; - Object.defineProperties(FileReader.prototype, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - readAsArrayBuffer: kEnumerableProperty, - readAsBinaryString: kEnumerableProperty, - readAsText: kEnumerableProperty, - readAsDataURL: kEnumerableProperty, - abort: kEnumerableProperty, - readyState: kEnumerableProperty, - result: kEnumerableProperty, - error: kEnumerableProperty, - onloadstart: kEnumerableProperty, - onprogress: kEnumerableProperty, - onload: kEnumerableProperty, - onabort: kEnumerableProperty, - onerror: kEnumerableProperty, - onloadend: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'FileReader', - writable: false, - enumerable: false, - configurable: true - } - }); - Object.defineProperties(FileReader, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors - }); module2.exports = { - FileReader + uid, + sentCloseFrameState, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer, + sendHints }; } }); -// node_modules/undici/lib/cache/symbols.js -var require_symbols4 = __commonJS({ - 'node_modules/undici/lib/cache/symbols.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/symbols.js +var require_symbols5 = __commonJS({ + 'node_modules/undici/lib/web/websocket/symbols.js'(exports2, module2) { 'use strict'; module2.exports = { - kConstruct: require_symbols().kConstruct + 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') }; } }); -// node_modules/undici/lib/cache/util.js -var require_util5 = __commonJS({ - 'node_modules/undici/lib/cache/util.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/util.js +var require_util7 = __commonJS({ + 'node_modules/undici/lib/web/websocket/util.js'(exports2, module2) { 'use strict'; - var assert = require('assert'); - var { URLSerializer } = require_dataURL(); - var { isValidHeaderName } = require_util2(); - function urlEquals(A, B, excludeFragment = false) { - const serializedA = URLSerializer(A, excludeFragment); - const serializedB = URLSerializer(B, excludeFragment); - return serializedA === serializedB; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants5(); + var { ErrorEvent, createFastMessageEvent } = require_events(); + var { isUtf8 } = require('node:buffer'); + var { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = require_data_url(); + function isConnecting(ws) { + return ws[kReadyState] === states.CONNECTING; + } + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { + const event = eventFactory(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = utf8Decode(data); + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.'); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + dataForEvent = new Blob([data]); + } else { + dataForEvent = toArrayBuffer(data); + } + } + fireEvent('message', ws, createFastMessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function toArrayBuffer(buffer) { + if (buffer.byteLength === buffer.buffer.byteLength) { + return buffer.buffer; + } + return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (let i = 0; i < protocol.length; ++i) { + const code = protocol.charCodeAt(i); + if ( + code < 33 || // CTL, contains SP (0x20) and HT (0x09) + code > 126 || + code === 34 || // " + code === 40 || // ( + code === 41 || // ) + code === 44 || // , + code === 47 || // / + code === 58 || // : + code === 59 || // ; + code === 60 || // < + code === 61 || // = + code === 62 || // > + code === 63 || // ? + code === 64 || // @ + code === 91 || // [ + code === 92 || // \ + code === 93 || // ] + code === 123 || // { + code === 125 + ) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 + ); + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent('error', ws, (type, init) => new ErrorEvent(type, init), { + error: new Error(reason), + message: reason + }); + } } - function fieldValues(header) { - assert(header !== null); - const values = []; - for (let value of header.split(',')) { - value = value.trim(); - if (!value.length) { - continue; - } else if (!isValidHeaderName(value)) { - continue; + function isControlFrame(opcode) { + return opcode === opcodes.CLOSE || opcode === opcodes.PING || opcode === opcodes.PONG; + } + function isContinuationFrame(opcode) { + return opcode === opcodes.CONTINUATION; + } + function isTextBinaryFrame(opcode) { + return opcode === opcodes.TEXT || opcode === opcodes.BINARY; + } + function isValidOpcode(opcode) { + return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode); + } + function parseExtensions(extensions) { + const position = { position: 0 }; + const extensionList = /* @__PURE__ */ new Map(); + while (position.position < extensions.length) { + const pair = collectASequenceOfCodePointsFast(';', extensions, position); + const [name, value = ''] = pair.split('='); + extensionList.set(removeHTTPWhitespace(name, true, false), removeHTTPWhitespace(value, false, true)); + position.position++; + } + return extensionList; + } + function isValidClientWindowBits(value) { + for (let i = 0; i < value.length; i++) { + const byte = value.charCodeAt(i); + if (byte < 48 || byte > 57) { + return false; } - values.push(value); } - return values; + return true; } + var hasIntl = typeof process.versions.icu === 'string'; + var fatalDecoder = hasIntl ? new TextDecoder('utf-8', { fatal: true }) : void 0; + var utf8Decode = hasIntl + ? fatalDecoder.decode.bind(fatalDecoder) + : function (buffer) { + if (isUtf8(buffer)) { + return buffer.toString('utf-8'); + } + throw new TypeError('Invalid utf-8 received.'); + }; module2.exports = { - urlEquals, - fieldValues + isConnecting, + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isContinuationFrame, + isTextBinaryFrame, + isValidOpcode, + parseExtensions, + isValidClientWindowBits }; } }); -// node_modules/undici/lib/cache/cache.js -var require_cache = __commonJS({ - 'node_modules/undici/lib/cache/cache.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/frame.js +var require_frame = __commonJS({ + 'node_modules/undici/lib/web/websocket/frame.js'(exports2, module2) { 'use strict'; - var { kConstruct } = require_symbols4(); - var { urlEquals, fieldValues: getFieldValues } = require_util5(); - var { kEnumerableProperty, isDisturbed } = require_util(); - var { kHeadersList } = require_symbols(); - var { webidl } = require_webidl(); - var { Response, cloneResponse } = require_response(); - var { Request } = require_request2(); - var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); - var { fetching } = require_fetch(); - var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); - var assert = require('assert'); - var { getGlobalDispatcher } = require_global2(); - var Cache = class _Cache { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list - * @type {requestResponseList} - */ - #relevantRequestResponseList; - constructor() { - if (arguments[0] !== kConstruct) { - webidl.illegalConstructor(); + var { maxUnsigned16Bit } = require_constants5(); + var BUFFER_SIZE = 16386; + var crypto; + var buffer = null; + var bufIdx = BUFFER_SIZE; + try { + crypto = require('node:crypto'); + } catch { + crypto = { + // not full compatibility, but minimum. + randomFillSync: function randomFillSync(buffer2, _offset, _size) { + for (let i = 0; i < buffer2.length; ++i) { + buffer2[i] = (Math.random() * 255) | 0; + } + return buffer2; } - this.#relevantRequestResponseList = arguments[1]; + }; + } + function generateMask() { + if (bufIdx === BUFFER_SIZE) { + bufIdx = 0; + crypto.randomFillSync((buffer ??= Buffer.allocUnsafe(BUFFER_SIZE)), 0, BUFFER_SIZE); } - async match(request, options = {}) { - webidl.brandCheck(this, _Cache); - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }); - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - const p = await this.matchAll(request, options); - if (p.length === 0) { - return; - } - return p[0]; + return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]; + } + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; } - async matchAll(request = void 0, options = {}) { - webidl.brandCheck(this, _Cache); - if (request !== void 0) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - let r = null; - if (request !== void 0) { - if (request instanceof Request) { - r = request[kState]; - if (r.method !== 'GET' && !options.ignoreMethod) { - return []; - } - } else if (typeof request === 'string') { - r = new Request(request)[kState]; - } + createFrame(opcode) { + const frameData = this.frameData; + const maskKey = generateMask(); + const bodyLength = frameData?.byteLength ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; } - const responses = []; - if (request === void 0) { - for (const requestResponse of this.#relevantRequestResponseList) { - responses.push(requestResponse[1]); - } - } else { - const requestResponses = this.#queryCache(r, options); - for (const requestResponse of requestResponses) { - responses.push(requestResponse[1]); - } + const buffer2 = Buffer.allocUnsafe(bodyLength + offset); + buffer2[0] = buffer2[1] = 0; + buffer2[0] |= 128; + buffer2[0] = (buffer2[0] & 240) + opcode; + buffer2[offset - 4] = maskKey[0]; + buffer2[offset - 3] = maskKey[1]; + buffer2[offset - 2] = maskKey[2]; + buffer2[offset - 1] = maskKey[3]; + buffer2[1] = payloadLength; + if (payloadLength === 126) { + buffer2.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer2[2] = buffer2[3] = 0; + buffer2.writeUIntBE(bodyLength, 4, 6); } - const responseList = []; - for (const response of responses) { - const responseObject = new Response(response.body?.source ?? null); - const body2 = responseObject[kState].body; - responseObject[kState] = response; - responseObject[kState].body = body2; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = 'immutable'; - responseList.push(responseObject); + buffer2[1] |= 128; + for (let i = 0; i < bodyLength; ++i) { + buffer2[offset + i] = frameData[i] ^ maskKey[i & 3]; } - return Object.freeze(responseList); + return buffer2; } - async add(request) { - webidl.brandCheck(this, _Cache); - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }); - request = webidl.converters.RequestInfo(request); - const requests = [request]; - const responseArrayPromise = this.addAll(requests); - return await responseArrayPromise; + }; + module2.exports = { + WebsocketFrameSend + }; + } +}); + +// node_modules/undici/lib/web/websocket/connection.js +var require_connection = __commonJS({ + 'node_modules/undici/lib/web/websocket/connection.js'(exports2, module2) { + 'use strict'; + var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants5(); + var { kReadyState, kSentClose, kByteParser, kReceivedClose, kResponse } = require_symbols5(); + var { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require_util7(); + var { channels } = require_diagnostics(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers, getHeadersList } = require_headers(); + var { getDecodeSplit } = require_util2(); + var { WebsocketFrameSend } = require_frame(); + var crypto; + try { + crypto = require('node:crypto'); + } catch {} + function establishWebSocketConnection(url, protocols, client, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'; + const request2 = makeRequest({ + urlList: [requestURL], + client, + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }); + if (options.headers) { + const headersList = getHeadersList(new Headers(options.headers)); + request2.headersList = headersList; } - async addAll(requests) { - webidl.brandCheck(this, _Cache); - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }); - requests = webidl.converters['sequence'](requests); - const responsePromises = []; - const requestList = []; - for (const request of requests) { - if (typeof request === 'string') { - continue; + const keyValue = crypto.randomBytes(16).toString('base64'); + request2.headersList.append('sec-websocket-key', keyValue); + request2.headersList.append('sec-websocket-version', '13'); + for (const protocol of protocols) { + request2.headersList.append('sec-websocket-protocol', protocol); + } + const permessageDeflate = 'permessage-deflate; client_max_window_bits'; + request2.headersList.append('sec-websocket-extensions', permessageDeflate); + const controller = fetching({ + request: request2, + useParallelQueue: true, + dispatcher: options.dispatcher, + processResponse(response) { + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.'); + return; } - const r = request[kState]; - if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Expected http/s scheme when method is not GET.' - }); + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.'); + return; } - } - const fetchControllers = []; - for (const request of requests) { - const r = new Request(request)[kState]; - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Expected http/s scheme.' - }); + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; } - r.initiator = 'fetch'; - r.destination = 'subresource'; - requestList.push(r); - const responsePromise = createDeferredPromise(); - fetchControllers.push( - fetching({ - request: r, - dispatcher: getGlobalDispatcher(), - processResponse(response) { - if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { - responsePromise.reject( - webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Received an invalid status code or the request failed.' - }) - ); - } else if (response.headersList.contains('vary')) { - const fieldValues = getFieldValues(response.headersList.get('vary')); - for (const fieldValue of fieldValues) { - if (fieldValue === '*') { - responsePromise.reject( - webidl.errors.exception({ - header: 'Cache.addAll', - message: 'invalid vary field value' - }) - ); - for (const controller of fetchControllers) { - controller.abort(); - } - return; - } - } - } - }, - processResponseEndOfBody(response) { - if (response.aborted) { - responsePromise.reject(new DOMException('aborted', 'AbortError')); - return; - } - responsePromise.resolve(response); - } - }) - ); - responsePromises.push(responsePromise.promise); - } - const p = Promise.all(responsePromises); - const responses = await p; - const operations = []; - let index = 0; - for (const response of responses) { - const operation = { - type: 'put', - // 7.3.2 - request: requestList[index], - // 7.3.3 - response - // 7.3.4 - }; - operations.push(operation); - index++; - } - const cacheJobPromise = createDeferredPromise(); - let errorData = null; - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(void 0); - } else { - cacheJobPromise.reject(errorData); + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; } - }); - return cacheJobPromise.promise; - } - async put(request, response) { - webidl.brandCheck(this, _Cache); - webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }); - request = webidl.converters.RequestInfo(request); - response = webidl.converters.Response(response); - let innerRequest = null; - if (request instanceof Request) { - innerRequest = request[kState]; - } else { - innerRequest = new Request(request)[kState]; - } - if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Expected an http/s scheme when method is not GET' - }); - } - const innerResponse = response[kState]; - if (innerResponse.status === 206) { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Got 206 status' - }); - } - if (innerResponse.headersList.contains('vary')) { - const fieldValues = getFieldValues(innerResponse.headersList.get('vary')); - for (const fieldValue of fieldValues) { - if (fieldValue === '*') { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Got * vary field value' - }); + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept'); + const digest = crypto + .createHash('sha1') + .update(keyValue + uid) + .digest('base64'); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.'); + return; + } + const secExtension = response.headersList.get('Sec-WebSocket-Extensions'); + let extensions; + if (secExtension !== null) { + extensions = parseExtensions(secExtension); + if (!extensions.has('permessage-deflate')) { + failWebsocketConnection(ws, 'Sec-WebSocket-Extensions header does not match.'); + return; } } + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol'); + if (secProtocol !== null) { + const requestProtocols = getDecodeSplit('sec-websocket-protocol', request2.headersList); + if (!requestProtocols.includes(secProtocol)) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.'); + return; + } + } + response.socket.on('data', onSocketData); + response.socket.on('close', onSocketClose); + response.socket.on('error', onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response, extensions); } - if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Response body is locked or disturbed' - }); - } - const clonedResponse = cloneResponse(innerResponse); - const bodyReadPromise = createDeferredPromise(); - if (innerResponse.body != null) { - const stream = innerResponse.body.stream; - const reader = stream.getReader(); - readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + }); + return controller; + } + function closeWebSocketConnection(ws, code, reason, reasonByteLength) { + if (isClosing(ws) || isClosed(ws)) { + } else if (!isEstablished(ws)) { + failWebsocketConnection(ws, 'Connection was closed before it was established.'); + ws[kReadyState] = states.CLOSING; + } else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) { + ws[kSentClose] = sentCloseFrameState.PROCESSING; + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, 'utf-8'); } else { - bodyReadPromise.resolve(void 0); - } - const operations = []; - const operation = { - type: 'put', - // 14. - request: innerRequest, - // 15. - response: clonedResponse - // 16. - }; - operations.push(operation); - const bytes = await bodyReadPromise.promise; - if (clonedResponse.body != null) { - clonedResponse.body.source = bytes; - } - const cacheJobPromise = createDeferredPromise(); - let errorData = null; - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; + frame.frameData = emptyBuffer; } - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(); - } else { - cacheJobPromise.reject(errorData); - } + const socket = ws[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE)); + ws[kSentClose] = sentCloseFrameState.SENT; + ws[kReadyState] = states.CLOSING; + } else { + ws[kReadyState] = states.CLOSING; + } + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const { [kResponse]: response } = ws; + response.socket.off('data', onSocketData); + response.socket.off('close', onSocketClose); + response.socket.off('error', onSocketError); + const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose]; + let code = 1005; + let reason = ''; + const result = ws[kByteParser].closingInfo; + if (result && !result.error) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kReceivedClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent('close', ws, (type, init) => new CloseEvent(type, init), { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason }); - return cacheJobPromise.promise; } - async delete(request, options = {}) { - webidl.brandCheck(this, _Cache); - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }); - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - let r = null; - if (request instanceof Request) { - r = request[kState]; - if (r.method !== 'GET' && !options.ignoreMethod) { - return false; - } - } else { - assert(typeof request === 'string'); - r = new Request(request)[kState]; + } + function onSocketError(error) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error); + } + this.destroy(); + } + module2.exports = { + establishWebSocketConnection, + closeWebSocketConnection + }; + } +}); + +// node_modules/undici/lib/web/websocket/permessage-deflate.js +var require_permessage_deflate = __commonJS({ + 'node_modules/undici/lib/web/websocket/permessage-deflate.js'(exports2, module2) { + 'use strict'; + var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib'); + var { isValidClientWindowBits } = require_util7(); + var tail = Buffer.from([0, 0, 255, 255]); + var kBuffer = Symbol('kBuffer'); + var kLength = Symbol('kLength'); + var PerMessageDeflate = class { + /** @type {import('node:zlib').InflateRaw} */ + #inflate; + #options = {}; + constructor(extensions) { + this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover'); + this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits'); + } + decompress(chunk, fin, callback) { + if (!this.#inflate) { + let windowBits = Z_DEFAULT_WINDOWBITS; + if (this.#options.serverMaxWindowBits) { + if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) { + callback(new Error('Invalid server_max_window_bits')); + return; + } + windowBits = Number.parseInt(this.#options.serverMaxWindowBits); + } + this.#inflate = createInflateRaw({ windowBits }); + this.#inflate[kBuffer] = []; + this.#inflate[kLength] = 0; + this.#inflate.on('data', data => { + this.#inflate[kBuffer].push(data); + this.#inflate[kLength] += data.length; + }); + this.#inflate.on('error', err => { + this.#inflate = null; + callback(err); + }); } - const operations = []; - const operation = { - type: 'delete', - request: r, - options - }; - operations.push(operation); - const cacheJobPromise = createDeferredPromise(); - let errorData = null; - let requestResponses; - try { - requestResponses = this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; + this.#inflate.write(chunk); + if (fin) { + this.#inflate.write(tail); } - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(!!requestResponses?.length); - } else { - cacheJobPromise.reject(errorData); - } + this.#inflate.flush(() => { + const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]); + this.#inflate[kBuffer].length = 0; + this.#inflate[kLength] = 0; + callback(null, full); }); - return cacheJobPromise.promise; + } + }; + module2.exports = { PerMessageDeflate }; + } +}); + +// node_modules/undici/lib/web/websocket/receiver.js +var require_receiver = __commonJS({ + 'node_modules/undici/lib/web/websocket/receiver.js'(exports2, module2) { + 'use strict'; + var { Writable } = require('node:stream'); + var assert = require('node:assert'); + var { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require_constants5(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { channels } = require_diagnostics(); + var { + isValidStatusCode, + isValidOpcode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isTextBinaryFrame, + isContinuationFrame + } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var { closeWebSocketConnection } = require_connection(); + var { PerMessageDeflate } = require_permessage_deflate(); + var ByteParser = class extends Writable { + #buffers = []; + #byteOffset = 0; + #loop = false; + #state = parserStates.INFO; + #info = {}; + #fragments = []; + /** @type {Map} */ + #extensions; + constructor(ws, extensions) { + super(); + this.ws = ws; + this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions; + if (this.#extensions.has('permessage-deflate')) { + this.#extensions.set('permessage-deflate', new PerMessageDeflate(extensions)); + } } /** - * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys - * @param {any} request - * @param {import('../../types/cache').CacheQueryOptions} options - * @returns {readonly Request[]} + * @param {Buffer} chunk + * @param {() => void} callback */ - async keys(request = void 0, options = {}) { - webidl.brandCheck(this, _Cache); - if (request !== void 0) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - let r = null; - if (request !== void 0) { - if (request instanceof Request) { - r = request[kState]; - if (r.method !== 'GET' && !options.ignoreMethod) { - return []; - } - } else if (typeof request === 'string') { - r = new Request(request)[kState]; - } - } - const promise = createDeferredPromise(); - const requests = []; - if (request === void 0) { - for (const requestResponse of this.#relevantRequestResponseList) { - requests.push(requestResponse[0]); - } - } else { - const requestResponses = this.#queryCache(r, options); - for (const requestResponse of requestResponses) { - requests.push(requestResponse[0]); - } - } - queueMicrotask(() => { - const requestList = []; - for (const request2 of requests) { - const requestObject = new Request('https://a'); - requestObject[kState] = request2; - requestObject[kHeaders][kHeadersList] = request2.headersList; - requestObject[kHeaders][kGuard] = 'immutable'; - requestObject[kRealm] = request2.client; - requestList.push(requestObject); - } - promise.resolve(Object.freeze(requestList)); - }); - return promise.promise; + _write(chunk, _, callback) { + this.#buffers.push(chunk); + this.#byteOffset += chunk.length; + this.#loop = true; + this.run(callback); } /** - * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm - * @param {CacheBatchOperation[]} operations - * @returns {requestResponseList} + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. */ - #batchCacheOperations(operations) { - const cache = this.#relevantRequestResponseList; - const backupCache = [...cache]; - const addedItems = []; - const resultList = []; - try { - for (const operation of operations) { - if (operation.type !== 'delete' && operation.type !== 'put') { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'operation type does not match "delete" or "put"' - }); + run(callback) { + while (this.#loop) { + if (this.#state === parserStates.INFO) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + const fin = (buffer[0] & 128) !== 0; + const opcode = buffer[0] & 15; + const masked = (buffer[1] & 128) === 128; + const fragmented = !fin && opcode !== opcodes.CONTINUATION; + const payloadLength = buffer[1] & 127; + const rsv1 = buffer[0] & 64; + const rsv2 = buffer[0] & 32; + const rsv3 = buffer[0] & 16; + if (!isValidOpcode(opcode)) { + failWebsocketConnection(this.ws, 'Invalid opcode received'); + return callback(); + } + if (masked) { + failWebsocketConnection(this.ws, 'Frame cannot be masked'); + return callback(); + } + if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) { + failWebsocketConnection(this.ws, 'Expected RSV1 to be clear.'); + return; + } + if (rsv2 !== 0 || rsv3 !== 0) { + failWebsocketConnection(this.ws, 'RSV1, RSV2, RSV3 must be clear'); + return; + } + if (fragmented && !isTextBinaryFrame(opcode)) { + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.'); + return; + } + if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) { + failWebsocketConnection(this.ws, 'Expected continuation frame'); + return; + } + if (this.#info.fragmented && fragmented) { + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.'); + return; + } + if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) { + failWebsocketConnection(this.ws, 'Control frame either too large or fragmented'); + return; + } + if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) { + failWebsocketConnection(this.ws, 'Unexpected continuation frame'); + return; + } + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength; + this.#state = parserStates.READ_DATA; + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16; + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64; + } + if (isTextBinaryFrame(opcode)) { + this.#info.binaryType = opcode; + this.#info.compressed = rsv1 !== 0; + } + this.#info.opcode = opcode; + this.#info.masked = masked; + this.#info.fin = fin; + this.#info.fragmented = fragmented; + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + this.#info.payloadLength = buffer.readUInt16BE(0); + this.#state = parserStates.READ_DATA; + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback(); } - if (operation.type === 'delete' && operation.response != null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'delete operation should not have an associated response' - }); + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.'); + return; } - if (this.#queryCache(operation.request, operation.options, addedItems).length) { - throw new DOMException('???', 'InvalidStateError'); + const lower = buffer.readUInt32BE(4); + this.#info.payloadLength = (upper << 8) + lower; + this.#state = parserStates.READ_DATA; + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + return callback(); } - let requestResponses; - if (operation.type === 'delete') { - requestResponses = this.#queryCache(operation.request, operation.options); - if (requestResponses.length === 0) { - return []; - } - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - cache.splice(idx, 1); - } - } else if (operation.type === 'put') { - if (operation.response == null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'put operation should have an associated response' - }); - } - const r = operation.request; - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'expected http or https scheme' - }); - } - if (r.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'not get method' - }); - } - if (operation.options != null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'options must not be defined' + const body2 = this.consume(this.#info.payloadLength); + if (isControlFrame(this.#info.opcode)) { + this.#loop = this.parseControlFrame(body2); + this.#state = parserStates.INFO; + } else { + if (!this.#info.compressed) { + this.#fragments.push(body2); + if (!this.#info.fragmented && this.#info.fin) { + const fullMessage = Buffer.concat(this.#fragments); + websocketMessageReceived(this.ws, this.#info.binaryType, fullMessage); + this.#fragments.length = 0; + } + this.#state = parserStates.INFO; + } else { + this.#extensions.get('permessage-deflate').decompress(body2, this.#info.fin, (error, data) => { + if (error) { + closeWebSocketConnection(this.ws, 1007, error.message, error.message.length); + return; + } + this.#fragments.push(data); + if (!this.#info.fin) { + this.#state = parserStates.INFO; + this.#loop = true; + this.run(callback); + return; + } + websocketMessageReceived(this.ws, this.#info.binaryType, Buffer.concat(this.#fragments)); + this.#loop = true; + this.#state = parserStates.INFO; + this.#fragments.length = 0; + this.run(callback); }); + this.#loop = false; + break; } - requestResponses = this.#queryCache(operation.request); - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - cache.splice(idx, 1); - } - cache.push([operation.request, operation.response]); - addedItems.push([operation.request, operation.response]); } - resultList.push([operation.request, operation.response]); } - return resultList; - } catch (e) { - this.#relevantRequestResponseList.length = 0; - this.#relevantRequestResponseList = backupCache; - throw e; } } /** - * @see https://w3c.github.io/ServiceWorker/#query-cache - * @param {any} requestQuery - * @param {import('../../types/cache').CacheQueryOptions} options - * @param {requestResponseList} targetStorage - * @returns {requestResponseList} + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer} */ - #queryCache(requestQuery, options, targetStorage) { - const resultList = []; - const storage = targetStorage ?? this.#relevantRequestResponseList; - for (const requestResponse of storage) { - const [cachedRequest, cachedResponse] = requestResponse; - if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { - resultList.push(requestResponse); + consume(n) { + if (n > this.#byteOffset) { + throw new Error('Called consume() before buffers satiated.'); + } else if (n === 0) { + return emptyBuffer; + } + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length; + return this.#buffers.shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = this.#buffers[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + this.#buffers[0] = next.subarray(n - offset); + break; + } else { + buffer.set(this.#buffers.shift(), offset); + offset += next.length; } } - return resultList; + this.#byteOffset -= n; + return buffer; } - /** - * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm - * @param {any} requestQuery - * @param {any} request - * @param {any | null} response - * @param {import('../../types/cache').CacheQueryOptions | undefined} options - * @returns {boolean} - */ - #requestMatchesCachedItem(requestQuery, request, response = null, options) { - const queryURL = new URL(requestQuery.url); - const cachedURL = new URL(request.url); - if (options?.ignoreSearch) { - cachedURL.search = ''; - queryURL.search = ''; + parseCloseBody(data) { + assert(data.length !== 1); + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); } - if (!urlEquals(queryURL, cachedURL, true)) { - return false; + if (code !== void 0 && !isValidStatusCode(code)) { + return { code: 1002, reason: 'Invalid status code', error: true }; } - if (response == null || options?.ignoreVary || !response.headersList.contains('vary')) { - return true; + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); } - const fieldValues = getFieldValues(response.headersList.get('vary')); - for (const fieldValue of fieldValues) { - if (fieldValue === '*') { - return false; - } - const requestValue = request.headersList.get(fieldValue); - const queryValue = requestQuery.headersList.get(fieldValue); - if (requestValue !== queryValue) { - return false; - } + try { + reason = utf8Decode(reason); + } catch { + return { code: 1007, reason: 'Invalid UTF-8', error: true }; } - return true; - } - }; - Object.defineProperties(Cache.prototype, { - [Symbol.toStringTag]: { - value: 'Cache', - configurable: true - }, - match: kEnumerableProperty, - matchAll: kEnumerableProperty, - add: kEnumerableProperty, - addAll: kEnumerableProperty, - put: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty - }); - var cacheQueryOptionConverters = [ - { - key: 'ignoreSearch', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'ignoreMethod', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'ignoreVary', - converter: webidl.converters.boolean, - defaultValue: false - } - ]; - webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); - webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ - ...cacheQueryOptionConverters, - { - key: 'cacheName', - converter: webidl.converters.DOMString + return { code, reason, error: false }; } - ]); - webidl.converters.Response = webidl.interfaceConverter(Response); - webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.RequestInfo); - module2.exports = { - Cache - }; - } -}); - -// node_modules/undici/lib/cache/cachestorage.js -var require_cachestorage = __commonJS({ - 'node_modules/undici/lib/cache/cachestorage.js'(exports2, module2) { - 'use strict'; - var { kConstruct } = require_symbols4(); - var { Cache } = require_cache(); - var { webidl } = require_webidl(); - var { kEnumerableProperty } = require_util(); - var CacheStorage = class _CacheStorage { /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map - * @type {Map { + if (!err) { + this.ws[kSentClose] = sentCloseFrameState.SENT; + } + }); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + return false; + } else if (opcode === opcodes.PING) { + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body2 + }); + } + } + } else if (opcode === opcodes.PONG) { + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body2 + }); } } + return true; } - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-has - * @param {string} cacheName - * @returns {Promise} - */ - async has(cacheName) { - webidl.brandCheck(this, _CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }); - cacheName = webidl.converters.DOMString(cacheName); - return this.#caches.has(cacheName); - } - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open - * @param {string} cacheName - * @returns {Promise} - */ - async open(cacheName) { - webidl.brandCheck(this, _CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }); - cacheName = webidl.converters.DOMString(cacheName); - if (this.#caches.has(cacheName)) { - const cache2 = this.#caches.get(cacheName); - return new Cache(kConstruct, cache2); - } - const cache = []; - this.#caches.set(cacheName, cache); - return new Cache(kConstruct, cache); - } - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete - * @param {string} cacheName - * @returns {Promise} - */ - async delete(cacheName) { - webidl.brandCheck(this, _CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }); - cacheName = webidl.converters.DOMString(cacheName); - return this.#caches.delete(cacheName); - } - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys - * @returns {string[]} - */ - async keys() { - webidl.brandCheck(this, _CacheStorage); - const keys = this.#caches.keys(); - return [...keys]; + get closingInfo() { + return this.#info.closeInfo; } }; - Object.defineProperties(CacheStorage.prototype, { - [Symbol.toStringTag]: { - value: 'CacheStorage', - configurable: true - }, - match: kEnumerableProperty, - has: kEnumerableProperty, - open: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty - }); - module2.exports = { - CacheStorage - }; - } -}); - -// node_modules/undici/lib/cookies/constants.js -var require_constants4 = __commonJS({ - 'node_modules/undici/lib/cookies/constants.js'(exports2, module2) { - 'use strict'; - var maxAttributeValueSize = 1024; - var maxNameValuePairSize = 4096; module2.exports = { - maxAttributeValueSize, - maxNameValuePairSize + ByteParser }; } }); -// node_modules/undici/lib/cookies/util.js -var require_util6 = __commonJS({ - 'node_modules/undici/lib/cookies/util.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/sender.js +var require_sender = __commonJS({ + 'node_modules/undici/lib/web/websocket/sender.js'(exports2, module2) { 'use strict'; - var assert = require('assert'); - var { kHeadersList } = require_symbols(); - function isCTLExcludingHtab(value) { - if (value.length === 0) { - return false; - } - for (const char of value) { - const code = char.charCodeAt(0); - if (code >= 0 || code <= 8 || code >= 10 || code <= 31 || code === 127) { - return false; - } - } - } - function validateCookieName(name) { - for (const char of name) { - const code = char.charCodeAt(0); - if ( - code <= 32 || - code > 127 || - char === '(' || - char === ')' || - char === '>' || - char === '<' || - char === '@' || - char === ',' || - char === ';' || - char === ':' || - char === '\\' || - char === '"' || - char === '/' || - char === '[' || - char === ']' || - char === '?' || - char === '=' || - char === '{' || - char === '}' - ) { - throw new Error('Invalid cookie name'); - } - } - } - function validateCookieValue(value) { - for (const char of value) { - const code = char.charCodeAt(0); - if ( - code < 33 || // exclude CTLs (0-31) - code === 34 || - code === 44 || - code === 59 || - code === 92 || - code > 126 - ) { - throw new Error('Invalid header value'); + var { WebsocketFrameSend } = require_frame(); + var { opcodes, sendHints } = require_constants5(); + var FixedQueue = require_fixed_queue(); + var FastBuffer = Buffer[Symbol.species]; + var SendQueue = class { + /** + * @type {FixedQueue} + */ + #queue = new FixedQueue(); + /** + * @type {boolean} + */ + #running = false; + /** @type {import('node:net').Socket} */ + #socket; + constructor(socket) { + this.#socket = socket; + } + add(item, cb, hint) { + if (hint !== sendHints.blob) { + const frame = createFrame(item, hint); + if (!this.#running) { + this.#socket.write(frame, cb); + } else { + const node2 = { + promise: null, + callback: cb, + frame + }; + this.#queue.push(node2); + } + return; } - } - } - function validateCookiePath(path) { - for (const char of path) { - const code = char.charCodeAt(0); - if (code < 33 || char === ';') { - throw new Error('Invalid cookie path'); + const node = { + promise: item.arrayBuffer().then(ab => { + node.promise = null; + node.frame = createFrame(ab, hint); + }), + callback: cb, + frame: null + }; + this.#queue.push(node); + if (!this.#running) { + this.#run(); } } - } - function validateCookieDomain(domain) { - if (domain.startsWith('-') || domain.endsWith('.') || domain.endsWith('-')) { - throw new Error('Invalid cookie domain'); - } - } - function toIMFDate(date) { - if (typeof date === 'number') { - date = new Date(date); - } - const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - const dayName = days[date.getUTCDay()]; - const day = date.getUTCDate().toString().padStart(2, '0'); - const month = months[date.getUTCMonth()]; - const year = date.getUTCFullYear(); - const hour = date.getUTCHours().toString().padStart(2, '0'); - const minute = date.getUTCMinutes().toString().padStart(2, '0'); - const second = date.getUTCSeconds().toString().padStart(2, '0'); - return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; - } - function validateCookieMaxAge(maxAge) { - if (maxAge < 0) { - throw new Error('Invalid cookie max-age'); - } - } - function stringify2(cookie) { - if (cookie.name.length === 0) { - return null; - } - validateCookieName(cookie.name); - validateCookieValue(cookie.value); - const out = [`${cookie.name}=${cookie.value}`]; - if (cookie.name.startsWith('__Secure-')) { - cookie.secure = true; - } - if (cookie.name.startsWith('__Host-')) { - cookie.secure = true; - cookie.domain = null; - cookie.path = '/'; - } - if (cookie.secure) { - out.push('Secure'); - } - if (cookie.httpOnly) { - out.push('HttpOnly'); - } - if (typeof cookie.maxAge === 'number') { - validateCookieMaxAge(cookie.maxAge); - out.push(`Max-Age=${cookie.maxAge}`); - } - if (cookie.domain) { - validateCookieDomain(cookie.domain); - out.push(`Domain=${cookie.domain}`); - } - if (cookie.path) { - validateCookiePath(cookie.path); - out.push(`Path=${cookie.path}`); - } - if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { - out.push(`Expires=${toIMFDate(cookie.expires)}`); - } - if (cookie.sameSite) { - out.push(`SameSite=${cookie.sameSite}`); - } - for (const part of cookie.unparsed) { - if (!part.includes('=')) { - throw new Error('Invalid unparsed'); + async #run() { + this.#running = true; + const queue = this.#queue; + while (!queue.isEmpty()) { + const node = queue.shift(); + if (node.promise !== null) { + await node.promise; + } + this.#socket.write(node.frame, node.callback); + node.callback = node.frame = null; } - const [key, ...value] = part.split('='); - out.push(`${key.trim()}=${value.join('=')}`); + this.#running = false; } - return out.join('; '); + }; + function createFrame(data, hint) { + return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.string ? opcodes.TEXT : opcodes.BINARY); } - var kHeadersListNode; - function getHeadersList(headers) { - if (headers[kHeadersList]) { - return headers[kHeadersList]; - } - if (!kHeadersListNode) { - kHeadersListNode = Object.getOwnPropertySymbols(headers).find(symbol => symbol.description === 'headers list'); - assert(kHeadersListNode, 'Headers cannot be parsed'); + function toBuffer(data, hint) { + switch (hint) { + case sendHints.string: + return Buffer.from(data); + case sendHints.arrayBuffer: + case sendHints.blob: + return new FastBuffer(data); + case sendHints.typedArray: + return new FastBuffer(data.buffer, data.byteOffset, data.byteLength); } - const headersList = headers[kHeadersListNode]; - assert(headersList); - return headersList; } - module2.exports = { - isCTLExcludingHtab, - stringify: stringify2, - getHeadersList - }; + module2.exports = { SendQueue }; } }); -// node_modules/undici/lib/cookies/parse.js -var require_parse = __commonJS({ - 'node_modules/undici/lib/cookies/parse.js'(exports2, module2) { +// node_modules/undici/lib/web/websocket/websocket.js +var require_websocket = __commonJS({ + 'node_modules/undici/lib/web/websocket/websocket.js'(exports2, module2) { 'use strict'; - var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4(); - var { isCTLExcludingHtab } = require_util6(); - var { collectASequenceOfCodePointsFast } = require_dataURL(); - var assert = require('assert'); - function parseSetCookie(header) { - if (isCTLExcludingHtab(header)) { - return null; + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { environmentSettingsObject } = require_util2(); + var { staticPropertyDescriptors, states, sentCloseFrameState, sendHints } = require_constants5(); + var { kWebSocketURL, kReadyState, kController, kBinaryType, kResponse, kSentClose, kByteParser } = require_symbols5(); + var { isConnecting, isEstablished, isClosing, isValidSubprotocol, fireEvent } = require_util7(); + var { establishWebSocketConnection, closeWebSocketConnection } = require_connection(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types } = require('node:util'); + var { ErrorEvent, CloseEvent } = require_events(); + var { SendQueue } = require_sender(); + var WebSocket = class _WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + }; + #bufferedAmount = 0; + #protocol = ''; + #extensions = ''; + /** @type {SendQueue} */ + #sendQueue; + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + webidl.util.markAsUncloneable(this); + const prefix = 'WebSocket constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols, prefix, 'options'); + url = webidl.converters.USVString(url, prefix, 'url'); + protocols = options.protocols; + const baseURL = environmentSettingsObject.settingsObject.baseUrl; + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException(e, 'SyntaxError'); + } + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:'; + } else if (urlRecord.protocol === 'https:') { + urlRecord.protocol = 'wss:'; + } + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException(`Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, 'SyntaxError'); + } + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError'); + } + if (typeof protocols === 'string') { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + } + this[kWebSocketURL] = new URL(urlRecord.href); + const client = environmentSettingsObject.settingsObject; + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + client, + this, + (response, extensions) => this.#onConnectionEstablished(response, extensions), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kSentClose] = sentCloseFrameState.NOT_SENT; + this[kBinaryType] = 'blob'; } - let nameValuePair = ''; - let unparsedAttributes = ''; - let name = ''; - let value = ''; - if (header.includes(';')) { - const position = { position: 0 }; - nameValuePair = collectASequenceOfCodePointsFast(';', header, position); - unparsedAttributes = header.slice(position.position); - } else { - nameValuePair = header; + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + const prefix = 'WebSocket.close'; + if (code !== void 0) { + code = webidl.converters['unsigned short'](code, prefix, 'code', { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason, prefix, 'reason'); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError'); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException(`Reason must be less than 123 bytes; received ${reasonByteLength}`, 'SyntaxError'); + } + } + closeWebSocketConnection(this, code, reason, reasonByteLength); + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + const prefix = 'WebSocket.send'; + webidl.argumentLengthCheck(arguments, 1, prefix); + data = webidl.converters.WebSocketSendData(data, prefix, 'data'); + if (isConnecting(this)) { + throw new DOMException('Sent before connected.', 'InvalidStateError'); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + if (typeof data === 'string') { + const length = Buffer.byteLength(data); + this.#bufferedAmount += length; + this.#sendQueue.add( + data, + () => { + this.#bufferedAmount -= length; + }, + sendHints.string + ); + } else if (types.isArrayBuffer(data)) { + this.#bufferedAmount += data.byteLength; + this.#sendQueue.add( + data, + () => { + this.#bufferedAmount -= data.byteLength; + }, + sendHints.arrayBuffer + ); + } else if (ArrayBuffer.isView(data)) { + this.#bufferedAmount += data.byteLength; + this.#sendQueue.add( + data, + () => { + this.#bufferedAmount -= data.byteLength; + }, + sendHints.typedArray + ); + } else if (isBlobLike(data)) { + this.#bufferedAmount += data.size; + this.#sendQueue.add( + data, + () => { + this.#bufferedAmount -= data.size; + }, + sendHints.blob + ); + } } - if (!nameValuePair.includes('=')) { - value = nameValuePair; - } else { - const position = { position: 0 }; - name = collectASequenceOfCodePointsFast('=', nameValuePair, position); - value = nameValuePair.slice(position.position + 1); + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; } - name = name.trim(); - value = value.trim(); - if (name.length + value.length > maxNameValuePairSize) { - return null; + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return this.#bufferedAmount; } - return { - name, - value, - ...parseUnparsedAttributes(unparsedAttributes) - }; - } - function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { - if (unparsedAttributes.length === 0) { - return cookieAttributeList; + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); } - assert(unparsedAttributes[0] === ';'); - unparsedAttributes = unparsedAttributes.slice(1); - let cookieAv = ''; - if (unparsedAttributes.includes(';')) { - cookieAv = collectASequenceOfCodePointsFast(';', unparsedAttributes, { position: 0 }); - unparsedAttributes = unparsedAttributes.slice(cookieAv.length); - } else { - cookieAv = unparsedAttributes; - unparsedAttributes = ''; + get extensions() { + webidl.brandCheck(this, _WebSocket); + return this.#extensions; } - let attributeName = ''; - let attributeValue = ''; - if (cookieAv.includes('=')) { - const position = { position: 0 }; - attributeName = collectASequenceOfCodePointsFast('=', cookieAv, position); - attributeValue = cookieAv.slice(position.position + 1); - } else { - attributeName = cookieAv; + get protocol() { + webidl.brandCheck(this, _WebSocket); + return this.#protocol; } - attributeName = attributeName.trim(); - attributeValue = attributeValue.trim(); - if (attributeValue.length > maxAttributeValueSize) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + get onopen() { + webidl.brandCheck(this, _WebSocket); + return this.#events.open; } - const attributeNameLowercase = attributeName.toLowerCase(); - if (attributeNameLowercase === 'expires') { - const expiryTime = new Date(attributeValue); - cookieAttributeList.expires = expiryTime; - } else if (attributeNameLowercase === 'max-age') { - const charCode = attributeValue.charCodeAt(0); - if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.open) { + this.removeEventListener('open', this.#events.open); } - if (!/^\d+$/.test(attributeValue)) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + if (typeof fn === 'function') { + this.#events.open = fn; + this.addEventListener('open', fn); + } else { + this.#events.open = null; } - const deltaSeconds = Number(attributeValue); - cookieAttributeList.maxAge = deltaSeconds; - } else if (attributeNameLowercase === 'domain') { - let cookieDomain = attributeValue; - if (cookieDomain[0] === '.') { - cookieDomain = cookieDomain.slice(1); + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return this.#events.error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.error) { + this.removeEventListener('error', this.#events.error); } - cookieDomain = cookieDomain.toLowerCase(); - cookieAttributeList.domain = cookieDomain; - } else if (attributeNameLowercase === 'path') { - let cookiePath = ''; - if (attributeValue.length === 0 || attributeValue[0] !== '/') { - cookiePath = '/'; + if (typeof fn === 'function') { + this.#events.error = fn; + this.addEventListener('error', fn); } else { - cookiePath = attributeValue; + this.#events.error = null; } - cookieAttributeList.path = cookiePath; - } else if (attributeNameLowercase === 'secure') { - cookieAttributeList.secure = true; - } else if (attributeNameLowercase === 'httponly') { - cookieAttributeList.httpOnly = true; - } else if (attributeNameLowercase === 'samesite') { - let enforcement = 'Default'; - const attributeValueLowercase = attributeValue.toLowerCase(); - if (attributeValueLowercase.includes('none')) { - enforcement = 'None'; + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return this.#events.close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.close) { + this.removeEventListener('close', this.#events.close); } - if (attributeValueLowercase.includes('strict')) { - enforcement = 'Strict'; + if (typeof fn === 'function') { + this.#events.close = fn; + this.addEventListener('close', fn); + } else { + this.#events.close = null; } - if (attributeValueLowercase.includes('lax')) { - enforcement = 'Lax'; + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return this.#events.message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.message) { + this.removeEventListener('message', this.#events.message); + } + if (typeof fn === 'function') { + this.#events.message = fn; + this.addEventListener('message', fn); + } else { + this.#events.message = null; } - cookieAttributeList.sameSite = enforcement; - } else { - cookieAttributeList.unparsed ??= []; - cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); } - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - module2.exports = { - parseSetCookie, - parseUnparsedAttributes - }; - } -}); - -// node_modules/undici/lib/cookies/index.js -var require_cookies = __commonJS({ - 'node_modules/undici/lib/cookies/index.js'(exports2, module2) { - 'use strict'; - var { parseSetCookie } = require_parse(); - var { stringify: stringify2, getHeadersList } = require_util6(); - var { webidl } = require_webidl(); - var { Headers } = require_headers(); - function getCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }); - webidl.brandCheck(headers, Headers, { strict: false }); - const cookie = headers.get('cookie'); - const out = {}; - if (!cookie) { - return out; + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; } - for (const piece of cookie.split(';')) { - const [name, ...value] = piece.split('='); - out[name.trim()] = value.join('='); + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob'; + } else { + this[kBinaryType] = type; + } } - return out; - } - function deleteCookie(headers, name, attributes) { - webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }); - webidl.brandCheck(headers, Headers, { strict: false }); - name = webidl.converters.DOMString(name); - attributes = webidl.converters.DeleteCookieAttributes(attributes); - setCookie(headers, { - name, - value: '', - expires: /* @__PURE__ */ new Date(0), - ...attributes - }); - } - function getSetCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }); - webidl.brandCheck(headers, Headers, { strict: false }); - const cookies = getHeadersList(headers).cookies; - if (!cookies) { - return []; + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished(response, parsedExtensions) { + this[kResponse] = response; + const parser = new ByteParser(this, parsedExtensions); + parser.on('drain', onParserDrain); + parser.on('error', onParserError.bind(this)); + response.socket.ws = this; + this[kByteParser] = parser; + this.#sendQueue = new SendQueue(response.socket); + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get('sec-websocket-extensions'); + if (extensions !== null) { + this.#extensions = extensions; + } + const protocol = response.headersList.get('sec-websocket-protocol'); + if (protocol !== null) { + this.#protocol = protocol; + } + fireEvent('open', this); } - return cookies.map(pair => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); - } - function setCookie(headers, cookie) { - webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }); - webidl.brandCheck(headers, Headers, { strict: false }); - cookie = webidl.converters.Cookie(cookie); - const str = stringify2(cookie); - if (str) { - headers.append('Set-Cookie', stringify2(cookie)); + }; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true } - } - webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'path', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'domain', - defaultValue: null + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.DOMString); + webidl.converters['DOMString or sequence'] = function (V, prefix, argument) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V); } - ]); - webidl.converters.Cookie = webidl.dictionaryConverter([ - { - converter: webidl.converters.DOMString, - key: 'name' - }, - { - converter: webidl.converters.DOMString, - key: 'value' - }, - { - converter: webidl.nullableConverter(value => { - if (typeof value === 'number') { - return webidl.converters['unsigned long long'](value); - } - return new Date(value); - }), - key: 'expires', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters['long long']), - key: 'maxAge', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'domain', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'path', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: 'secure', - defaultValue: null - }, + return webidl.converters.DOMString(V, prefix, argument); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: 'httpOnly', - defaultValue: null + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + defaultValue: () => new Array(0) }, { - converter: webidl.converters.USVString, - key: 'sameSite', - allowedValues: ['Strict', 'Lax', 'None'] + key: 'dispatcher', + converter: webidl.converters.any, + defaultValue: () => getGlobalDispatcher() }, { - converter: webidl.sequenceConverter(webidl.converters.DOMString), - key: 'unparsed', - defaultValue: [] + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) } ]); - module2.exports = { - getCookies, - deleteCookie, - getSetCookies, - setCookie - }; - } -}); - -// node_modules/undici/lib/websocket/constants.js -var require_constants5 = __commonJS({ - 'node_modules/undici/lib/websocket/constants.js'(exports2, module2) { - 'use strict'; - var uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; - var staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false - }; - var states = { - CONNECTING: 0, - OPEN: 1, - CLOSING: 2, - CLOSED: 3 - }; - var opcodes = { - CONTINUATION: 0, - TEXT: 1, - BINARY: 2, - CLOSE: 8, - PING: 9, - PONG: 10 + webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters['DOMString or sequence'](V) }; }; - var maxUnsigned16Bit = 2 ** 16 - 1; - var parserStates = { - INFO: 0, - PAYLOADLENGTH_16: 2, - PAYLOADLENGTH_64: 3, - READ_DATA: 4 + webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); }; - var emptyBuffer = Buffer.allocUnsafe(0); + function onParserDrain() { + this.ws[kResponse].socket.resume(); + } + function onParserError(err) { + let message; + let code; + if (err instanceof CloseEvent) { + message = err.reason; + code = err.code; + } else { + message = err.message; + } + fireEvent('error', this, () => new ErrorEvent('error', { error: err, message })); + closeWebSocketConnection(this, code); + } module2.exports = { - uid, - staticPropertyDescriptors, - states, - opcodes, - maxUnsigned16Bit, - parserStates, - emptyBuffer + WebSocket }; } }); -// node_modules/undici/lib/websocket/symbols.js -var require_symbols5 = __commonJS({ - 'node_modules/undici/lib/websocket/symbols.js'(exports2, module2) { +// node_modules/undici/lib/web/eventsource/util.js +var require_util8 = __commonJS({ + 'node_modules/undici/lib/web/eventsource/util.js'(exports2, module2) { 'use strict'; + function isValidLastEventId(value) { + return value.indexOf('\0') === -1; + } + function isASCIINumber(value) { + if (value.length === 0) return false; + for (let i = 0; i < value.length; i++) { + if (value.charCodeAt(i) < 48 || value.charCodeAt(i) > 57) return false; + } + return true; + } + function delay(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms).unref(); + }); + } module2.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') + isValidLastEventId, + isASCIINumber, + delay }; } }); -// node_modules/undici/lib/websocket/events.js -var require_events = __commonJS({ - 'node_modules/undici/lib/websocket/events.js'(exports2, module2) { +// node_modules/undici/lib/web/eventsource/eventsource-stream.js +var require_eventsource_stream = __commonJS({ + 'node_modules/undici/lib/web/eventsource/eventsource-stream.js'(exports2, module2) { 'use strict'; - var { webidl } = require_webidl(); - var { kEnumerableProperty } = require_util(); - var { MessagePort } = require('worker_threads'); - var MessageEvent = class _MessageEvent extends Event { - #eventInit; - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }); - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.MessageEventInit(eventInitDict); - super(type, eventInitDict); - this.#eventInit = eventInitDict; - } - get data() { - webidl.brandCheck(this, _MessageEvent); - return this.#eventInit.data; - } - get origin() { - webidl.brandCheck(this, _MessageEvent); - return this.#eventInit.origin; - } - get lastEventId() { - webidl.brandCheck(this, _MessageEvent); - return this.#eventInit.lastEventId; - } - get source() { - webidl.brandCheck(this, _MessageEvent); - return this.#eventInit.source; + var { Transform } = require('node:stream'); + var { isASCIINumber, isValidLastEventId } = require_util8(); + var BOM = [239, 187, 191]; + var LF = 10; + var CR = 13; + var COLON = 58; + var SPACE = 32; + var EventSourceStream = class extends Transform { + /** + * @type {eventSourceSettings} + */ + state = null; + /** + * Leading byte-order-mark check. + * @type {boolean} + */ + checkBOM = true; + /** + * @type {boolean} + */ + crlfCheck = false; + /** + * @type {boolean} + */ + eventEndCheck = false; + /** + * @type {Buffer} + */ + buffer = null; + pos = 0; + event = { + data: void 0, + event: void 0, + id: void 0, + retry: void 0 + }; + /** + * @param {object} options + * @param {eventSourceSettings} options.eventSourceSettings + * @param {Function} [options.push] + */ + constructor(options = {}) { + options.readableObjectMode = true; + super(options); + this.state = options.eventSourceSettings || {}; + if (options.push) { + this.push = options.push; + } } - get ports() { - webidl.brandCheck(this, _MessageEvent); - if (!Object.isFrozen(this.#eventInit.ports)) { - Object.freeze(this.#eventInit.ports); + /** + * @param {Buffer} chunk + * @param {string} _encoding + * @param {Function} callback + * @returns {void} + */ + _transform(chunk, _encoding, callback) { + if (chunk.length === 0) { + callback(); + return; } - return this.#eventInit.ports; + if (this.buffer) { + this.buffer = Buffer.concat([this.buffer, chunk]); + } else { + this.buffer = chunk; + } + if (this.checkBOM) { + switch (this.buffer.length) { + case 1: + if (this.buffer[0] === BOM[0]) { + callback(); + return; + } + this.checkBOM = false; + callback(); + return; + case 2: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1]) { + callback(); + return; + } + this.checkBOM = false; + break; + case 3: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) { + this.buffer = Buffer.alloc(0); + this.checkBOM = false; + callback(); + return; + } + this.checkBOM = false; + break; + default: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) { + this.buffer = this.buffer.subarray(3); + } + this.checkBOM = false; + break; + } + } + while (this.pos < this.buffer.length) { + if (this.eventEndCheck) { + if (this.crlfCheck) { + if (this.buffer[this.pos] === LF) { + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + this.crlfCheck = false; + continue; + } + this.crlfCheck = false; + } + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true; + } + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + if (this.event.data !== void 0 || this.event.event || this.event.id || this.event.retry) { + this.processEvent(this.event); + } + this.clearEvent(); + continue; + } + this.eventEndCheck = false; + continue; + } + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true; + } + this.parseLine(this.buffer.subarray(0, this.pos), this.event); + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + this.eventEndCheck = true; + continue; + } + this.pos++; + } + callback(); } - initMessageEvent( - type, - bubbles = false, - cancelable = false, - data = null, - origin = '', - lastEventId = '', - source = null, - ports = [] - ) { - webidl.brandCheck(this, _MessageEvent); - webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }); - return new _MessageEvent(type, { - bubbles, - cancelable, - data, - origin, - lastEventId, - source, - ports - }); + /** + * @param {Buffer} line + * @param {EventStreamEvent} event + */ + parseLine(line, event) { + if (line.length === 0) { + return; + } + const colonPosition = line.indexOf(COLON); + if (colonPosition === 0) { + return; + } + let field = ''; + let value = ''; + if (colonPosition !== -1) { + field = line.subarray(0, colonPosition).toString('utf8'); + let valueStart = colonPosition + 1; + if (line[valueStart] === SPACE) { + ++valueStart; + } + value = line.subarray(valueStart).toString('utf8'); + } else { + field = line.toString('utf8'); + value = ''; + } + switch (field) { + case 'data': + if (event[field] === void 0) { + event[field] = value; + } else { + event[field] += ` +${value}`; + } + break; + case 'retry': + if (isASCIINumber(value)) { + event[field] = value; + } + break; + case 'id': + if (isValidLastEventId(value)) { + event[field] = value; + } + break; + case 'event': + if (value.length > 0) { + event[field] = value; + } + break; + } + } + /** + * @param {EventSourceStreamEvent} event + */ + processEvent(event) { + if (event.retry && isASCIINumber(event.retry)) { + this.state.reconnectionTime = parseInt(event.retry, 10); + } + if (event.id && isValidLastEventId(event.id)) { + this.state.lastEventId = event.id; + } + if (event.data !== void 0) { + this.push({ + type: event.event || 'message', + options: { + data: event.data, + lastEventId: this.state.lastEventId, + origin: this.state.origin + } + }); + } + } + clearEvent() { + this.event = { + data: void 0, + event: void 0, + id: void 0, + retry: void 0 + }; } }; - var CloseEvent = class _CloseEvent extends Event { - #eventInit; - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }); - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.CloseEventInit(eventInitDict); - super(type, eventInitDict); - this.#eventInit = eventInitDict; + module2.exports = { + EventSourceStream + }; + } +}); + +// node_modules/undici/lib/web/eventsource/eventsource.js +var require_eventsource = __commonJS({ + 'node_modules/undici/lib/web/eventsource/eventsource.js'(exports2, module2) { + 'use strict'; + var { pipeline } = require('node:stream'); + var { fetching } = require_fetch(); + var { makeRequest } = require_request2(); + var { webidl } = require_webidl(); + var { EventSourceStream } = require_eventsource_stream(); + var { parseMIMEType } = require_data_url(); + var { createFastMessageEvent } = require_events(); + var { isNetworkError } = require_response(); + var { delay } = require_util8(); + var { kEnumerableProperty } = require_util(); + var { environmentSettingsObject } = require_util2(); + var experimentalWarned = false; + var defaultReconnectionTime = 3e3; + var CONNECTING = 0; + var OPEN = 1; + var CLOSED = 2; + var ANONYMOUS = 'anonymous'; + var USE_CREDENTIALS = 'use-credentials'; + var EventSource = class _EventSource extends EventTarget { + #events = { + open: null, + error: null, + message: null + }; + #url = null; + #withCredentials = false; + #readyState = CONNECTING; + #request = null; + #controller = null; + #dispatcher; + /** + * @type {import('./eventsource-stream').eventSourceSettings} + */ + #state; + /** + * Creates a new EventSource object. + * @param {string} url + * @param {EventSourceInit} [eventSourceInitDict] + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface + */ + constructor(url, eventSourceInitDict = {}) { + super(); + webidl.util.markAsUncloneable(this); + const prefix = 'EventSource constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning('EventSource is experimental, expect them to change at any time.', { + code: 'UNDICI-ES' + }); + } + url = webidl.converters.USVString(url, prefix, 'url'); + eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict'); + this.#dispatcher = eventSourceInitDict.dispatcher; + this.#state = { + lastEventId: '', + reconnectionTime: defaultReconnectionTime + }; + const settings = environmentSettingsObject; + let urlRecord; + try { + urlRecord = new URL(url, settings.settingsObject.baseUrl); + this.#state.origin = urlRecord.origin; + } catch (e) { + throw new DOMException(e, 'SyntaxError'); + } + this.#url = urlRecord.href; + let corsAttributeState = ANONYMOUS; + if (eventSourceInitDict.withCredentials) { + corsAttributeState = USE_CREDENTIALS; + this.#withCredentials = true; + } + const initRequest = { + redirect: 'follow', + keepalive: true, + // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes + mode: 'cors', + credentials: corsAttributeState === 'anonymous' ? 'same-origin' : 'omit', + referrer: 'no-referrer' + }; + initRequest.client = environmentSettingsObject.settingsObject; + initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]; + initRequest.cache = 'no-store'; + initRequest.initiator = 'other'; + initRequest.urlList = [new URL(this.#url)]; + this.#request = makeRequest(initRequest); + this.#connect(); } - get wasClean() { - webidl.brandCheck(this, _CloseEvent); - return this.#eventInit.wasClean; + /** + * Returns the state of this EventSource object's connection. It can have the + * values described below. + * @returns {0|1|2} + * @readonly + */ + get readyState() { + return this.#readyState; } - get code() { - webidl.brandCheck(this, _CloseEvent); - return this.#eventInit.code; + /** + * Returns the URL providing the event stream. + * @readonly + * @returns {string} + */ + get url() { + return this.#url; } - get reason() { - webidl.brandCheck(this, _CloseEvent); - return this.#eventInit.reason; + /** + * Returns a boolean indicating whether the EventSource object was + * instantiated with CORS credentials set (true), or not (false, the default). + */ + get withCredentials() { + return this.#withCredentials; + } + #connect() { + if (this.#readyState === CLOSED) return; + this.#readyState = CONNECTING; + const fetchParams = { + request: this.#request, + dispatcher: this.#dispatcher + }; + const processEventSourceEndOfBody = response => { + if (isNetworkError(response)) { + this.dispatchEvent(new Event('error')); + this.close(); + } + this.#reconnect(); + }; + fetchParams.processResponseEndOfBody = processEventSourceEndOfBody; + fetchParams.processResponse = response => { + if (isNetworkError(response)) { + if (response.aborted) { + this.close(); + this.dispatchEvent(new Event('error')); + return; + } else { + this.#reconnect(); + return; + } + } + const contentType = response.headersList.get('content-type', true); + const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'; + const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'; + if (response.status !== 200 || contentTypeValid === false) { + this.close(); + this.dispatchEvent(new Event('error')); + return; + } + this.#readyState = OPEN; + this.dispatchEvent(new Event('open')); + this.#state.origin = response.urlList[response.urlList.length - 1].origin; + const eventSourceStream = new EventSourceStream({ + eventSourceSettings: this.#state, + push: event => { + this.dispatchEvent(createFastMessageEvent(event.type, event.options)); + } + }); + pipeline(response.body.stream, eventSourceStream, error => { + if (error?.aborted === false) { + this.close(); + this.dispatchEvent(new Event('error')); + } + }); + }; + this.#controller = fetching(fetchParams); } - }; - var ErrorEvent = class _ErrorEvent extends Event { - #eventInit; - constructor(type, eventInitDict) { - webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }); - super(type, eventInitDict); - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); - this.#eventInit = eventInitDict; + /** + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model + * @returns {Promise} + */ + async #reconnect() { + if (this.#readyState === CLOSED) return; + this.#readyState = CONNECTING; + this.dispatchEvent(new Event('error')); + await delay(this.#state.reconnectionTime); + if (this.#readyState !== CONNECTING) return; + if (this.#state.lastEventId.length) { + this.#request.headersList.set('last-event-id', this.#state.lastEventId, true); + } + this.#connect(); } - get message() { - webidl.brandCheck(this, _ErrorEvent); - return this.#eventInit.message; + /** + * Closes the connection, if any, and sets the readyState attribute to + * CLOSED. + */ + close() { + webidl.brandCheck(this, _EventSource); + if (this.#readyState === CLOSED) return; + this.#readyState = CLOSED; + this.#controller.abort(); + this.#request = null; } - get filename() { - webidl.brandCheck(this, _ErrorEvent); - return this.#eventInit.filename; + get onopen() { + return this.#events.open; } - get lineno() { - webidl.brandCheck(this, _ErrorEvent); - return this.#eventInit.lineno; + set onopen(fn) { + if (this.#events.open) { + this.removeEventListener('open', this.#events.open); + } + if (typeof fn === 'function') { + this.#events.open = fn; + this.addEventListener('open', fn); + } else { + this.#events.open = null; + } } - get colno() { - webidl.brandCheck(this, _ErrorEvent); - return this.#eventInit.colno; + get onmessage() { + return this.#events.message; } - get error() { - webidl.brandCheck(this, _ErrorEvent); - return this.#eventInit.error; + set onmessage(fn) { + if (this.#events.message) { + this.removeEventListener('message', this.#events.message); + } + if (typeof fn === 'function') { + this.#events.message = fn; + this.addEventListener('message', fn); + } else { + this.#events.message = null; + } } - }; - Object.defineProperties(MessageEvent.prototype, { - [Symbol.toStringTag]: { - value: 'MessageEvent', - configurable: true - }, - data: kEnumerableProperty, - origin: kEnumerableProperty, - lastEventId: kEnumerableProperty, - source: kEnumerableProperty, - ports: kEnumerableProperty, - initMessageEvent: kEnumerableProperty - }); - Object.defineProperties(CloseEvent.prototype, { - [Symbol.toStringTag]: { - value: 'CloseEvent', - configurable: true - }, - reason: kEnumerableProperty, - code: kEnumerableProperty, - wasClean: kEnumerableProperty - }); - Object.defineProperties(ErrorEvent.prototype, { - [Symbol.toStringTag]: { - value: 'ErrorEvent', - configurable: true - }, - message: kEnumerableProperty, - filename: kEnumerableProperty, - lineno: kEnumerableProperty, - colno: kEnumerableProperty, - error: kEnumerableProperty - }); - webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); - webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.MessagePort); - var eventInit = [ - { - key: 'bubbles', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'cancelable', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'composed', - converter: webidl.converters.boolean, - defaultValue: false + get onerror() { + return this.#events.error; } - ]; - webidl.converters.MessageEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'data', - converter: webidl.converters.any, - defaultValue: null - }, - { - key: 'origin', - converter: webidl.converters.USVString, - defaultValue: '' - }, - { - key: 'lastEventId', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'source', - // Node doesn't implement WindowProxy or ServiceWorker, so the only - // valid value for source is a MessagePort. - converter: webidl.nullableConverter(webidl.converters.MessagePort), - defaultValue: null - }, - { - key: 'ports', - converter: webidl.converters['sequence'], - get defaultValue() { - return []; + set onerror(fn) { + if (this.#events.error) { + this.removeEventListener('error', this.#events.error); + } + if (typeof fn === 'function') { + this.#events.error = fn; + this.addEventListener('error', fn); + } else { + this.#events.error = null; } } - ]); - webidl.converters.CloseEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'wasClean', - converter: webidl.converters.boolean, - defaultValue: false + }; + var constantsPropertyDescriptors = { + CONNECTING: { + __proto__: null, + configurable: false, + enumerable: true, + value: CONNECTING, + writable: false }, - { - key: 'code', - converter: webidl.converters['unsigned short'], - defaultValue: 0 + OPEN: { + __proto__: null, + configurable: false, + enumerable: true, + value: OPEN, + writable: false }, - { - key: 'reason', - converter: webidl.converters.USVString, - defaultValue: '' + CLOSED: { + __proto__: null, + configurable: false, + enumerable: true, + value: CLOSED, + writable: false } - ]); - webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'message', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'filename', - converter: webidl.converters.USVString, - defaultValue: '' - }, - { - key: 'lineno', - converter: webidl.converters['unsigned long'], - defaultValue: 0 - }, + }; + Object.defineProperties(EventSource, constantsPropertyDescriptors); + Object.defineProperties(EventSource.prototype, constantsPropertyDescriptors); + Object.defineProperties(EventSource.prototype, { + close: kEnumerableProperty, + onerror: kEnumerableProperty, + onmessage: kEnumerableProperty, + onopen: kEnumerableProperty, + readyState: kEnumerableProperty, + url: kEnumerableProperty, + withCredentials: kEnumerableProperty + }); + webidl.converters.EventSourceInitDict = webidl.dictionaryConverter([ { - key: 'colno', - converter: webidl.converters['unsigned long'], - defaultValue: 0 + key: 'withCredentials', + converter: webidl.converters.boolean, + defaultValue: () => false }, { - key: 'error', + key: 'dispatcher', + // undici only converter: webidl.converters.any } ]); module2.exports = { - MessageEvent, - CloseEvent, - ErrorEvent + EventSource, + defaultReconnectionTime }; } }); -// node_modules/undici/lib/websocket/util.js -var require_util7 = __commonJS({ - 'node_modules/undici/lib/websocket/util.js'(exports2, module2) { +// node_modules/undici/index.js +var require_undici = __commonJS({ + 'node_modules/undici/index.js'(exports2, module2) { 'use strict'; - var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); - var { states, opcodes } = require_constants5(); - var { MessageEvent, ErrorEvent } = require_events(); - function isEstablished(ws) { - return ws[kReadyState] === states.OPEN; - } - function isClosing(ws) { - return ws[kReadyState] === states.CLOSING; - } - function isClosed(ws) { - return ws[kReadyState] === states.CLOSED; - } - function fireEvent(e, target, eventConstructor = Event, eventInitDict) { - const event = new eventConstructor(e, eventInitDict); - target.dispatchEvent(event); - } - function websocketMessageReceived(ws, type, data) { - if (ws[kReadyState] !== states.OPEN) { - return; - } - let dataForEvent; - if (type === opcodes.TEXT) { - try { - dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data); - } catch { - failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.'); - return; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var ProxyAgent = require_proxy_agent(); + var EnvHttpProxyAgent = require_env_http_proxy_agent(); + var RetryAgent = require_retry_agent(); + var errors = require_errors(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var RetryHandler = require_retry_handler(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_decorator_handler(); + var RedirectHandler = require_redirect_handler(); + var createRedirectInterceptor = require_redirect_interceptor(); + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.Agent = Agent; + module2.exports.ProxyAgent = ProxyAgent; + module2.exports.EnvHttpProxyAgent = EnvHttpProxyAgent; + module2.exports.RetryAgent = RetryAgent; + module2.exports.RetryHandler = RetryHandler; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.createRedirectInterceptor = createRedirectInterceptor; + module2.exports.interceptors = { + redirect: require_redirect(), + retry: require_retry(), + dump: require_dump(), + dns: require_dns() + }; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + module2.exports.util = { + parseHeaders: util.parseHeaders, + headerNameToString: util.headerNameToString + }; + function makeDispatcher(fn) { + return (url, opts, handler2) => { + if (typeof opts === 'function') { + handler2 = opts; + opts = null; } - } else if (type === opcodes.BINARY) { - if (ws[kBinaryType] === 'blob') { - dataForEvent = new Blob([data]); + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url'); + } + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path'); + } + let path = opts.path; + if (!opts.path.startsWith('/')) { + path = `/${path}`; + } + url = new URL(util.parseOrigin(url).origin + path); } else { - dataForEvent = new Uint8Array(data).buffer; + if (!opts) { + opts = typeof url === 'object' ? url : {}; + } + url = util.parseURL(url); } - } - fireEvent('message', ws, MessageEvent, { - origin: ws[kWebSocketURL].origin, - data: dataForEvent - }); + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?'); + } + return fn.call( + dispatcher, + { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, + handler2 + ); + }; } - function isValidSubprotocol(protocol) { - if (protocol.length === 0) { - return false; - } - for (const char of protocol) { - const code = char.charCodeAt(0); - if ( - code < 33 || - code > 126 || - char === '(' || - char === ')' || - char === '<' || - char === '>' || - char === '@' || - char === ',' || - char === ';' || - char === ':' || - char === '\\' || - char === '"' || - char === '/' || - char === '[' || - char === ']' || - char === '?' || - char === '=' || - char === '{' || - char === '}' || - code === 32 || // SP - code === 9 - ) { - return false; + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + var fetchImpl = require_fetch().fetch; + module2.exports.fetch = async function fetch(init, options = void 0) { + try { + return await fetchImpl(init, options); + } catch (err) { + if (err && typeof err === 'object') { + Error.captureStackTrace(err); } + throw err; } - return true; + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + module2.exports.File = globalThis.File ?? require('node:buffer').File; + module2.exports.FileReader = require_filereader().FileReader; + var { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + var { CacheStorage } = require_cachestorage(); + var { kConstruct } = require_symbols4(); + module2.exports.caches = new CacheStorage(kConstruct); + var { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + var { parseMIMEType, serializeAMimeType } = require_data_url(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + var { CloseEvent, ErrorEvent, MessageEvent } = require_events(); + module2.exports.WebSocket = require_websocket().WebSocket; + module2.exports.CloseEvent = CloseEvent; + module2.exports.ErrorEvent = ErrorEvent; + module2.exports.MessageEvent = MessageEvent; + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.mockErrors = mockErrors; + var { EventSource } = require_eventsource(); + module2.exports.EventSource = EventSource; + } +}); + +// node_modules/@actions/http-client/lib/index.js +var require_lib = __commonJS({ + 'node_modules/@actions/http-client/lib/index.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.HttpClient = + exports2.HttpClientResponse = + exports2.HttpClientError = + exports2.MediaTypes = + exports2.Headers = + exports2.HttpCodes = + void 0; + exports2.getProxyUrl = getProxyUrl; + exports2.isHttps = isHttps; + var http = __importStar(require('http')); + var https = __importStar(require('https')); + var pm = __importStar(require_proxy()); + var tunnel = __importStar(require_tunnel2()); + var undici_1 = require_undici(); + var HttpCodes; + (function (HttpCodes2) { + HttpCodes2[(HttpCodes2['OK'] = 200)] = 'OK'; + HttpCodes2[(HttpCodes2['MultipleChoices'] = 300)] = 'MultipleChoices'; + HttpCodes2[(HttpCodes2['MovedPermanently'] = 301)] = 'MovedPermanently'; + HttpCodes2[(HttpCodes2['ResourceMoved'] = 302)] = 'ResourceMoved'; + HttpCodes2[(HttpCodes2['SeeOther'] = 303)] = 'SeeOther'; + HttpCodes2[(HttpCodes2['NotModified'] = 304)] = 'NotModified'; + HttpCodes2[(HttpCodes2['UseProxy'] = 305)] = 'UseProxy'; + HttpCodes2[(HttpCodes2['SwitchProxy'] = 306)] = 'SwitchProxy'; + HttpCodes2[(HttpCodes2['TemporaryRedirect'] = 307)] = 'TemporaryRedirect'; + HttpCodes2[(HttpCodes2['PermanentRedirect'] = 308)] = 'PermanentRedirect'; + HttpCodes2[(HttpCodes2['BadRequest'] = 400)] = 'BadRequest'; + HttpCodes2[(HttpCodes2['Unauthorized'] = 401)] = 'Unauthorized'; + HttpCodes2[(HttpCodes2['PaymentRequired'] = 402)] = 'PaymentRequired'; + HttpCodes2[(HttpCodes2['Forbidden'] = 403)] = 'Forbidden'; + HttpCodes2[(HttpCodes2['NotFound'] = 404)] = 'NotFound'; + HttpCodes2[(HttpCodes2['MethodNotAllowed'] = 405)] = 'MethodNotAllowed'; + HttpCodes2[(HttpCodes2['NotAcceptable'] = 406)] = 'NotAcceptable'; + HttpCodes2[(HttpCodes2['ProxyAuthenticationRequired'] = 407)] = 'ProxyAuthenticationRequired'; + HttpCodes2[(HttpCodes2['RequestTimeout'] = 408)] = 'RequestTimeout'; + HttpCodes2[(HttpCodes2['Conflict'] = 409)] = 'Conflict'; + HttpCodes2[(HttpCodes2['Gone'] = 410)] = 'Gone'; + HttpCodes2[(HttpCodes2['TooManyRequests'] = 429)] = 'TooManyRequests'; + HttpCodes2[(HttpCodes2['InternalServerError'] = 500)] = 'InternalServerError'; + HttpCodes2[(HttpCodes2['NotImplemented'] = 501)] = 'NotImplemented'; + HttpCodes2[(HttpCodes2['BadGateway'] = 502)] = 'BadGateway'; + HttpCodes2[(HttpCodes2['ServiceUnavailable'] = 503)] = 'ServiceUnavailable'; + HttpCodes2[(HttpCodes2['GatewayTimeout'] = 504)] = 'GatewayTimeout'; + })(HttpCodes || (exports2.HttpCodes = HttpCodes = {})); + var Headers; + (function (Headers2) { + Headers2['Accept'] = 'accept'; + Headers2['ContentType'] = 'content-type'; + })(Headers || (exports2.Headers = Headers = {})); + var MediaTypes; + (function (MediaTypes2) { + MediaTypes2['ApplicationJson'] = 'application/json'; + })(MediaTypes || (exports2.MediaTypes = MediaTypes = {})); + function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; } - function isValidStatusCode(code) { - if (code >= 1e3 && code < 1015) { - return ( - code !== 1004 && // reserved - code !== 1005 && // "MUST NOT be set as a status code" - code !== 1006 - ); + var HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect + ]; + var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; + var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; + var ExponentialBackoffCeiling = 10; + var ExponentialBackoffTimeSlice = 5; + var HttpClientError = class _HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, _HttpClientError.prototype); } - return code >= 3e3 && code <= 4999; - } - function failWebsocketConnection(ws, reason) { - const { [kController]: controller, [kResponse]: response } = ws; - controller.abort(); - if (response?.socket && !response.socket.destroyed) { - response.socket.destroy(); + }; + exports2.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; } - if (reason) { - fireEvent('error', ws, ErrorEvent, { - error: new Error(reason) + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => + __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', chunk => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + }) + ); }); } - } - module2.exports = { - isEstablished, - isClosing, - isClosed, - fireEvent, - isValidSubprotocol, - isValidStatusCode, - failWebsocketConnection, - websocketMessageReceived - }; - } -}); - -// node_modules/undici/lib/websocket/connection.js -var require_connection = __commonJS({ - 'node_modules/undici/lib/websocket/connection.js'(exports2, module2) { - 'use strict'; - var diagnosticsChannel = require('diagnostics_channel'); - var { uid, states } = require_constants5(); - var { kReadyState, kSentClose, kByteParser, kReceivedClose } = require_symbols5(); - var { fireEvent, failWebsocketConnection } = require_util7(); - var { CloseEvent } = require_events(); - var { makeRequest } = require_request2(); - var { fetching } = require_fetch(); - var { Headers } = require_headers(); - var { getGlobalDispatcher } = require_global2(); - var { kHeadersList } = require_symbols(); - var channels = {}; - channels.open = diagnosticsChannel.channel('undici:websocket:open'); - channels.close = diagnosticsChannel.channel('undici:websocket:close'); - channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error'); - var crypto4; - try { - crypto4 = require('crypto'); - } catch {} - function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { - const requestURL = url; - requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'; - const request = makeRequest({ - urlList: [requestURL], - serviceWorkers: 'none', - referrer: 'no-referrer', - mode: 'websocket', - credentials: 'include', - cache: 'no-store', - redirect: 'error' - }); - if (options.headers) { - const headersList = new Headers(options.headers)[kHeadersList]; - request.headersList = headersList; - } - const keyValue = crypto4.randomBytes(16).toString('base64'); - request.headersList.append('sec-websocket-key', keyValue); - request.headersList.append('sec-websocket-version', '13'); - for (const protocol of protocols) { - request.headersList.append('sec-websocket-protocol', protocol); + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => + __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', chunk => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + }) + ); + }); } - const permessageDeflate = ''; - const controller = fetching({ - request, - useParallelQueue: true, - dispatcher: options.dispatcher ?? getGlobalDispatcher(), - processResponse(response) { - if (response.type === 'error' || response.status !== 101) { - failWebsocketConnection(ws, 'Received network error or non-101 status code.'); - return; - } - if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { - failWebsocketConnection(ws, 'Server did not respond with sent protocols.'); - return; + }; + exports2.HttpClientResponse = HttpClientResponse; + function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; + } + var HttpClient = class { + constructor(userAgent2, handlers, requestOptions) { + 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(userAgent2); + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; } - if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { - failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); - return; + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; } - if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { - failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); - return; + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; } - const secWSAccept = response.headersList.get('Sec-WebSocket-Accept'); - const digest = crypto4 - .createHash('sha1') - .update(keyValue + uid) - .digest('base64'); - if (secWSAccept !== digest) { - failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.'); - return; + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); } - const secExtension = response.headersList.get('Sec-WebSocket-Extensions'); - if (secExtension !== null && secExtension !== permessageDeflate) { - failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.'); - return; + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; } - const secProtocol = response.headersList.get('Sec-WebSocket-Protocol'); - if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { - failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.'); - return; + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; } - response.socket.on('data', onSocketData); - response.socket.on('close', onSocketClose); - response.socket.on('error', onSocketError); - if (channels.open.hasSubscribers) { - channels.open.publish({ - address: response.socket.address(), - protocol: secProtocol, - extensions: secExtension - }); + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; } - onEstablish(response); } - }); - return controller; - } - function onSocketData(chunk) { - if (!this.ws[kByteParser].write(chunk)) { - this.pause(); } - } - function onSocketClose() { - const { ws } = this; - const wasClean = ws[kSentClose] && ws[kReceivedClose]; - let code = 1005; - let reason = ''; - const result = ws[kByteParser].closingInfo; - if (result) { - code = result.code ?? 1005; - reason = result.reason; - } else if (!ws[kSentClose]) { - code = 1006; + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); } - ws[kReadyState] = states.CLOSED; - fireEvent('close', ws, CloseEvent, { - wasClean, - code, - reason - }); - if (channels.close.hasSubscribers) { - channels.close.publish({ - websocket: ws, - code, - reason + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); }); } - } - function onSocketError(error) { - const { ws } = this; - ws[kReadyState] = states.CLOSING; - if (channels.socketError.hasSubscribers) { - channels.socketError.publish(error); + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); } - this.destroy(); - } - module2.exports = { - establishWebSocketConnection - }; - } -}); - -// node_modules/undici/lib/websocket/frame.js -var require_frame = __commonJS({ - 'node_modules/undici/lib/websocket/frame.js'(exports2, module2) { - 'use strict'; - var { maxUnsigned16Bit } = require_constants5(); - var crypto4; - try { - crypto4 = require('crypto'); - } catch {} - var WebsocketFrameSend = class { /** - * @param {Buffer|undefined} data + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise */ - constructor(data) { - this.frameData = data; - this.maskKey = crypto4.randomBytes(4); + getJson(requestUrl_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); } - createFrame(opcode) { - const bodyLength = this.frameData?.byteLength ?? 0; - let payloadLength = bodyLength; - let offset = 6; - if (bodyLength > maxUnsigned16Bit) { - offset += 8; - payloadLength = 127; - } else if (bodyLength > 125) { - offset += 2; - payloadLength = 126; - } - const buffer = Buffer.allocUnsafe(bodyLength + offset); - buffer[0] = buffer[1] = 0; - buffer[0] |= 128; - buffer[0] = (buffer[0] & 240) + opcode; - buffer[offset - 4] = this.maskKey[0]; - buffer[offset - 3] = this.maskKey[1]; - buffer[offset - 2] = this.maskKey[2]; - buffer[offset - 1] = this.maskKey[3]; - buffer[1] = payloadLength; - if (payloadLength === 126) { - buffer.writeUInt16BE(bodyLength, 2); - } else if (payloadLength === 127) { - buffer[2] = buffer[3] = 0; - buffer.writeUIntBE(bodyLength, 4, 6); - } - buffer[1] |= 128; - for (let i = 0; i < bodyLength; i++) { - buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; - } - return buffer; + postJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader( + additionalHeaders, + MediaTypes.ApplicationJson + ); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); } - }; - module2.exports = { - WebsocketFrameSend - }; - } -}); - -// node_modules/undici/lib/websocket/receiver.js -var require_receiver = __commonJS({ - 'node_modules/undici/lib/websocket/receiver.js'(exports2, module2) { - 'use strict'; - var { Writable } = require('stream'); - var diagnosticsChannel = require('diagnostics_channel'); - var { parserStates, opcodes, states, emptyBuffer } = require_constants5(); - var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); - var { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require_util7(); - var { WebsocketFrameSend } = require_frame(); - var channels = {}; - channels.ping = diagnosticsChannel.channel('undici:websocket:ping'); - channels.pong = diagnosticsChannel.channel('undici:websocket:pong'); - var ByteParser = class extends Writable { - #buffers = []; - #byteOffset = 0; - #state = parserStates.INFO; - #info = {}; - #fragments = []; - constructor(ws) { - super(); - this.ws = ws; + putJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader( + additionalHeaders, + MediaTypes.ApplicationJson + ); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); } - /** - * @param {Buffer} chunk - * @param {() => void} callback - */ - _write(chunk, _, callback) { - this.#buffers.push(chunk); - this.#byteOffset += chunk.length; - this.run(callback); + patchJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( + additionalHeaders, + Headers.Accept, + MediaTypes.ApplicationJson + ); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader( + additionalHeaders, + MediaTypes.ApplicationJson + ); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); } /** - * Runs whenever a new chunk is received. - * Callback is called whenever there are no more chunks buffering, - * or not enough bytes are buffered to parse. + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch */ - run(callback) { - while (true) { - if (this.#state === parserStates.INFO) { - if (this.#byteOffset < 2) { - return callback(); - } - const buffer = this.consume(2); - this.#info.fin = (buffer[0] & 128) !== 0; - this.#info.opcode = buffer[0] & 15; - this.#info.originalOpcode ??= this.#info.opcode; - this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION; - if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { - failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.'); - return; - } - const payloadLength = buffer[1] & 127; - if (payloadLength <= 125) { - this.#info.payloadLength = payloadLength; - this.#state = parserStates.READ_DATA; - } else if (payloadLength === 126) { - this.#state = parserStates.PAYLOADLENGTH_16; - } else if (payloadLength === 127) { - this.#state = parserStates.PAYLOADLENGTH_64; - } - if (this.#info.fragmented && payloadLength > 125) { - failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.'); - return; - } else if ( - (this.#info.opcode === opcodes.PING || this.#info.opcode === opcodes.PONG || this.#info.opcode === opcodes.CLOSE) && - payloadLength > 125 - ) { - failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.'); - return; - } else if (this.#info.opcode === opcodes.CLOSE) { - if (payloadLength === 1) { - failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.'); - return; - } - const body2 = this.consume(payloadLength); - this.#info.closeInfo = this.parseCloseBody(false, body2); - if (!this.ws[kSentClose]) { - const body3 = Buffer.allocUnsafe(2); - body3.writeUInt16BE(this.#info.closeInfo.code, 0); - const closeFrame = new WebsocketFrameSend(body3); - this.ws[kResponse].socket.write(closeFrame.createFrame(opcodes.CLOSE), err => { - if (!err) { - this.ws[kSentClose] = true; - } - }); - } - this.ws[kReadyState] = states.CLOSING; - this.ws[kReceivedClose] = true; - this.end(); - return; - } else if (this.#info.opcode === opcodes.PING) { - const body2 = this.consume(payloadLength); - if (!this.ws[kReceivedClose]) { - const frame = new WebsocketFrameSend(body2); - this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); - if (channels.ping.hasSubscribers) { - channels.ping.publish({ - payload: body2 - }); + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler2 of this.handlers) { + if (handler2.canHandleAuthentication(response)) { + authenticationHandler = handler2; + break; } } - this.#state = parserStates.INFO; - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - return; - } - } else if (this.#info.opcode === opcodes.PONG) { - const body2 = this.consume(payloadLength); - if (channels.pong.hasSubscribers) { - channels.pong.publish({ - payload: body2 - }); - } - if (this.#byteOffset > 0) { - continue; + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); } else { - callback(); - return; + return response; } } - } else if (this.#state === parserStates.PAYLOADLENGTH_16) { - if (this.#byteOffset < 2) { - return callback(); - } - const buffer = this.consume(2); - this.#info.payloadLength = buffer.readUInt16BE(0); - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.PAYLOADLENGTH_64) { - if (this.#byteOffset < 8) { - return callback(); - } - const buffer = this.consume(8); - const upper = buffer.readUInt32BE(0); - if (upper > 2 ** 31 - 1) { - failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.'); - return; - } - const lower = buffer.readUInt32BE(4); - this.#info.payloadLength = (upper << 8) + lower; - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.READ_DATA) { - if (this.#byteOffset < this.#info.payloadLength) { - return callback(); - } else if (this.#byteOffset >= this.#info.payloadLength) { - const body2 = this.consume(this.#info.payloadLength); - this.#fragments.push(body2); - if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { - const fullMessage = Buffer.concat(this.#fragments); - websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage); - this.#info = {}; - this.#fragments.length = 0; + let redirectsRemaining = this._maxRedirects; + while ( + response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0 + ) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + break; } - this.#state = parserStates.INFO; - } - } - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - break; - } - } - } - /** - * Take n bytes from the buffered Buffers - * @param {number} n - * @returns {Buffer|null} - */ - consume(n) { - if (n > this.#byteOffset) { - return null; - } else if (n === 0) { - return emptyBuffer; - } - if (this.#buffers[0].length === n) { - this.#byteOffset -= this.#buffers[0].length; - return this.#buffers.shift(); - } - const buffer = Buffer.allocUnsafe(n); - let offset = 0; - while (offset !== n) { - const next = this.#buffers[0]; - const { length } = next; - if (length + offset === n) { - buffer.set(this.#buffers.shift(), offset); - break; - } else if (length + offset > n) { - buffer.set(next.subarray(0, n - offset), offset); - this.#buffers[0] = next.subarray(n - offset); - break; - } else { - buffer.set(this.#buffers.shift(), offset); - offset += next.length; - } - } - this.#byteOffset -= n; - return buffer; - } - parseCloseBody(onlyCode, data) { - let code; - if (data.length >= 2) { - code = data.readUInt16BE(0); - } - if (onlyCode) { - if (!isValidStatusCode(code)) { - return null; - } - return { code }; - } - let reason = data.subarray(2); - if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { - reason = reason.subarray(3); - } - if (code !== void 0 && !isValidStatusCode(code)) { - return null; - } - try { - reason = new TextDecoder('utf-8', { fatal: true }).decode(reason); - } catch { - return null; - } - return { code, reason }; - } - get closingInfo() { - return this.#info.closeInfo; + const parsedRedirectUrl = new URL(redirectUrl); + if ( + parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.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 response.readBody(); + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); } - }; - module2.exports = { - ByteParser - }; - } -}); - -// node_modules/undici/lib/websocket/websocket.js -var require_websocket = __commonJS({ - 'node_modules/undici/lib/websocket/websocket.js'(exports2, module2) { - 'use strict'; - var { webidl } = require_webidl(); - var { DOMException: DOMException2 } = require_constants2(); - var { URLSerializer } = require_dataURL(); - var { getGlobalOrigin } = require_global(); - var { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require_constants5(); - var { kWebSocketURL, kReadyState, kController, kBinaryType, kResponse, kSentClose, kByteParser } = require_symbols5(); - var { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require_util7(); - var { establishWebSocketConnection } = require_connection(); - var { WebsocketFrameSend } = require_frame(); - var { ByteParser } = require_receiver(); - var { kEnumerableProperty, isBlobLike } = require_util(); - var { getGlobalDispatcher } = require_global2(); - var { types } = require('util'); - var experimentalWarned = false; - var WebSocket = class _WebSocket extends EventTarget { - #events = { - open: null, - error: null, - close: null, - message: null - }; - #bufferedAmount = 0; - #protocol = ''; - #extensions = ''; /** - * @param {string} url - * @param {string|string[]} protocols + * Needs to be called if keepAlive is set to true in request options. */ - constructor(url, protocols = []) { - super(); - webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }); - if (!experimentalWarned) { - experimentalWarned = true; - process.emitWarning('WebSockets are experimental, expect them to change at any time.', { - code: 'UNDICI-WS' - }); - } - const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols); - url = webidl.converters.USVString(url); - protocols = options.protocols; - const baseURL = getGlobalOrigin(); - let urlRecord; - try { - urlRecord = new URL(url, baseURL); - } catch (e) { - throw new DOMException2(e, 'SyntaxError'); - } - if (urlRecord.protocol === 'http:') { - urlRecord.protocol = 'ws:'; - } else if (urlRecord.protocol === 'https:') { - urlRecord.protocol = 'wss:'; - } - if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { - throw new DOMException2(`Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, 'SyntaxError'); - } - if (urlRecord.hash || urlRecord.href.endsWith('#')) { - throw new DOMException2('Got fragment', 'SyntaxError'); - } - if (typeof protocols === 'string') { - protocols = [protocols]; - } - if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { - throw new DOMException2('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); - } - if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { - throw new DOMException2('Invalid Sec-WebSocket-Protocol value', 'SyntaxError'); + dispose() { + if (this._agent) { + this._agent.destroy(); } - this[kWebSocketURL] = new URL(urlRecord.href); - this[kController] = establishWebSocketConnection( - urlRecord, - protocols, - this, - response => this.#onConnectionEstablished(response), - options - ); - this[kReadyState] = _WebSocket.CONNECTING; - this[kBinaryType] = 'blob'; + this._disposed = true; } /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-close - * @param {number|undefined} code - * @param {string|undefined} reason + * Raw request. + * @param info + * @param data */ - close(code = void 0, reason = void 0) { - webidl.brandCheck(this, _WebSocket); - if (code !== void 0) { - code = webidl.converters['unsigned short'](code, { clamp: true }); - } - if (reason !== void 0) { - reason = webidl.converters.USVString(reason); - } - if (code !== void 0) { - if (code !== 1e3 && (code < 3e3 || code > 4999)) { - throw new DOMException2('invalid code', 'InvalidAccessError'); - } - } - let reasonByteLength = 0; - if (reason !== void 0) { - reasonByteLength = Buffer.byteLength(reason); - if (reasonByteLength > 123) { - throw new DOMException2(`Reason must be less than 123 bytes; received ${reasonByteLength}`, 'SyntaxError'); - } - } - if (this[kReadyState] === _WebSocket.CLOSING || this[kReadyState] === _WebSocket.CLOSED) { - } else if (!isEstablished(this)) { - failWebsocketConnection(this, 'Connection was closed before it was established.'); - this[kReadyState] = _WebSocket.CLOSING; - } else if (!isClosing(this)) { - const frame = new WebsocketFrameSend(); - if (code !== void 0 && reason === void 0) { - frame.frameData = Buffer.allocUnsafe(2); - frame.frameData.writeUInt16BE(code, 0); - } else if (code !== void 0 && reason !== void 0) { - frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); - frame.frameData.writeUInt16BE(code, 0); - frame.frameData.write(reason, 2, 'utf-8'); - } else { - frame.frameData = emptyBuffer; - } - const socket = this[kResponse].socket; - socket.write(frame.createFrame(opcodes.CLOSE), err => { - if (!err) { - this[kSentClose] = true; + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error('Unknown error')); + } else { + resolve(res); + } } + this.requestRawWithCallback(info, data, callbackForResult); }); - this[kReadyState] = states.CLOSING; - } else { - this[kReadyState] = _WebSocket.CLOSING; - } + }); } /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-send - * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + * Raw request with callback. + * @param info + * @param data + * @param onResult */ - send(data) { - webidl.brandCheck(this, _WebSocket); - webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }); - data = webidl.converters.WebSocketSendData(data); - if (this[kReadyState] === _WebSocket.CONNECTING) { - throw new DOMException2('Sent before connected.', 'InvalidStateError'); - } - if (!isEstablished(this) || isClosing(this)) { - return; - } - const socket = this[kResponse].socket; + requestRawWithCallback(info, data, onResult) { if (typeof data === 'string') { - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.TEXT); - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (types.isArrayBuffer(data)) { - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.BINARY); - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (ArrayBuffer.isView(data)) { - const ab = Buffer.from(data, data.byteOffset, data.byteLength); - const frame = new WebsocketFrameSend(ab); - const buffer = frame.createFrame(opcodes.BINARY); - this.#bufferedAmount += ab.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= ab.byteLength; - }); - } else if (isBlobLike(data)) { - const frame = new WebsocketFrameSend(); - data.arrayBuffer().then(ab => { - const value = Buffer.from(ab); - frame.frameData = value; - const buffer = frame.createFrame(opcodes.BINARY); - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - }); - } - } - get readyState() { - webidl.brandCheck(this, _WebSocket); - return this[kReadyState]; - } - get bufferedAmount() { - webidl.brandCheck(this, _WebSocket); - return this.#bufferedAmount; - } - get url() { - webidl.brandCheck(this, _WebSocket); - return URLSerializer(this[kWebSocketURL]); - } - get extensions() { - webidl.brandCheck(this, _WebSocket); - return this.#extensions; - } - get protocol() { - webidl.brandCheck(this, _WebSocket); - return this.#protocol; - } - get onopen() { - webidl.brandCheck(this, _WebSocket); - return this.#events.open; - } - set onopen(fn) { - webidl.brandCheck(this, _WebSocket); - if (this.#events.open) { - this.removeEventListener('open', this.#events.open); - } - if (typeof fn === 'function') { - this.#events.open = fn; - this.addEventListener('open', fn); - } else { - this.#events.open = null; - } - } - get onerror() { - webidl.brandCheck(this, _WebSocket); - return this.#events.error; - } - set onerror(fn) { - webidl.brandCheck(this, _WebSocket); - if (this.#events.error) { - this.removeEventListener('error', this.#events.error); + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); } - if (typeof fn === 'function') { - this.#events.error = fn; - this.addEventListener('error', fn); - } else { - this.#events.error = null; + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } } - } - get onclose() { - webidl.brandCheck(this, _WebSocket); - return this.#events.close; - } - set onclose(fn) { - webidl.brandCheck(this, _WebSocket); - if (this.#events.close) { - this.removeEventListener('close', this.#events.close); + const req = info.httpModule.request(info.options, msg => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); } - if (typeof fn === 'function') { - this.#events.close = fn; - this.addEventListener('close', fn); + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); } else { - this.#events.close = null; + req.end(); } } - get onmessage() { - webidl.brandCheck(this, _WebSocket); - return this.#events.message; + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); } - set onmessage(fn) { - webidl.brandCheck(this, _WebSocket); - if (this.#events.message) { - this.removeEventListener('message', this.#events.message); - } - if (typeof fn === 'function') { - this.#events.message = fn; - this.addEventListener('message', fn); - } else { - this.#events.message = null; + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); } - get binaryType() { - webidl.brandCheck(this, _WebSocket); - return this[kBinaryType]; + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; + info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + if (this.handlers) { + for (const handler2 of this.handlers) { + handler2.prepareRequest(info.options); + } + } + return info; } - set binaryType(type) { - webidl.brandCheck(this, _WebSocket); - if (type !== 'blob' && type !== 'arraybuffer') { - this[kBinaryType] = 'blob'; - } else { - this[kBinaryType] = type; + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys2(this.requestOptions.headers), lowercaseKeys2(headers || {})); } + return lowercaseKeys2(headers || {}); } /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * Gets an existing header value or returns a default. + * Handles converting number header values to strings since HTTP headers must be strings. + * Note: This returns string | string[] since some headers can have multiple values. + * For headers that must always be a single string (like Content-Type), use the + * specialized _getExistingOrDefaultContentTypeHeader method instead. */ - #onConnectionEstablished(response) { - this[kResponse] = response; - const parser = new ByteParser(this); - parser.on('drain', function onParserDrain() { - this.ws[kResponse].socket.resume(); - }); - response.socket.ws = this; - this[kByteParser] = parser; - this[kReadyState] = states.OPEN; - const extensions = response.headersList.get('sec-websocket-extensions'); - if (extensions !== null) { - this.#extensions = extensions; + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys2(this.requestOptions.headers)[header]; + if (headerValue) { + clientHeader = typeof headerValue === 'number' ? headerValue.toString() : headerValue; + } } - const protocol = response.headersList.get('sec-websocket-protocol'); - if (protocol !== null) { - this.#protocol = protocol; + const additionalValue = additionalHeaders[header]; + if (additionalValue !== void 0) { + return typeof additionalValue === 'number' ? additionalValue.toString() : additionalValue; } - fireEvent('open', this); - } - }; - WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; - WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; - WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; - WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; - Object.defineProperties(WebSocket.prototype, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - url: kEnumerableProperty, - readyState: kEnumerableProperty, - bufferedAmount: kEnumerableProperty, - onopen: kEnumerableProperty, - onerror: kEnumerableProperty, - onclose: kEnumerableProperty, - close: kEnumerableProperty, - onmessage: kEnumerableProperty, - binaryType: kEnumerableProperty, - send: kEnumerableProperty, - extensions: kEnumerableProperty, - protocol: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'WebSocket', - writable: false, - enumerable: false, - configurable: true - } - }); - Object.defineProperties(WebSocket, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors - }); - webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.DOMString); - webidl.converters['DOMString or sequence'] = function (V) { - if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { - return webidl.converters['sequence'](V); + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; } - return webidl.converters.DOMString(V); - }; - webidl.converters.WebSocketInit = webidl.dictionaryConverter([ - { - key: 'protocols', - converter: webidl.converters['DOMString or sequence'], - get defaultValue() { - return []; + /** + * Specialized version of _getExistingOrDefaultHeader for Content-Type header. + * Always returns a single string (not an array) since Content-Type should be a single value. + * Converts arrays to comma-separated strings and numbers to strings to ensure type safety. + * This was split from _getExistingOrDefaultHeader to provide stricter typing for callers + * that assign the result to places expecting a string (e.g., additionalHeaders[Headers.ContentType]). + */ + _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys2(this.requestOptions.headers)[Headers.ContentType]; + if (headerValue) { + if (typeof headerValue === 'number') { + clientHeader = String(headerValue); + } else if (Array.isArray(headerValue)) { + clientHeader = headerValue.join(', '); + } else { + clientHeader = headerValue; + } + } } - }, - { - key: 'dispatcher', - converter: V => V, - get defaultValue() { - return getGlobalDispatcher(); + const additionalValue = additionalHeaders[Headers.ContentType]; + if (additionalValue !== void 0) { + if (typeof additionalValue === 'number') { + return String(additionalValue); + } else if (Array.isArray(additionalValue)) { + return additionalValue.join(', '); + } else { + return additionalValue; + } } - }, - { - key: 'headers', - converter: webidl.nullableConverter(webidl.converters.HeadersInit) + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; } - ]); - webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { - if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { - return webidl.converters.WebSocketInit(V); + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign( + Object.assign( + {}, + (proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + } + ), + { host: proxyUrl.hostname, port: proxyUrl.port } + ) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (!agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; } - return { protocols: webidl.converters['DOMString or sequence'](V) }; - }; - webidl.converters.WebSocketSendData = function (V) { - if (webidl.util.Type(V) === 'Object') { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; } - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V); + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent( + Object.assign( + { uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, + (proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}` + } + ) + ); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _getUserAgentWithOrchestrationId(userAgent2) { + const baseUserAgent = userAgent2 || 'actions/http-client'; + const orchId = process.env['ACTIONS_ORCHESTRATION_ID']; + if (orchId) { + const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, '_'); + return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`; } + return baseUserAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => + __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } catch (err) {} + if (statusCode > 299) { + let msg; + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + msg = contents; + } else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve(response); + } + }) + ); + }); } - return webidl.converters.USVString(V); - }; - module2.exports = { - WebSocket }; + exports2.HttpClient = HttpClient; + var lowercaseKeys2 = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); } }); -// node_modules/undici/index.js -var require_undici = __commonJS({ - 'node_modules/undici/index.js'(exports2, module2) { +// node_modules/@actions/http-client/lib/auth.js +var require_auth = __commonJS({ + 'node_modules/@actions/http-client/lib/auth.js'(exports2) { 'use strict'; - var Client = require_client(); - var Dispatcher = require_dispatcher(); - var errors = require_errors(); - var Pool = require_pool(); - var BalancedPool = require_balanced_pool(); - var Agent = require_agent(); - var util = require_util(); - var { InvalidArgumentError } = errors; - var api = require_api(); - var buildConnector = require_connect(); - var MockClient = require_mock_client(); - var MockAgent = require_mock_agent(); - var MockPool = require_mock_pool(); - var mockErrors = require_mock_errors(); - var ProxyAgent = require_proxy_agent(); - var RetryHandler = require_RetryHandler(); - var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); - var DecoratorHandler = require_DecoratorHandler(); - var RedirectHandler = require_RedirectHandler(); - var createRedirectInterceptor = require_redirectInterceptor(); - var hasCrypto; - try { - require('crypto'); - hasCrypto = true; - } catch { - hasCrypto = false; - } - Object.assign(Dispatcher.prototype, api); - module2.exports.Dispatcher = Dispatcher; - module2.exports.Client = Client; - module2.exports.Pool = Pool; - module2.exports.BalancedPool = BalancedPool; - module2.exports.Agent = Agent; - module2.exports.ProxyAgent = ProxyAgent; - module2.exports.RetryHandler = RetryHandler; - module2.exports.DecoratorHandler = DecoratorHandler; - module2.exports.RedirectHandler = RedirectHandler; - module2.exports.createRedirectInterceptor = createRedirectInterceptor; - module2.exports.buildConnector = buildConnector; - module2.exports.errors = errors; - function makeDispatcher(fn) { - return (url, opts, handler) => { - if (typeof opts === 'function') { - handler = opts; - opts = null; - } - if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { - throw new InvalidArgumentError('invalid url'); - } - if (opts != null && typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts'); + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); } - if (opts && opts.path != null) { - if (typeof opts.path !== 'string') { - throw new InvalidArgumentError('invalid opts.path'); + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } } - let path = opts.path; - if (!opts.path.startsWith('/')) { - path = `/${path}`; + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } } - url = new URL(util.parseOrigin(url).origin + path); - } else { - if (!opts) { - opts = typeof url === 'object' ? url : {}; + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - url = util.parseURL(url); - } - const { agent, dispatcher = getGlobalDispatcher() } = opts; - if (agent) { - throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?'); - } - return fn.call( - dispatcher, - { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? 'PUT' : 'GET') - }, - handler - ); + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); }; - } - module2.exports.setGlobalDispatcher = setGlobalDispatcher; - module2.exports.getGlobalDispatcher = getGlobalDispatcher; - if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { - let fetchImpl = null; - module2.exports.fetch = async function fetch(resource) { - if (!fetchImpl) { - fetchImpl = require_fetch().fetch; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.PersonalAccessTokenCredentialHandler = exports2.BearerCredentialHandler = exports2.BasicCredentialHandler = void 0; + var BasicCredentialHandler = class { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } - try { - return await fetchImpl(...arguments); - } catch (err) { - if (typeof err === 'object') { - Error.captureStackTrace(err, this); - } - throw err; + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.BasicCredentialHandler = BasicCredentialHandler; + var BearerCredentialHandler = class { + constructor(token2) { + this.token = token2; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } - }; - module2.exports.Headers = require_headers().Headers; - module2.exports.Response = require_response().Response; - module2.exports.Request = require_request2().Request; - module2.exports.FormData = require_formdata().FormData; - module2.exports.File = require_file().File; - module2.exports.FileReader = require_filereader().FileReader; - const { setGlobalOrigin, getGlobalOrigin } = require_global(); - module2.exports.setGlobalOrigin = setGlobalOrigin; - module2.exports.getGlobalOrigin = getGlobalOrigin; - const { CacheStorage } = require_cachestorage(); - const { kConstruct } = require_symbols4(); - module2.exports.caches = new CacheStorage(kConstruct); - } - if (util.nodeMajor >= 16) { - const { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); - module2.exports.deleteCookie = deleteCookie; - module2.exports.getCookies = getCookies; - module2.exports.getSetCookies = getSetCookies; - module2.exports.setCookie = setCookie; - const { parseMIMEType, serializeAMimeType } = require_dataURL(); - module2.exports.parseMIMEType = parseMIMEType; - module2.exports.serializeAMimeType = serializeAMimeType; - } - if (util.nodeMajor >= 18 && hasCrypto) { - const { WebSocket } = require_websocket(); - module2.exports.WebSocket = WebSocket; - } - module2.exports.request = makeDispatcher(api.request); - module2.exports.stream = makeDispatcher(api.stream); - module2.exports.pipeline = makeDispatcher(api.pipeline); - module2.exports.connect = makeDispatcher(api.connect); - module2.exports.upgrade = makeDispatcher(api.upgrade); - module2.exports.MockClient = MockClient; - module2.exports.MockPool = MockPool; - module2.exports.MockAgent = MockAgent; - module2.exports.mockErrors = mockErrors; - } -}); - -// node_modules/@actions/http-client/lib/index.js -var require_lib = __commonJS({ - 'node_modules/@actions/http-client/lib/index.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - } - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.BearerCredentialHandler = BearerCredentialHandler; + var PersonalAccessTokenCredentialHandler = class { + constructor(token2) { + this.token = token2; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } - __setModuleDefault(result, mod); - return result; - }; + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } + }; + exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + } +}); + +// node_modules/@actions/core/lib/oidc-utils.js +var require_oidc_utils = __commonJS({ + 'node_modules/@actions/core/lib/oidc-utils.js'(exports2) { + 'use strict'; var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -17603,629 +19580,514 @@ var require_lib = __commonJS({ }); }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.HttpClient = - exports2.isHttps = - exports2.HttpClientResponse = - exports2.HttpClientError = - exports2.getProxyUrl = - exports2.MediaTypes = - exports2.Headers = - exports2.HttpCodes = - void 0; - var http = __importStar(require('http')); - var https = __importStar(require('https')); - var pm = __importStar(require_proxy()); - var tunnel = __importStar(require_tunnel2()); - var undici_1 = require_undici(); - var HttpCodes; - (function (HttpCodes2) { - HttpCodes2[(HttpCodes2['OK'] = 200)] = 'OK'; - HttpCodes2[(HttpCodes2['MultipleChoices'] = 300)] = 'MultipleChoices'; - HttpCodes2[(HttpCodes2['MovedPermanently'] = 301)] = 'MovedPermanently'; - HttpCodes2[(HttpCodes2['ResourceMoved'] = 302)] = 'ResourceMoved'; - HttpCodes2[(HttpCodes2['SeeOther'] = 303)] = 'SeeOther'; - HttpCodes2[(HttpCodes2['NotModified'] = 304)] = 'NotModified'; - HttpCodes2[(HttpCodes2['UseProxy'] = 305)] = 'UseProxy'; - HttpCodes2[(HttpCodes2['SwitchProxy'] = 306)] = 'SwitchProxy'; - HttpCodes2[(HttpCodes2['TemporaryRedirect'] = 307)] = 'TemporaryRedirect'; - HttpCodes2[(HttpCodes2['PermanentRedirect'] = 308)] = 'PermanentRedirect'; - HttpCodes2[(HttpCodes2['BadRequest'] = 400)] = 'BadRequest'; - HttpCodes2[(HttpCodes2['Unauthorized'] = 401)] = 'Unauthorized'; - HttpCodes2[(HttpCodes2['PaymentRequired'] = 402)] = 'PaymentRequired'; - HttpCodes2[(HttpCodes2['Forbidden'] = 403)] = 'Forbidden'; - HttpCodes2[(HttpCodes2['NotFound'] = 404)] = 'NotFound'; - HttpCodes2[(HttpCodes2['MethodNotAllowed'] = 405)] = 'MethodNotAllowed'; - HttpCodes2[(HttpCodes2['NotAcceptable'] = 406)] = 'NotAcceptable'; - HttpCodes2[(HttpCodes2['ProxyAuthenticationRequired'] = 407)] = 'ProxyAuthenticationRequired'; - HttpCodes2[(HttpCodes2['RequestTimeout'] = 408)] = 'RequestTimeout'; - HttpCodes2[(HttpCodes2['Conflict'] = 409)] = 'Conflict'; - HttpCodes2[(HttpCodes2['Gone'] = 410)] = 'Gone'; - HttpCodes2[(HttpCodes2['TooManyRequests'] = 429)] = 'TooManyRequests'; - HttpCodes2[(HttpCodes2['InternalServerError'] = 500)] = 'InternalServerError'; - HttpCodes2[(HttpCodes2['NotImplemented'] = 501)] = 'NotImplemented'; - HttpCodes2[(HttpCodes2['BadGateway'] = 502)] = 'BadGateway'; - HttpCodes2[(HttpCodes2['ServiceUnavailable'] = 503)] = 'ServiceUnavailable'; - HttpCodes2[(HttpCodes2['GatewayTimeout'] = 504)] = 'GatewayTimeout'; - })(HttpCodes || (exports2.HttpCodes = HttpCodes = {})); - var Headers; - (function (Headers2) { - Headers2['Accept'] = 'accept'; - Headers2['ContentType'] = 'content-type'; - })(Headers || (exports2.Headers = Headers = {})); - var MediaTypes; - (function (MediaTypes2) { - MediaTypes2['ApplicationJson'] = 'application/json'; - })(MediaTypes || (exports2.MediaTypes = MediaTypes = {})); - function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; - } - exports2.getProxyUrl = getProxyUrl; - var HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect - ]; - var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; - var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; - var ExponentialBackoffCeiling = 10; - var ExponentialBackoffTimeSlice = 5; - var HttpClientError = class _HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, _HttpClientError.prototype); + exports2.OidcClient = void 0; + var http_client_1 = require_lib(); + var auth_1 = require_auth(); + var core_1 = require_core(); + var OidcClient = class _OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient( + 'actions/oidc-client', + [new auth_1.BearerCredentialHandler(_OidcClient.getRequestToken())], + requestOptions + ); } - }; - exports2.HttpClientError = HttpClientError; - var HttpClientResponse = class { - constructor(message) { - this.message = message; + static getRequestToken() { + const token2 = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token2) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token2; } - readBody() { + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => - __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on('data', chunk => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - }) - ); + var _a; + const httpclient = _OidcClient.createHttpClient(); + const res = yield httpclient.getJson(id_token_url).catch(error => { + throw new Error(`Failed to get ID Token. + + Error Code : ${error.statusCode} + + Error Message: ${error.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; }); } - readBodyBuffer() { + static getIDToken(audience) { return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => - __awaiter(this, void 0, void 0, function* () { - const chunks = []; - this.message.on('data', chunk => { - chunks.push(chunk); - }); - this.message.on('end', () => { - resolve(Buffer.concat(chunks)); - }); - }) - ); + try { + let id_token_url = _OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + (0, core_1.debug)(`ID token url is ${id_token_url}`); + const id_token = yield _OidcClient.getCall(id_token_url); + (0, core_1.setSecret)(id_token); + return id_token; + } catch (error) { + throw new Error(`Error message: ${error.message}`); + } }); } }; - exports2.HttpClientResponse = HttpClientResponse; - function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; - } - exports2.isHttps = isHttps; - var HttpClient = class { - constructor(userAgent, handlers, requestOptions) { - 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 = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; + exports2.OidcClient = OidcClient; + } +}); + +// node_modules/@actions/core/lib/summary.js +var require_summary = __commonJS({ + 'node_modules/@actions/core/lib/summary.js'(exports2) { + 'use strict'; + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.summary = exports2.markdownSummary = exports2.SUMMARY_DOCS_URL = exports2.SUMMARY_ENV_VAR = void 0; + var os_1 = require('os'); + var fs_1 = require('fs'); + var { access, appendFile, writeFile } = fs_1.promises; + exports2.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; + exports2.SUMMARY_DOCS_URL = + 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; + var Summary = class { + constructor() { + this._buffer = ''; } - post(requestUrl, data, additionalHeaders) { + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error( + `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` + ); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } catch (_a) { + throw new Error( + `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.` + ); + } + this._filePath = pathFromEnv; + return this._filePath; }); } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag2, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag2}${htmlAttrs}>`; + } + return `<${tag2}${htmlAttrs}>${content}`; } - put(requestUrl, data, additionalHeaders) { + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); }); } - head(requestUrl, additionalHeaders) { + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + return this.emptyBuffer().write({ overwrite: true }); }); } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; } /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + isEmptyBuffer() { + return this._buffer.length === 0; } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); } /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } else { - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while ( - response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0 - ) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if ( - parsedUrl.protocol === 'https:' && - parsedUrl.protocol !== parsedRedirectUrl.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 response.readBody(); - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); + addCodeBlock(code, lang) { + const attrs = Object.assign({}, lang && { lang }); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); } /** - * Needs to be called if keepAlive is set to true in request options. + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; + addList(items, ordered = false) { + const tag2 = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag2, listItems); + return this.addRaw(element).addEOL(); } /** - * Raw request. - * @param info - * @param data + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - reject(new Error('Unknown error')); - } else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag2 = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); + return this.wrap(tag2, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); } /** - * Raw request with callback. - * @param info - * @param data - * @param onResult + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, msg => { - const res = new HttpClientResponse(msg); - handleResult(void 0, res); - }); - let socket; - req.on('socket', sock => { - socket = sock; - }); - req.setTimeout(this._socketTimeout || 3 * 6e4, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } else { - req.end(); - } + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); } /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - getAgentDispatcher(serverUrl) { - const parsedUrl = new URL(serverUrl); - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (!useProxy) { - return; - } - return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; - info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (!useProxy) { - agent = this._agent; - } - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign( - Object.assign( - {}, - (proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - } - ), - { host: proxyUrl.hostname, port: proxyUrl.port } - ) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - if (!agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - if (usingSsl && this._ignoreSslError) { - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); } - _getProxyAgentDispatcher(parsedUrl, proxyUrl) { - let proxyAgent; - if (this._keepAlive) { - proxyAgent = this._proxyAgentDispatcher; - } - if (proxyAgent) { - return proxyAgent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - proxyAgent = new undici_1.ProxyAgent( - Object.assign( - { uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, - (proxyUrl.username || proxyUrl.password) && { - token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}` - } - ) - ); - this._proxyAgentDispatcher = proxyAgent; - if (usingSsl && this._ignoreSslError) { - proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { - rejectUnauthorized: false - }); - } - return proxyAgent; + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag2 = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag2) ? tag2 : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => - __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - function dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } catch (err) {} - if (statusCode > 299) { - let msg; - if (obj && obj.message) { - msg = obj.message; - } else if (contents && contents.length > 0) { - msg = contents; - } else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } else { - resolve(response); - } - }) - ); - }); + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, cite && { cite }); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); } }; - exports2.HttpClient = HttpClient; - var lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + var _summary = new Summary(); + exports2.markdownSummary = _summary; + exports2.summary = _summary; } }); -// node_modules/@actions/http-client/lib/auth.js -var require_auth = __commonJS({ - 'node_modules/@actions/http-client/lib/auth.js'(exports2) { +// node_modules/@actions/core/lib/path-utils.js +var require_path_utils = __commonJS({ + 'node_modules/@actions/core/lib/path-utils.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.toPosixPath = toPosixPath; + exports2.toWin32Path = toWin32Path; + exports2.toPlatformPath = toPlatformPath; + var path = __importStar(require('path')); + function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); + } + function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); + } + function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); + } + } +}); + +// node_modules/@actions/io/lib/io-util.js +var require_io_util = __commonJS({ + 'node_modules/@actions/io/lib/io-util.js'(exports2) { 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -18253,87 +20115,226 @@ var require_auth = __commonJS({ } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.PersonalAccessTokenCredentialHandler = exports2.BearerCredentialHandler = exports2.BasicCredentialHandler = void 0; - var BasicCredentialHandler = class { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } - }; - exports2.BasicCredentialHandler = BasicCredentialHandler; - var BearerCredentialHandler = class { - constructor(token2) { - this.token = token2; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); - } - }; - exports2.BearerCredentialHandler = BearerCredentialHandler; - var PersonalAccessTokenCredentialHandler = class { - constructor(token2) { - this.token = token2; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); + }; + var _a; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.READONLY = + exports2.UV_FS_O_EXLOCK = + exports2.IS_WINDOWS = + exports2.unlink = + exports2.symlink = + exports2.stat = + exports2.rmdir = + exports2.rm = + exports2.rename = + exports2.readdir = + exports2.open = + exports2.mkdir = + exports2.lstat = + exports2.copyFile = + exports2.chmod = + void 0; + exports2.readlink = readlink; + exports2.exists = exists; + exports2.isDirectory = isDirectory; + exports2.isRooted = isRooted; + exports2.tryGetExecutablePath = tryGetExecutablePath; + exports2.getCmdPath = getCmdPath; + var fs2 = __importStar(require('fs')); + var path = __importStar(require('path')); + (_a = fs2.promises), + (exports2.chmod = _a.chmod), + (exports2.copyFile = _a.copyFile), + (exports2.lstat = _a.lstat), + (exports2.mkdir = _a.mkdir), + (exports2.open = _a.open), + (exports2.readdir = _a.readdir), + (exports2.rename = _a.rename), + (exports2.rm = _a.rm), + (exports2.rmdir = _a.rmdir), + (exports2.stat = _a.stat), + (exports2.symlink = _a.symlink), + (exports2.unlink = _a.unlink); + exports2.IS_WINDOWS = process.platform === 'win32'; + function readlink(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + const result = yield fs2.promises.readlink(fsPath); + if (exports2.IS_WINDOWS && !result.endsWith('\\')) { + return `${result}\\`; } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + return result; + }); + } + exports2.UV_FS_O_EXLOCK = 268435456; + exports2.READONLY = fs2.constants.O_RDONLY; + function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield (0, exports2.stat)(fsPath); + } catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); + } + function isDirectory(fsPath_1) { + return __awaiter(this, arguments, void 0, function* (fsPath, useStat = false) { + const stats = useStat ? yield (0, exports2.stat)(fsPath) : yield (0, exports2.lstat)(fsPath); + return stats.isDirectory(); + }); + } + function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; + if (exports2.IS_WINDOWS) { + return p.startsWith('\\') || /^[A-Z]:/i.test(p); } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + return p.startsWith('/'); + } + function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = void 0; + try { + stats = yield (0, exports2.stat)(filePath); + } catch (err) { + if (err.code !== 'ENOENT') { + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports2.IS_WINDOWS) { + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = void 0; + try { + stats = yield (0, exports2.stat)(filePath); + } catch (err) { + if (err.code !== 'ENOENT') { + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports2.IS_WINDOWS) { + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield (0, exports2.readdir)(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } catch (err) { + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); + } + function normalizeSeparators(p) { + p = p || ''; + if (exports2.IS_WINDOWS) { + p = p.replace(/\//g, '\\'); + return p.replace(/\\\\+/g, '\\'); } - }; - exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + return p.replace(/\/\/+/g, '/'); + } + function isUnixExecutable(stats) { + return ( + (stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && process.getgid !== void 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && process.getuid !== void 0 && stats.uid === process.getuid()) + ); + } + function getCmdPath() { + var _a2; + return (_a2 = process.env['COMSPEC']) !== null && _a2 !== void 0 ? _a2 : `cmd.exe`; + } } }); -// node_modules/@actions/core/lib/oidc-utils.js -var require_oidc_utils = __commonJS({ - 'node_modules/@actions/core/lib/oidc-utils.js'(exports2) { +// node_modules/@actions/io/lib/io.js +var require_io = __commonJS({ + 'node_modules/@actions/io/lib/io.js'(exports2) { 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -18366,80 +20367,257 @@ var require_oidc_utils = __commonJS({ }); }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.OidcClient = void 0; - var http_client_1 = require_lib(); - var auth_1 = require_auth(); - var core_1 = require_core(); - var OidcClient = class _OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient( - 'actions/oidc-client', - [new auth_1.BearerCredentialHandler(_OidcClient.getRequestToken())], - requestOptions - ); - } - static getRequestToken() { - const token2 = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token2) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + exports2.cp = cp; + exports2.mv = mv; + exports2.rmRF = rmRF; + exports2.mkdirP = mkdirP; + exports2.which = which; + exports2.findInPath = findInPath; + var assert_1 = require('assert'); + var path = __importStar(require('path')); + var ioUtil = __importStar(require_io_util()); + function cp(source_1, dest_1) { + return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + if (destStat && destStat.isFile() && !force) { + return; } - return token2; - } - static getIDTokenUrl() { - const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; - if (!runtimeUrl) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + const newDest = destStat && destStat.isDirectory() && copySourceDirectory ? path.join(dest, path.basename(source)) : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = _OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch(error => { - throw new Error(`Failed to get ID Token. - - Error Code : ${error.statusCode} - - Error Message: ${error.result.message}`); + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } else { + yield cpDirRecursive(source, newDest, 0, force); + } + } else { + if (path.relative(source, newDest) === '') { + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); + } + function mv(source_1, dest_1) { + return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); + } + function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); + } catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); + } + function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + (0, assert_1.ok)(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); + } + function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error( + `Unable to locate executable file: ${tool}. 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: ${tool}. 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 id_token; - }); - } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); + } + function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + if (tool.includes(path.sep)) { + return []; + } + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); + } + function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null ? true : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; + } + function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + if (currentDepth >= 255) return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } else { + yield copyFile(srcFile, destFile, force); + } + } + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); + } + function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { try { - let id_token_url = _OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } catch (e) { + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield _OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } catch (error) { - throw new Error(`Error message: ${error.message}`); } - }); - } - }; - exports2.OidcClient = OidcClient; - } -}); - -// node_modules/@actions/core/lib/summary.js -var require_summary = __commonJS({ - 'node_modules/@actions/core/lib/summary.js'(exports2) { - 'use strict'; + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); + } + } +}); + +// node_modules/@actions/exec/lib/toolrunner.js +var require_toolrunner = __commonJS({ + 'node_modules/@actions/exec/lib/toolrunner.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -18472,294 +20650,610 @@ var require_summary = __commonJS({ }); }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.summary = exports2.markdownSummary = exports2.SUMMARY_DOCS_URL = exports2.SUMMARY_ENV_VAR = void 0; - var os_1 = require('os'); - var fs_1 = require('fs'); - var { access, appendFile, writeFile } = fs_1.promises; - exports2.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; - exports2.SUMMARY_DOCS_URL = - 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; - var Summary = class { - constructor() { - this._buffer = ''; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error( - `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` - ); + exports2.ToolRunner = void 0; + exports2.argStringToArray = argStringToArray; + var os = __importStar(require('os')); + var events = __importStar(require('events')); + var child = __importStar(require('child_process')); + var path = __importStar(require('path')); + var io = __importStar(require_io()); + var ioUtil = __importStar(require_io_util()); + var timers_1 = require('timers'); + var IS_WINDOWS = process.platform === 'win32'; + var ToolRunner = class extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; + if (IS_WINDOWS) { + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } catch (_a) { - throw new Error( - `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.` - ); + } else { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag2, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag2}${htmlAttrs}>`; } - return `<${tag2}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ''; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); + return cmd; } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag2 = ordered ? 'ol' : 'ul'; - const listItems = items.map(item => this.wrap('li', item)).join(''); - const element = this.wrap(tag2, listItems); - return this.addRaw(element).addEOL(); + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } catch (err) { + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map(row => { - const cells = row - .map(cell => { - if (typeof cell === 'string') { - return this.wrap('td', cell); - } - const { header, data, colspan, rowspan } = cell; - const tag2 = header ? 'th' : 'td'; - const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); - return this.wrap(tag2, data, attrs); - }) - .join(''); - return this.wrap('tr', cells); - }) - .join(''); - const element = this.wrap('table', tableBody); - return this.addRaw(element).addEOL(); + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments ? a : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return this._endsWith(upperToolPath, '.CMD') || this._endsWith(upperToolPath, '.BAT'); + } + _windowsQuoteCmdArg(arg) { + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + if (!arg) { + return '""'; + } + const cmdSpecialChars = [ + ' ', + ' ', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + if (!needsQuotes) { + return arg; + } + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split('').reverse().join(''); } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); + _uvQuoteCmdArg(arg) { + if (!arg) { + return '""'; + } + if (!arg.includes(' ') && !arg.includes(' ') && !arg.includes('"')) { + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + return `"${arg}"`; + } + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split('').reverse().join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 1e4 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag2 = `h${level}`; - const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag2) ? tag2 : 'h1'; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; } /** - * Adds an HTML thematic break (
) to the summary buffer + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code * - * @returns {Summary} summary instance + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number */ - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); + exec() { + return __awaiter(this, void 0, void 0, function* () { + if (!ioUtil.isRooted(this.toolPath) && (this.toolPath.includes('/') || (IS_WINDOWS && this.toolPath.includes('\\')))) { + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => + __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', message => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', data => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, line => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', data => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && optionsNonNull.errStream && optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr ? optionsNonNull.errStream : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, line => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', err => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', code => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', code => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + }) + ); + }); } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); + }; + exports2.ToolRunner = ToolRunner; + function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); + if (arg.length > 0) { + args.push(arg.trim()); } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); + return args; + } + var ExecState = class _ExecState extends events.EventEmitter { + constructor(options, toolPath) { + 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 (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } else if (this.processExited) { + this.timeout = (0, timers_1.setTimeout)(_ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + let error; + if (this.processExited) { + if (this.processError) { + error = 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) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } else if (this.processStderr && this.options.failOnStdErr) { + error = 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', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / 1e3} seconds of the exit event from process '${ + state.toolPath + }'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); } }; - var _summary = new Summary(); - exports2.markdownSummary = _summary; - exports2.summary = _summary; } }); -// node_modules/@actions/core/lib/path-utils.js -var require_path_utils = __commonJS({ - 'node_modules/@actions/core/lib/path-utils.js'(exports2) { +// node_modules/@actions/exec/lib/exec.js +var require_exec = __commonJS({ + 'node_modules/@actions/exec/lib/exec.js'(exports2) { 'use strict'; var __createBinding = (exports2 && exports2.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } + : function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.exec = exec; + exports2.getExecOutput = getExecOutput; + var string_decoder_1 = require('string_decoder'); + var tr = __importStar(require_toolrunner()); + function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); + } + function getExecOutput(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + var _a, _b; + let stdout = ''; + let stderr = ''; + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = + (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 + ? void 0 + : _a.stdout; + const originalStdErrListener = + (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 + ? void 0 + : _b.stderr; + const stdErrListener = data => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = data => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { + stdout: stdOutListener, + stderr: stdErrListener + }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); + } + } +}); + +// node_modules/@actions/core/lib/platform.js +var require_platform = __commonJS({ + 'node_modules/@actions/core/lib/platform.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__createBinding) || + (Object.create + ? function (o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -18776,30 +21270,139 @@ var require_path_utils = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); + var __awaiter = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault = + (exports2 && exports2.__importDefault) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; + return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.toPlatformPath = exports2.toWin32Path = exports2.toPosixPath = void 0; - var path = __importStar(require('path')); - function toPosixPath(pth) { - return pth.replace(/[\\]/g, '/'); - } - exports2.toPosixPath = toPosixPath; - function toWin32Path(pth) { - return pth.replace(/[/]/g, '\\'); - } - exports2.toWin32Path = toWin32Path; - function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); + exports2.isLinux = exports2.isMacOS = exports2.isWindows = exports2.arch = exports2.platform = void 0; + exports2.getDetails = getDetails; + var os_1 = __importDefault(require('os')); + var exec = __importStar(require_exec()); + var getWindowsInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput( + 'powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', + void 0, + { + silent: true + } + ); + const { stdout: name } = yield exec.getExecOutput( + 'powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', + void 0, + { + silent: true + } + ); + return { + name: name.trim(), + version: version.trim() + }; + }); + var getMacOsInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', void 0, { + silent: true + }); + const version = + (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && + _b !== void 0 + ? _b + : ''; + const name = + (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 + ? _d + : ''; + return { + name, + version + }; + }); + var getLinuxInfo = () => + __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; + }); + exports2.platform = os_1.default.platform(); + exports2.arch = os_1.default.arch(); + exports2.isWindows = exports2.platform === 'win32'; + exports2.isMacOS = exports2.platform === 'darwin'; + exports2.isLinux = exports2.platform === 'linux'; + function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign( + Object.assign({}, yield exports2.isWindows ? getWindowsInfo() : exports2.isMacOS ? getMacOsInfo() : getLinuxInfo()), + { + platform: exports2.platform, + arch: exports2.arch, + isWindows: exports2.isWindows, + isMacOS: exports2.isMacOS, + isLinux: exports2.isLinux + } + ); + }); } - exports2.toPlatformPath = toPlatformPath; } }); @@ -18812,12 +21415,16 @@ var require_core = __commonJS({ (Object.create ? function (o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function () { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); } : function (o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -18834,15 +21441,27 @@ var require_core = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -18875,29 +21494,35 @@ var require_core = __commonJS({ }); }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getIDToken = - exports2.getState = - exports2.saveState = - exports2.group = - exports2.endGroup = - exports2.startGroup = - exports2.info = - exports2.notice = - exports2.warning = - exports2.error = - exports2.debug = - exports2.isDebug = - exports2.setFailed = - exports2.setCommandEcho = - exports2.setOutput = - exports2.getBooleanInput = - exports2.getMultilineInput = - exports2.getInput = - exports2.addPath = - exports2.setSecret = - exports2.exportVariable = + exports2.platform = + exports2.toPlatformPath = + exports2.toWin32Path = + exports2.toPosixPath = + exports2.markdownSummary = + exports2.summary = exports2.ExitCode = void 0; + exports2.exportVariable = exportVariable; + exports2.setSecret = setSecret; + exports2.addPath = addPath; + exports2.getInput = getInput; + exports2.getMultilineInput = getMultilineInput; + exports2.getBooleanInput = getBooleanInput; + exports2.setOutput = setOutput; + exports2.setCommandEcho = setCommandEcho; + exports2.setFailed = setFailed; + exports2.isDebug = isDebug; + exports2.debug = debug; + exports2.error = error; + exports2.warning = warning; + exports2.notice = notice; + exports2.info = info; + exports2.startGroup = startGroup; + exports2.endGroup = endGroup; + exports2.group = group; + exports2.saveState = saveState; + exports2.getState = getState; + exports2.getIDToken = getIDToken; var command_1 = require_command(); var file_command_1 = require_file_command(); var utils_1 = require_utils(); @@ -18908,31 +21533,28 @@ var require_core = __commonJS({ (function (ExitCode2) { ExitCode2[(ExitCode2['Success'] = 0)] = 'Success'; ExitCode2[(ExitCode2['Failure'] = 1)] = 'Failure'; - })((ExitCode = exports2.ExitCode || (exports2.ExitCode = {}))); + })(ExitCode || (exports2.ExitCode = ExitCode = {})); function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); + const convertedVal = (0, utils_1.toCommandValue)(val); process.env[name] = convertedVal; const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { - return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); } - command_1.issueCommand('set-env', { name }, convertedVal); + (0, command_1.issueCommand)('set-env', { name }, convertedVal); } - exports2.exportVariable = exportVariable; function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + (0, command_1.issueCommand)('add-mask', {}, secret); } - exports2.setSecret = setSecret; function addPath(inputPath) { const filePath = process.env['GITHUB_PATH'] || ''; if (filePath) { - file_command_1.issueFileCommand('PATH', inputPath); + (0, file_command_1.issueFileCommand)('PATH', inputPath); } else { - command_1.issueCommand('add-path', {}, inputPath); + (0, command_1.issueCommand)('add-path', {}, inputPath); } process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; } - exports2.addPath = addPath; function getInput(name, options) { const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; if (options && options.required && !val) { @@ -18943,7 +21565,6 @@ var require_core = __commonJS({ } return val.trim(); } - exports2.getInput = getInput; function getMultilineInput(name, options) { const inputs = getInput(name, options) .split('\n') @@ -18953,7 +21574,6 @@ var require_core = __commonJS({ } return inputs.map(input => input.trim()); } - exports2.getMultilineInput = getMultilineInput; function getBooleanInput(name, options) { const trueValue = ['true', 'True', 'TRUE']; const falseValue = ['false', 'False', 'FALSE']; @@ -18963,69 +21583,57 @@ var require_core = __commonJS({ throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } - exports2.getBooleanInput = getBooleanInput; function setOutput(name, value) { const filePath = process.env['GITHUB_OUTPUT'] || ''; if (filePath) { - return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); } process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); } - exports2.setOutput = setOutput; function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); + (0, command_1.issue)('echo', enabled ? 'on' : 'off'); } - exports2.setCommandEcho = setCommandEcho; function setFailed(message) { process.exitCode = ExitCode.Failure; error(message); } - exports2.setFailed = setFailed; function isDebug() { return process.env['RUNNER_DEBUG'] === '1'; } - exports2.isDebug = isDebug; function debug(message) { - command_1.issueCommand('debug', {}, message); + (0, command_1.issueCommand)('debug', {}, message); } - exports2.debug = debug; function error(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( 'error', - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports2.error = error; function warning(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( 'warning', - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports2.warning = warning; function notice(message, properties = {}) { - command_1.issueCommand( + (0, command_1.issueCommand)( 'notice', - utils_1.toCommandProperties(properties), + (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message ); } - exports2.notice = notice; function info(message) { process.stdout.write(message + os.EOL); } - exports2.info = info; function startGroup(name) { - command_1.issue('group', name); + (0, command_1.issue)('group', name); } - exports2.startGroup = startGroup; function endGroup() { - command_1.issue('endgroup'); + (0, command_1.issue)('endgroup'); } - exports2.endGroup = endGroup; function group(name, fn) { return __awaiter(this, void 0, void 0, function* () { startGroup(name); @@ -19038,25 +21646,21 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); return result; }); } - exports2.group = group; function saveState(name, value) { const filePath = process.env['GITHUB_STATE'] || ''; if (filePath) { - return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); } - command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); } - exports2.saveState = saveState; function getState(name) { return process.env[`STATE_${name}`] || ''; } - exports2.getState = getState; function getIDToken(aud) { return __awaiter(this, void 0, void 0, function* () { return yield oidc_utils_1.OidcClient.getIDToken(aud); }); } - exports2.getIDToken = getIDToken; var summary_1 = require_summary(); Object.defineProperty(exports2, 'summary', { enumerable: true, @@ -19090,6 +21694,7 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); return path_utils_1.toPlatformPath; } }); + exports2.platform = __importStar(require_platform()); } }); @@ -19123,6 +21728,7 @@ var require_context = __commonJS({ this.action = process.env.GITHUB_ACTION; this.actor = process.env.GITHUB_ACTOR; this.job = process.env.GITHUB_JOB; + this.runAttempt = parseInt(process.env.GITHUB_RUN_ATTEMPT, 10); this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; @@ -19186,15 +21792,27 @@ var require_utils3 = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = (exports2 && exports2.__awaiter) || function (thisArg, _arguments, P, generator) { @@ -19227,12 +21845,11 @@ var require_utils3 = __commonJS({ }); }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getApiBaseUrl = - exports2.getProxyFetch = - exports2.getProxyAgentDispatcher = - exports2.getProxyAgent = - exports2.getAuthString = - void 0; + exports2.getAuthString = getAuthString; + exports2.getProxyAgent = getProxyAgent; + exports2.getProxyAgentDispatcher = getProxyAgentDispatcher; + exports2.getProxyFetch = getProxyFetch; + exports2.getApiBaseUrl = getApiBaseUrl; var httpClient = __importStar(require_lib()); var undici_1 = require_undici(); function getAuthString(token2, options) { @@ -19243,17 +21860,14 @@ var require_utils3 = __commonJS({ } return typeof options.auth === 'string' ? options.auth : `token ${token2}`; } - exports2.getAuthString = getAuthString; function getProxyAgent(destinationUrl) { const hc = new httpClient.HttpClient(); return hc.getAgent(destinationUrl); } - exports2.getProxyAgent = getProxyAgent; function getProxyAgentDispatcher(destinationUrl) { const hc = new httpClient.HttpClient(); return hc.getAgentDispatcher(destinationUrl); } - exports2.getProxyAgentDispatcher = getProxyAgentDispatcher; function getProxyFetch(destinationUrl) { const httpDispatcher = getProxyAgentDispatcher(destinationUrl); const proxyFetch = (url, opts) => @@ -19262,208 +21876,458 @@ var require_utils3 = __commonJS({ }); return proxyFetch; } - exports2.getProxyFetch = getProxyFetch; function getApiBaseUrl() { return process.env['GITHUB_API_URL'] || 'https://api.github.com'; } - exports2.getApiBaseUrl = getApiBaseUrl; } }); -// node_modules/universal-user-agent/dist-node/index.js -var require_dist_node = __commonJS({ - 'node_modules/universal-user-agent/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function getUserAgent() { - if (typeof navigator === 'object' && 'userAgent' in navigator) { - return navigator.userAgent; - } - if (typeof process === 'object' && process.version !== void 0) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - return ''; - } - exports2.getUserAgent = getUserAgent; +// node_modules/universal-user-agent/index.js +function getUserAgent() { + if (typeof navigator === 'object' && 'userAgent' in navigator) { + return navigator.userAgent; + } + if (typeof process === 'object' && process.version !== void 0) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; } + return ''; +} +var init_universal_user_agent = __esm({ + 'node_modules/universal-user-agent/index.js'() {} }); // node_modules/before-after-hook/lib/register.js -var require_register = __commonJS({ - 'node_modules/before-after-hook/lib/register.js'(exports2, module2) { - module2.exports = register; - function register(state, name, method, options) { - if (typeof method !== 'function') { - throw new Error('method for before hook must be a function'); - } - if (!options) { - options = {}; - } - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name2) { - return register.bind(null, state, name2, callback, options); - }, method)(); - } - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce(function (method2, registered) { - return registered.hook.bind(null, method2, options); - }, method)(); - }); - } +function register(state, name, method, options) { + if (typeof method !== 'function') { + throw new Error('method for before hook must be a function'); + } + if (!options) { + options = {}; } + if (Array.isArray(name)) { + return name.reverse().reduce((callback, name2) => { + return register.bind(null, state, name2, callback, options); + }, method)(); + } + return Promise.resolve().then(() => { + if (!state.registry[name]) { + return method(options); + } + return state.registry[name].reduce((method2, registered) => { + return registered.hook.bind(null, method2, options); + }, method)(); + }); +} +var init_register = __esm({ + 'node_modules/before-after-hook/lib/register.js'() {} }); // node_modules/before-after-hook/lib/add.js -var require_add = __commonJS({ - 'node_modules/before-after-hook/lib/add.js'(exports2, module2) { - module2.exports = addHook; - function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - if (kind === 'before') { - hook = function (method, options) { - return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); - }; - } - if (kind === 'after') { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; - } - if (kind === 'error') { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; - } - state.registry[name].push({ - hook, - orig - }); - } +function addHook(state, kind, name, hook2) { + const orig = hook2; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === 'before') { + hook2 = (method, options) => { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === 'after') { + hook2 = (method, options) => { + let result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(result_ => { + result = result_; + return orig(result, options); + }) + .then(() => { + return result; + }); + }; + } + if (kind === 'error') { + hook2 = (method, options) => { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(error => { + return orig(error, options); + }); + }; } + state.registry[name].push({ + hook: hook2, + orig + }); +} +var init_add = __esm({ + 'node_modules/before-after-hook/lib/add.js'() {} }); // node_modules/before-after-hook/lib/remove.js -var require_remove = __commonJS({ - 'node_modules/before-after-hook/lib/remove.js'(exports2, module2) { - module2.exports = removeHook; - function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - if (index === -1) { - return; - } - state.registry[name].splice(index, 1); - } +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + const index = state.registry[name] + .map(registered => { + return registered.orig; + }) + .indexOf(method); + if (index === -1) { + return; } + state.registry[name].splice(index, 1); +} +var init_remove = __esm({ + 'node_modules/before-after-hook/lib/remove.js'() {} }); // node_modules/before-after-hook/index.js -var require_before_after_hook = __commonJS({ - 'node_modules/before-after-hook/index.js'(exports2, module2) { - var register = require_register(); - var addHook = require_add(); - var removeHook = require_remove(); - var bind = Function.bind; - var bindable = bind.bind(bind); - function bindApi(hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); +function bindApi(hook2, state, name) { + const removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); + hook2.api = { remove: removeHookRef }; + hook2.remove = removeHookRef; + ['before', 'error', 'after', 'wrap'].forEach(kind => { + const args = name ? [state, kind, name] : [state, kind]; + hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function Singular() { + const singularHookName = Symbol('Singular'); + const singularHookState = { + registry: {} + }; + const singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function Collection() { + const state = { + registry: {} + }; + const hook2 = register.bind(null, state); + bindApi(hook2, state); + return hook2; +} +var bind, bindable, before_after_hook_default; +var init_before_after_hook = __esm({ + 'node_modules/before-after-hook/index.js'() { + init_register(); + init_add(); + init_remove(); + bind = Function.bind; + bindable = bind.bind(bind); + before_after_hook_default = { Singular, Collection }; + } +}); + +// node_modules/@octokit/endpoint/dist-bundle/index.js +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} +function isPlainObject(value) { + if (typeof value !== 'object' || value === null) return false; + if (Object.prototype.toString.call(value) !== '[object Object]') return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); + else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); } - function HookSingular() { - var singularHookName = 'h'; - var singularHookState = { - registry: {} - }; - var singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; + }); + return result; +} +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; } - function HookCollection() { - var state = { - registry: {} - }; - var hook = register.bind(null, state); - bindApi(hook, state); - return hook; - } - var collectionHookDeprecationMessageDisplayed = false; - function Hook() { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn( - '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' - ); - collectionHookDeprecationMessageDisplayed = true; + } + return obj; +} +function merge(defaults, route, options) { + if (typeof route === 'string') { + let [method, url] = route.split(' '); + options = Object.assign(url ? { method, url } : { url: method }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + if (options.url === '/graphql') { + if (defaults && defaults.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews + .filter(preview => !mergedOptions.mediaType.previews.includes(preview)) + .concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map(preview => preview.replace(/-preview/, '')); + } + return mergedOptions; +} +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? '&' : '?'; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return ( + url + + separator + + names + .map(name => { + if (name === 'q') { + return 'q=' + parameters.q.split('+').map(encodeURIComponent).join('+'); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }) + .join('&') + ); +} +function removeNonChars(variableName) { + return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); +} +function omit(object, keysToOmit) { + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; +} +function encodeReserved(str) { + return str + .split(/(%[0-9A-Fa-f]{2})/g) + .map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']'); + } + return part; + }) + .join(''); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + '=' + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ';' || operator === '&' || operator === '?'; +} +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + if (isDefined(value) && value !== '') { + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint' || typeof value === 'boolean') { + value = value.toString(); + if (modifier && modifier !== '*') { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : '')); + } else { + if (modifier === '*') { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : '')); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + '=' + tmp.join(',')); + } else if (tmp.length !== 0) { + result.push(tmp.join(',')); + } + } + } + } else { + if (operator === ';') { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); } - return HookCollection(); + } else if (value === '' && (operator === '&' || operator === '?')) { + result.push(encodeUnreserved(key) + '='); + } else if (value === '') { + result.push(''); } - Hook.Singular = HookSingular.bind(); - Hook.Collection = HookCollection.bind(); - module2.exports = Hook; - module2.exports.Hook = Hook; - module2.exports.Singular = Hook.Singular; - module2.exports.Collection = Hook.Collection; } -}); - -// node_modules/@octokit/endpoint/dist-node/index.js -var require_dist_node2 = __commonJS({ - 'node_modules/@octokit/endpoint/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context) { + var operators = ['+', '#', '.', '/', ';', '?', '&']; + template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ''; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); } - return to; - }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - endpoint: () => endpoint - }); - module2.exports = __toCommonJS2(dist_src_exports); - var import_universal_user_agent = require_dist_node(); - var VERSION = '9.0.6'; - var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; - var DEFAULTS = { + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== '+') { + var separator = ','; + if (operator === '?') { + separator = '&'; + } else if (operator !== '#') { + separator = operator; + } + return (values.length !== 0 ? operator : '') + values.join(separator); + } else { + return values.join(','); + } + } else { + return encodeReserved(literal); + } + }); + if (template === '/') { + return template; + } else { + return template.replace(/\/$/, ''); + } +} +function parse(options) { + let method = options.method.toUpperCase(); + let url = (options.url || '/').replace(/:([a-z]\w+)/g, '{$1}'); + let headers = Object.assign({}, options.headers); + let body2; + let parameters = omit(options, ['method', 'baseUrl', 'url', 'headers', 'request', 'mediaType']); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + const omittedParameters = Object.keys(options) + .filter(option => urlVariableNames.includes(option)) + .concat('baseUrl'); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept + .split(/,/) + .map(format => + format.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`) + ) + .join(','); + } + if (url.endsWith('/graphql')) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/(? { + const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; + return `application/vnd.github.${preview}-preview${format}`; + }) + .join(','); + } + } + } + if (['GET', 'HEAD'].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ('data' in remainingParameters) { + body2 = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body2 = remainingParameters; + } + } + } + if (!headers['content-type'] && typeof body2 !== 'undefined') { + headers['content-type'] = 'application/json; charset=utf-8'; + } + if (['PATCH', 'PUT'].includes(method) && typeof body2 === 'undefined') { + body2 = ''; + } + return Object.assign( + { method, url, headers }, + typeof body2 !== 'undefined' ? { body: body2 } : null, + options.request ? { request: options.request } : null + ); +} +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); +} +var VERSION, userAgent, DEFAULTS, urlVariableRegex, endpoint; +var init_dist_bundle = __esm({ + 'node_modules/@octokit/endpoint/dist-bundle/index.js'() { + init_universal_user_agent(); + VERSION = '0.0.0-development'; + userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; + DEFAULTS = { method: 'GET', baseUrl: 'https://api.github.com', headers: { @@ -19474,462 +22338,231 @@ var require_dist_node2 = __commonJS({ format: '' } }; - function lowercaseKeys(object) { - if (!object) { - return {}; + urlVariableRegex = /\{[^{}}]+\}/g; + endpoint = withDefaults(null, DEFAULTS); + } +}); + +// node_modules/fast-content-type-parse/index.js +var require_fast_content_type_parse = __commonJS({ + 'node_modules/fast-content-type-parse/index.js'(exports2, module2) { + 'use strict'; + var NullObject = function NullObject2() {}; + NullObject.prototype = /* @__PURE__ */ Object.create(null); + var paramRE = + /; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu; + var quotedPairRE = /\\([\v\u0020-\u00ff])/gu; + var mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u; + var defaultContentType = { type: '', parameters: new NullObject() }; + Object.freeze(defaultContentType.parameters); + Object.freeze(defaultContentType); + function parse2(header) { + if (typeof header !== 'string') { + throw new TypeError('argument header is required and must be a string'); + } + let index = header.indexOf(';'); + const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (mediaTypeRE.test(type) === false) { + throw new TypeError('invalid media type'); + } + const result = { + type: type.toLowerCase(), + parameters: new NullObject() + }; + if (index === -1) { + return result; } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); - } - function isPlainObject(value) { - if (typeof value !== 'object' || value === null) return false; - if (Object.prototype.toString.call(value) !== '[object Object]') return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return ( - typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); - else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); + let key; + let match; + let value; + paramRE.lastIndex = index; + while ((match = paramRE.exec(header))) { + if (match.index !== index) { + throw new TypeError('invalid parameter format'); } - }); - return result; - } - function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.slice(1, value.length - 1); + quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1')); } + result.parameters[key] = value; } - return obj; - } - function merge(defaults, route, options) { - if (typeof route === 'string') { - let [method, url] = route.split(' '); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === '/graphql') { - if (defaults && defaults.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter(preview => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map(preview => - preview.replace(/-preview/, '') - ); - } - return mergedOptions; - } - function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? '&' : '?'; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return ( - url + - separator + - names - .map(name => { - if (name === 'q') { - return 'q=' + parameters.q.split('+').map(encodeURIComponent).join('+'); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join('&') - ); - } - var urlVariableRegex = /\{[^{}}]+\}/g; - function removeNonChars(variableName) { - return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); - } - function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } + if (index !== header.length) { + throw new TypeError('invalid parameter format'); } return result; } - function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']'); - } - return part; - }) - .join(''); - } - function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase(); - }); - } - function encodeValue(operator, value, key) { - value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + '=' + value; - } else { - return value; + function safeParse2(header) { + if (typeof header !== 'string') { + return defaultContentType; } - } - function isDefined(value) { - return value !== void 0 && value !== null; - } - function isKeyOperator(operator) { - return operator === ';' || operator === '&' || operator === '?'; - } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== '') { - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { - value = value.toString(); - if (modifier && modifier !== '*') { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : '')); - } else { - if (modifier === '*') { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : '')); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + '=' + tmp.join(',')); - } else if (tmp.length !== 0) { - result.push(tmp.join(',')); - } - } - } - } else { - if (operator === ';') { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === '' && (operator === '&' || operator === '?')) { - result.push(encodeUnreserved(key) + '='); - } else if (value === '') { - result.push(''); - } + let index = header.indexOf(';'); + const type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (mediaTypeRE.test(type) === false) { + return defaultContentType; } - return result; - } - function parseUrl(template) { - return { - expand: expand.bind(null, template) + const result = { + type: type.toLowerCase(), + parameters: new NullObject() }; - } - function expand(template, context) { - var operators = ['+', '#', '.', '/', ';', '?', '&']; - template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ''; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== '+') { - var separator = ','; - if (operator === '?') { - separator = '&'; - } else if (operator !== '#') { - separator = operator; - } - return (values.length !== 0 ? operator : '') + values.join(separator); - } else { - return values.join(','); - } - } else { - return encodeReserved(literal); - } - }); - if (template === '/') { - return template; - } else { - return template.replace(/\/$/, ''); - } - } - function parse2(options) { - let method = options.method.toUpperCase(); - let url = (options.url || '/').replace(/:([a-z]\w+)/g, '{$1}'); - let headers = Object.assign({}, options.headers); - let body2; - let parameters = omit(options, ['method', 'baseUrl', 'url', 'headers', 'request', 'mediaType']); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter(option => urlVariableNames.includes(option)) - .concat('baseUrl'); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept - .split(/,/) - .map(format => - format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ) - .join(','); - } - if (url.endsWith('/graphql')) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = headers.accept.match(/(? { - const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(','); - } - } + if (index === -1) { + return result; } - if (['GET', 'HEAD'].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ('data' in remainingParameters) { - body2 = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body2 = remainingParameters; - } + let key; + let match; + let value; + paramRE.lastIndex = index; + while ((match = paramRE.exec(header))) { + if (match.index !== index) { + return defaultContentType; } - } - if (!headers['content-type'] && typeof body2 !== 'undefined') { - headers['content-type'] = 'application/json; charset=utf-8'; - } - if (['PATCH', 'PUT'].includes(method) && typeof body2 === 'undefined') { - body2 = ''; - } - return Object.assign( - { method, url, headers }, - typeof body2 !== 'undefined' ? { body: body2 } : null, - options.request ? { request: options.request } : null - ); - } - function endpointWithDefaults(defaults, route, options) { - return parse2(merge(defaults, route, options)); - } - function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse: parse2 - }); - } - var endpoint = withDefaults(null, DEFAULTS); - } -}); - -// node_modules/deprecation/dist-node/index.js -var require_dist_node3 = __commonJS({ - 'node_modules/deprecation/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var Deprecation = class extends Error { - constructor(message) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.slice(1, value.length - 1); + quotedPairRE.test(value) && (value = value.replace(quotedPairRE, '$1')); } - this.name = 'Deprecation'; + result.parameters[key] = value; } - }; - exports2.Deprecation = Deprecation; - } -}); - -// node_modules/wrappy/wrappy.js -var require_wrappy = __commonJS({ - 'node_modules/wrappy/wrappy.js'(exports2, module2) { - module2.exports = wrappy; - function wrappy(fn, cb) { - if (fn && cb) return wrappy(fn)(cb); - if (typeof fn !== 'function') throw new TypeError('need wrapper function'); - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k]; - }); - return wrapper; - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb2 = args[args.length - 1]; - if (typeof ret === 'function' && ret !== cb2) { - Object.keys(cb2).forEach(function (k) { - ret[k] = cb2[k]; - }); - } - return ret; + if (index !== header.length) { + return defaultContentType; } + return result; } + module2.exports.default = { parse: parse2, safeParse: safeParse2 }; + module2.exports.parse = parse2; + module2.exports.safeParse = safeParse2; + module2.exports.defaultContentType = defaultContentType; } }); -// node_modules/once/once.js -var require_once = __commonJS({ - 'node_modules/once/once.js'(exports2, module2) { - var wrappy = require_wrappy(); - module2.exports = wrappy(once); - module2.exports.strict = wrappy(onceStrict); - once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this); +// node_modules/json-with-bigint/json-with-bigint.js +var intRegex, + noiseValue, + originalStringify, + originalParse, + customFormat, + bigIntsStringify, + noiseStringify, + JSONStringify, + isContextSourceSupported, + convertMarkedBigIntsReviver, + JSONParseV2, + MAX_INT, + MAX_DIGITS, + stringsOrLargeNumbers, + noiseValueWithQuotes, + JSONParse; +var init_json_with_bigint = __esm({ + 'node_modules/json-with-bigint/json-with-bigint.js'() { + intRegex = /^-?\d+$/; + noiseValue = /^-?\d+n+$/; + originalStringify = JSON.stringify; + originalParse = JSON.parse; + customFormat = /^-?\d+n$/; + bigIntsStringify = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; + noiseStringify = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; + JSONStringify = (value, replacer, space) => { + if ('rawJSON' in JSON) { + return originalStringify( + value, + (key, value2) => { + if (typeof value2 === 'bigint') return JSON.rawJSON(value2.toString()); + if (typeof replacer === 'function') return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) return value2; + return value2; + }, + space + ); + } + if (!value) return originalStringify(value, replacer, space); + const convertedToCustomJSON = originalStringify( + value, + (key, value2) => { + const isNoise = typeof value2 === 'string' && Boolean(value2.match(noiseValue)); + if (isNoise) return value2.toString() + 'n'; + if (typeof value2 === 'bigint') return value2.toString() + 'n'; + if (typeof replacer === 'function') return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) return value2; + return value2; }, - configurable: true + space + ); + const processedJSON = convertedToCustomJSON.replace(bigIntsStringify, '$1$2$3'); + const denoisedJSON = processedJSON.replace(noiseStringify, '$1$2$3'); + return denoisedJSON; + }; + isContextSourceSupported = () => JSON.parse('1', (_, __, context) => !!context && context.source === '1'); + convertMarkedBigIntsReviver = (key, value, context, userReviver) => { + const isCustomFormatBigInt = typeof value === 'string' && value.match(customFormat); + if (isCustomFormatBigInt) return BigInt(value.slice(0, -1)); + const isNoiseValue = typeof value === 'string' && value.match(noiseValue); + if (isNoiseValue) return value.slice(0, -1); + if (typeof userReviver !== 'function') return value; + return userReviver(key, value, context); + }; + JSONParseV2 = (text, reviver) => { + return JSON.parse(text, (key, value, context) => { + const isBigNumber = typeof value === 'number' && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); + const isInt = context && intRegex.test(context.source); + const isBigInt = isBigNumber && isInt; + if (isBigInt) return BigInt(context.source); + if (typeof reviver !== 'function') return value; + return reviver(key, value, context); }); - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this); - }, - configurable: true + }; + MAX_INT = Number.MAX_SAFE_INTEGER.toString(); + MAX_DIGITS = MAX_INT.length; + stringsOrLargeNumbers = /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; + noiseValueWithQuotes = /^"-?\d+n+"$/; + JSONParse = (text, reviver) => { + if (!text) return originalParse(text, reviver); + if (isContextSourceSupported()) return JSONParseV2(text, reviver); + const serializedData = text.replace(stringsOrLargeNumbers, (text2, digits, fractional, exponential) => { + const isString = text2[0] === '"'; + const isNoise = isString && Boolean(text2.match(noiseValueWithQuotes)); + if (isNoise) return text2.substring(0, text2.length - 1) + 'n"'; + const isFractionalOrExponential = fractional || exponential; + const isLessThanMaxSafeInt = + digits && (digits.length < MAX_DIGITS || (digits.length === MAX_DIGITS && digits <= MAX_INT)); + if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) return text2; + return '"' + text2 + 'n"'; }); - }); - function once(fn) { - var f = function () { - if (f.called) return f.value; - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - f.called = false; - return f; - } - function onceStrict(fn) { - var f = function () { - if (f.called) throw new Error(f.onceError); - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - var name = fn.name || 'Function wrapped with `once`'; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; - } + return originalParse(serializedData, (key, value, context) => convertMarkedBigIntsReviver(key, value, context, reviver)); + }; } }); -// node_modules/@octokit/request-error/dist-node/index.js -var require_dist_node4 = __commonJS({ - 'node_modules/@octokit/request-error/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __create2 = Object.create; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __getProtoOf2 = Object.getPrototypeOf; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM2 = (mod, isNodeMode, target) => ( - (target = mod != null ? __create2(__getProtoOf2(mod)) : {}), - __copyProps2( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp2(target, 'default', { value: mod, enumerable: true }) : target, - mod - ) - ); - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - RequestError: () => RequestError - }); - module2.exports = __toCommonJS2(dist_src_exports); - var import_deprecation = require_dist_node3(); - var import_once = __toESM2(require_once()); - var logOnceCode = (0, import_once.default)(deprecation => console.warn(deprecation)); - var logOnceHeaders = (0, import_once.default)(deprecation => console.warn(deprecation)); - var RequestError = class extends Error { +// node_modules/@octokit/request-error/dist-src/index.js +var RequestError; +var init_dist_src = __esm({ + 'node_modules/@octokit/request-error/dist-src/index.js'() { + RequestError = class extends Error { + name; + /** + * http status code + */ + status; + /** + * Request options that lead to the error. + */ + request; + /** + * Response object if a response was received + */ + response; constructor(message, statusCode, options) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } + super(message, { cause: options.cause }); this.name = 'HttpError'; - this.status = statusCode; - let headers; - if ('headers' in options && typeof options.headers !== 'undefined') { - headers = options.headers; + this.status = Number.parseInt(statusCode); + if (Number.isNaN(this.status)) { + this.status = 0; } if ('response' in options) { this.response = options.response; - headers = options.response.headers; } const requestCopy = Object.assign({}, options.request); if (options.request.headers.authorization) { @@ -19941,411 +22574,325 @@ var require_dist_node4 = __commonJS({ .replace(/\bclient_secret=\w+/g, 'client_secret=[REDACTED]') .replace(/\baccess_token=\w+/g, 'access_token=[REDACTED]'); this.request = requestCopy; - Object.defineProperty(this, 'code', { - get() { - logOnceCode( - new import_deprecation.Deprecation('[@octokit/request-error] `error.code` is deprecated, use `error.status`.') - ); - return statusCode; - } - }); - Object.defineProperty(this, 'headers', { - get() { - logOnceHeaders( - new import_deprecation.Deprecation( - '[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.' - ) - ); - return headers || {}; - } - }); } }; } }); -// node_modules/@octokit/request/dist-node/index.js -var require_dist_node5 = __commonJS({ - 'node_modules/@octokit/request/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - request: () => request +// node_modules/@octokit/request/dist-bundle/index.js +function isPlainObject2(value) { + if (typeof value !== 'object' || value === null) return false; + if (Object.prototype.toString.call(value) !== '[object Object]') return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +async function fetchWrapper(requestOptions) { + const fetch = requestOptions.request?.fetch || globalThis.fetch; + if (!fetch) { + throw new Error( + 'fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing' + ); + } + const log = requestOptions.request?.log || console; + const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; + const body2 = + isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) + ? JSONStringify(requestOptions.body) + : requestOptions.body; + const requestHeaders = Object.fromEntries(Object.entries(requestOptions.headers).map(([name, value]) => [name, String(value)])); + let fetchResponse; + try { + fetchResponse = await fetch(requestOptions.url, { + method: requestOptions.method, + body: body2, + redirect: requestOptions.request?.redirect, + headers: requestHeaders, + signal: requestOptions.request?.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...(requestOptions.body && { duplex: 'half' }) }); - module2.exports = __toCommonJS2(dist_src_exports); - var import_endpoint = require_dist_node2(); - var import_universal_user_agent = require_dist_node(); - var VERSION = '8.4.0'; - function isPlainObject(value) { - if (typeof value !== 'object' || value === null) return false; - if (Object.prototype.toString.call(value) !== '[object Object]') return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return ( - typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - var import_request_error = require_dist_node4(); - function getBufferResponse(response) { - return response.arrayBuffer(); - } - function fetchWrapper(requestOptions) { - var _a, _b, _c, _d; - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; - if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - let { fetch } = globalThis; - if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { - fetch = requestOptions.request.fetch; - } - if (!fetch) { - throw new Error( - 'fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing' - ); - } - return fetch(requestOptions.url, { - method: requestOptions.method, - body: requestOptions.body, - redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect, - headers: requestOptions.headers, - signal: (_d = requestOptions.request) == null ? void 0 : _d.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...(requestOptions.body && { duplex: 'half' }) - }) - .then(async response => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ('deprecation' in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${ - requestOptions.url - }" is deprecated. It is scheduled to be removed on ${headers.sunset}${ - deprecationLink ? `. See ${deprecationLink}` : '' - }` - ); - } - if (status === 204 || status === 205) { - return; - } - if (requestOptions.method === 'HEAD') { - if (status < 400) { - return; - } - throw new import_request_error.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: void 0 - }, - request: requestOptions - }); - } - if (status === 304) { - throw new import_request_error.RequestError('Not modified', status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - if (status >= 400) { - const data = await getResponseData(response); - const error = new import_request_error.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - return parseSuccessResponseBody ? await getResponseData(response) : response.body; - }) - .then(data => { - return { - status, - url, - headers, - data - }; - }) - .catch(error => { - if (error instanceof import_request_error.RequestError) throw error; - else if (error.name === 'AbortError') throw error; - let message = error.message; - if (error.name === 'TypeError' && 'cause' in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === 'string') { - message = error.cause; - } - } - throw new import_request_error.RequestError(message, 500, { - request: requestOptions - }); - }); - } - async function getResponseData(response) { - const contentType = response.headers.get('content-type'); - if (/application\/json/.test(contentType)) { - return response - .json() - .catch(() => response.text()) - .catch(() => ''); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBufferResponse(response); - } - function toErrorMessage(data) { - if (typeof data === 'string') return data; - let suffix; - if ('documentation_url' in data) { - suffix = ` - ${data.documentation_url}`; - } else { - suffix = ''; + } catch (error) { + let message = 'Unknown Error'; + if (error instanceof Error) { + if (error.name === 'AbortError') { + error.status = 500; + throw error; } - if ('message' in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(', ')}${suffix}`; + message = error.message; + if (error.name === 'TypeError' && 'cause' in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === 'string') { + message = error.cause; } - return `${data.message}${suffix}`; } - return `Unknown error: ${JSON.stringify(data)}`; } - function withDefaults(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function (route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper(endpoint2.parse(endpoint2.merge(route2, parameters2))); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); + const requestError = new RequestError(message, 500, { + request: requestOptions + }); + requestError.cause = error; + throw requestError; + } + const status = fetchResponse.status; + const url = fetchResponse.url; + const responseHeaders = {}; + for (const [key, value] of fetchResponse.headers) { + responseHeaders[key] = value; + } + const octokitResponse = { + url, + status, + headers: responseHeaders, + data: '' + }; + if ('deprecation' in responseHeaders) { + const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${ + responseHeaders.sunset + }${deprecationLink ? `. See ${deprecationLink}` : ''}` + ); + } + if (status === 204 || status === 205) { + return octokitResponse; + } + if (requestOptions.method === 'HEAD') { + if (status < 400) { + return octokitResponse; } - var request = withDefaults(import_endpoint.endpoint, { - headers: { - 'user-agent': `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` - } + throw new RequestError(fetchResponse.statusText, status, { + response: octokitResponse, + request: requestOptions }); } -}); - -// node_modules/@octokit/graphql/dist-node/index.js -var require_dist_node6 = __commonJS({ - 'node_modules/@octokit/graphql/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); + if (status === 304) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError('Not modified', status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status >= 400) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError(toErrorMessage(octokitResponse.data), status, { + response: octokitResponse, + request: requestOptions + }); + } + octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; + return octokitResponse; +} +async function getResponseData(response) { + const contentType = response.headers.get('content-type'); + if (!contentType) { + return response.text().catch(noop); + } + const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType); + if (isJSONResponse(mimetype)) { + let text = ''; + try { + text = await response.text(); + return JSONParse(text); + } catch (err) { + return text; + } + } else if (mimetype.type.startsWith('text/') || mimetype.parameters.charset?.toLowerCase() === 'utf-8') { + return response.text().catch(noop); + } else { + return response.arrayBuffer().catch( + /* v8 ignore next -- @preserve */ + () => new ArrayBuffer(0) + ); + } +} +function isJSONResponse(mimetype) { + return mimetype.type === 'application/json' || mimetype.type === 'application/scim+json'; +} +function toErrorMessage(data) { + if (typeof data === 'string') { + return data; + } + if (data instanceof ArrayBuffer) { + return 'Unknown error'; + } + if ('message' in data) { + const suffix = 'documentation_url' in data ? ` - ${data.documentation_url}` : ''; + return Array.isArray(data.errors) + ? `${data.message}: ${data.errors.map(v => JSON.stringify(v)).join(', ')}${suffix}` + : `${data.message}${suffix}`; + } + return `Unknown error: ${JSON.stringify(data)}`; +} +function withDefaults2(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function (route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper(endpoint2.parse(endpoint2.merge(route2, parameters2))); }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); +} +var import_fast_content_type_parse, VERSION2, defaults_default, noop, request; +var init_dist_bundle2 = __esm({ + 'node_modules/@octokit/request/dist-bundle/index.js'() { + init_dist_bundle(); + init_universal_user_agent(); + import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1); + init_json_with_bigint(); + init_dist_src(); + VERSION2 = '10.0.8'; + defaults_default = { + headers: { + 'user-agent': `octokit-request.js/${VERSION2} ${getUserAgent()}` } - return to; }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - GraphqlResponseError: () => GraphqlResponseError, - graphql: () => graphql2, - withCustomRequest: () => withCustomRequest - }); - module2.exports = __toCommonJS2(dist_src_exports); - var import_request3 = require_dist_node5(); - var import_universal_user_agent = require_dist_node(); - var VERSION = '7.1.0'; - var import_request2 = require_dist_node5(); - var import_request = require_dist_node5(); - function _buildMessageForResponseErrors(data) { - return ( - `Request failed due to following response errors: + noop = () => ''; + request = withDefaults2(endpoint, defaults_default); + } +}); + +// node_modules/@octokit/graphql/dist-bundle/index.js +function _buildMessageForResponseErrors(data) { + return ( + `Request failed due to following response errors: ` + data.errors.map(e => ` - ${e.message}`).join('\n') - ); + ); +} +function graphql(request2, query, options) { + if (options) { + if (typeof query === 'string' && 'query' in options) { + return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + const parsedOptions = typeof query === 'string' ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; } - var GraphqlResponseError = class extends Error { + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, '/api/graphql'); + } + return request2(requestOptions).then(response => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError(requestOptions, headers, response.data); + } + return response.data.data; + }); +} +function withDefaults3(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: withDefaults3.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} +function withCustomRequest(customRequest) { + return withDefaults3(customRequest, { + method: 'POST', + url: '/graphql' + }); +} +var VERSION3, GraphqlResponseError, NON_VARIABLE_OPTIONS, FORBIDDEN_VARIABLE_OPTIONS, GHES_V3_SUFFIX_REGEX, graphql2; +var init_dist_bundle3 = __esm({ + 'node_modules/@octokit/graphql/dist-bundle/index.js'() { + init_dist_bundle2(); + init_universal_user_agent(); + VERSION3 = '0.0.0-development'; + GraphqlResponseError = class extends Error { constructor(request2, headers, response) { super(_buildMessageForResponseErrors(response)); this.request = request2; this.headers = headers; this.response = response; - this.name = 'GraphqlResponseError'; this.errors = response.errors; this.data = response.data; if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } } + name = 'GraphqlResponseError'; + errors; + data; }; - var NON_VARIABLE_OPTIONS = ['method', 'baseUrl', 'url', 'headers', 'request', 'query', 'mediaType']; - var FORBIDDEN_VARIABLE_OPTIONS = ['query', 'method', 'url']; - var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; - function graphql(request2, query, options) { - if (options) { - if (typeof query === 'string' && 'query' in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); - } - } - const parsedOptions = typeof query === 'string' ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, '/api/graphql'); - } - return request2(requestOptions).then(response => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError(requestOptions, headers, response.data); - } - return response.data.data; - }); - } - function withDefaults(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: newRequest.endpoint - }); - } - var graphql2 = withDefaults(import_request3.request, { + NON_VARIABLE_OPTIONS = ['method', 'baseUrl', 'url', 'headers', 'request', 'query', 'mediaType', 'operationName']; + FORBIDDEN_VARIABLE_OPTIONS = ['query', 'method', 'url']; + GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; + graphql2 = withDefaults3(request, { headers: { - 'user-agent': `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + 'user-agent': `octokit-graphql.js/${VERSION3} ${getUserAgent()}` }, method: 'POST', url: '/graphql' }); - function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: 'POST', - url: '/graphql' - }); - } } }); -// node_modules/@octokit/auth-token/dist-node/index.js -var require_dist_node7 = __commonJS({ - 'node_modules/@octokit/auth-token/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - createTokenAuth: () => createTokenAuth - }); - module2.exports = __toCommonJS2(dist_src_exports); - var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; - var REGEX_IS_INSTALLATION = /^ghs_/; - var REGEX_IS_USER_TO_SERVER = /^ghu_/; - async function auth(token2) { - const isApp = token2.split(/\./).length === 3; - const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token2) || REGEX_IS_INSTALLATION.test(token2); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token2); - const tokenType = isApp ? 'app' : isInstallation ? 'installation' : isUserToServer ? 'user-to-server' : 'oauth'; - return { - type: 'token', - token: token2, - tokenType - }; - } - function withAuthorizationPrefix(token2) { - if (token2.split(/\./).length === 3) { - return `bearer ${token2}`; - } - return `token ${token2}`; - } - async function hook(token2, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token2); - return request(endpoint); - } - var createTokenAuth = function createTokenAuth2(token2) { +// node_modules/@octokit/auth-token/dist-bundle/index.js +async function auth(token2) { + const isApp = isJWT(token2); + const isInstallation = token2.startsWith('v1.') || token2.startsWith('ghs_'); + const isUserToServer = token2.startsWith('ghu_'); + const tokenType = isApp ? 'app' : isInstallation ? 'installation' : isUserToServer ? 'user-to-server' : 'oauth'; + return { + type: 'token', + token: token2, + tokenType + }; +} +function withAuthorizationPrefix(token2) { + if (token2.split(/\./).length === 3) { + return `bearer ${token2}`; + } + return `token ${token2}`; +} +async function hook(token2, request2, route, parameters) { + const endpoint2 = request2.endpoint.merge(route, parameters); + endpoint2.headers.authorization = withAuthorizationPrefix(token2); + return request2(endpoint2); +} +var b64url, sep, jwtRE, isJWT, createTokenAuth; +var init_dist_bundle4 = __esm({ + 'node_modules/@octokit/auth-token/dist-bundle/index.js'() { + b64url = '(?:[a-zA-Z0-9_-]+)'; + sep = '\\.'; + jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`); + isJWT = jwtRE.test.bind(jwtRE); + createTokenAuth = function createTokenAuth2(token2) { if (!token2) { throw new Error('[@octokit/auth-token] No token passed to createTokenAuth'); } @@ -20360,45 +22907,49 @@ var require_dist_node7 = __commonJS({ } }); -// node_modules/@octokit/core/dist-node/index.js -var require_dist_node8 = __commonJS({ - 'node_modules/@octokit/core/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - Octokit: () => Octokit - }); - module2.exports = __toCommonJS2(dist_src_exports); - var import_universal_user_agent = require_dist_node(); - var import_before_after_hook = require_before_after_hook(); - var import_request = require_dist_node5(); - var import_graphql = require_dist_node6(); - var import_auth_token = require_dist_node7(); - var VERSION = '5.2.0'; - var noop = () => {}; - var consoleWarn = console.warn.bind(console); - var consoleError = console.error.bind(console); - var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; - var Octokit = class { - static { - this.VERSION = VERSION; - } +// node_modules/@octokit/core/dist-src/version.js +var VERSION4; +var init_version = __esm({ + 'node_modules/@octokit/core/dist-src/version.js'() { + VERSION4 = '7.0.6'; + } +}); + +// node_modules/@octokit/core/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + Octokit: () => Octokit +}); +function createLogger(logger = {}) { + if (typeof logger.debug !== 'function') { + logger.debug = noop2; + } + if (typeof logger.info !== 'function') { + logger.info = noop2; + } + if (typeof logger.warn !== 'function') { + logger.warn = consoleWarn; + } + if (typeof logger.error !== 'function') { + logger.error = consoleError; + } + return logger; +} +var noop2, consoleWarn, consoleError, userAgentTrail, Octokit; +var init_dist_src2 = __esm({ + 'node_modules/@octokit/core/dist-src/index.js'() { + init_universal_user_agent(); + init_before_after_hook(); + init_dist_bundle2(); + init_dist_bundle3(); + init_dist_bundle4(); + init_version(); + noop2 = () => {}; + consoleWarn = console.warn.bind(console); + consoleError = console.error.bind(console); + userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; + Octokit = class { + static VERSION = VERSION4; static defaults(defaults) { const OctokitWithDefaults = class extends this { constructor(...args) { @@ -20423,9 +22974,7 @@ var require_dist_node8 = __commonJS({ }; return OctokitWithDefaults; } - static { - this.plugins = []; - } + static plugins = []; /** * Attach a plugin (or many) to your Octokit instance. * @@ -20435,20 +22984,18 @@ var require_dist_node8 = __commonJS({ static plugin(...newPlugins) { const currentPlugins = this.plugins; const NewOctokit = class extends this { - static { - this.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))); - } + static plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))); }; return NewOctokit; } constructor(options = {}) { - const hook = new import_before_after_hook.Collection(); + const hook2 = new before_after_hook_default.Collection(); const requestDefaults = { - baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, + baseUrl: request.endpoint.DEFAULTS.baseUrl, headers: {}, request: Object.assign({}, options.request, { // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, 'request') + hook: hook2.bind(null, 'request') }), mediaType: { previews: [], @@ -20465,31 +23012,23 @@ var require_dist_node8 = __commonJS({ if (options.timeZone) { requestDefaults.headers['time-zone'] = options.timeZone; } - this.request = import_request.request.defaults(requestDefaults); - this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults); - this.log = Object.assign( - { - debug: noop, - info: noop, - warn: consoleWarn, - error: consoleError - }, - options.log - ); - this.hook = hook; + this.request = request.defaults(requestDefaults); + this.graphql = withCustomRequest(this.request).defaults(requestDefaults); + this.log = createLogger(options.log); + this.hook = hook2; if (!options.authStrategy) { if (!options.auth) { this.auth = async () => ({ type: 'unauthenticated' }); } else { - const auth = (0, import_auth_token.createTokenAuth)(options.auth); - hook.wrap('request', auth.hook); - this.auth = auth; + const auth2 = createTokenAuth(options.auth); + hook2.wrap('request', auth2.hook); + this.auth = auth2; } } else { const { authStrategy, ...otherOptions } = options; - const auth = authStrategy( + const auth2 = authStrategy( Object.assign( { request: this.request, @@ -20505,57 +23044,51 @@ var require_dist_node8 = __commonJS({ options.auth ) ); - hook.wrap('request', auth.hook); - this.auth = auth; + hook2.wrap('request', auth2.hook); + this.auth = auth2; } const classConstructor = this.constructor; for (let i = 0; i < classConstructor.plugins.length; ++i) { Object.assign(this, classConstructor.plugins[i](this, options)); } } + // assigned during constructor + request; + graphql; + log; + hook; + // TODO: type `octokit.auth` based on passed options.authStrategy + auth; }; } }); -// node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js -var require_dist_node9 = __commonJS({ - 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; - }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - legacyRestEndpointMethods: () => legacyRestEndpointMethods, - restEndpointMethods: () => restEndpointMethods - }); - module2.exports = __toCommonJS2(dist_src_exports); - var VERSION = '10.4.1'; - var Endpoints = { +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +var VERSION5; +var init_version2 = __esm({ + 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js'() { + VERSION5 = '17.0.0'; + } +}); + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +var Endpoints, endpoints_default; +var init_endpoints = __esm({ + 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js'() { + Endpoints = { actions: { addCustomLabelsToSelfHostedRunnerForOrg: ['POST /orgs/{org}/actions/runners/{runner_id}/labels'], addCustomLabelsToSelfHostedRunnerForRepo: ['POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels'], + addRepoAccessToSelfHostedRunnerGroupInOrg: [ + 'PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}' + ], addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}'], addSelectedRepoToOrgVariable: ['PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}'], approveWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve'], cancelWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel'], - createEnvironmentVariable: ['POST /repositories/{repository_id}/environments/{environment_name}/variables'], - createOrUpdateEnvironmentSecret: [ - 'PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}' - ], + createEnvironmentVariable: ['POST /repos/{owner}/{repo}/environments/{environment_name}/variables'], + createHostedRunnerForOrg: ['POST /orgs/{org}/actions/hosted-runners'], + createOrUpdateEnvironmentSecret: ['PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}'], createOrUpdateOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}'], createOrUpdateRepoSecret: ['PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}'], createOrgVariable: ['POST /orgs/{org}/actions/variables'], @@ -20568,8 +23101,13 @@ var require_dist_node9 = __commonJS({ deleteActionsCacheById: ['DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}'], deleteActionsCacheByKey: ['DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}'], deleteArtifact: ['DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}'], - deleteEnvironmentSecret: ['DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}'], - deleteEnvironmentVariable: ['DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], + deleteCustomImageFromOrg: ['DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}'], + deleteCustomImageVersionFromOrg: [ + 'DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}' + ], + deleteEnvironmentSecret: ['DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}'], + deleteEnvironmentVariable: ['DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}'], + deleteHostedRunnerForOrg: ['DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}'], deleteOrgSecret: ['DELETE /orgs/{org}/actions/secrets/{secret_name}'], deleteOrgVariable: ['DELETE /orgs/{org}/actions/variables/{name}'], deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}'], @@ -20598,14 +23136,24 @@ var require_dist_node9 = __commonJS({ getAllowedActionsOrganization: ['GET /orgs/{org}/actions/permissions/selected-actions'], getAllowedActionsRepository: ['GET /repos/{owner}/{repo}/actions/permissions/selected-actions'], getArtifact: ['GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}'], + getCustomImageForOrg: ['GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}'], + getCustomImageVersionForOrg: [ + 'GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}' + ], getCustomOidcSubClaimForRepo: ['GET /repos/{owner}/{repo}/actions/oidc/customization/sub'], - getEnvironmentPublicKey: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key'], - getEnvironmentSecret: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}'], - getEnvironmentVariable: ['GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], + getEnvironmentPublicKey: ['GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key'], + getEnvironmentSecret: ['GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}'], + getEnvironmentVariable: ['GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}'], getGithubActionsDefaultWorkflowPermissionsOrganization: ['GET /orgs/{org}/actions/permissions/workflow'], getGithubActionsDefaultWorkflowPermissionsRepository: ['GET /repos/{owner}/{repo}/actions/permissions/workflow'], getGithubActionsPermissionsOrganization: ['GET /orgs/{org}/actions/permissions'], getGithubActionsPermissionsRepository: ['GET /repos/{owner}/{repo}/actions/permissions'], + getHostedRunnerForOrg: ['GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}'], + getHostedRunnersGithubOwnedImagesForOrg: ['GET /orgs/{org}/actions/hosted-runners/images/github-owned'], + getHostedRunnersLimitsForOrg: ['GET /orgs/{org}/actions/hosted-runners/limits'], + getHostedRunnersMachineSpecsForOrg: ['GET /orgs/{org}/actions/hosted-runners/machine-sizes'], + getHostedRunnersPartnerImagesForOrg: ['GET /orgs/{org}/actions/hosted-runners/images/partner'], + getHostedRunnersPlatformsForOrg: ['GET /orgs/{org}/actions/hosted-runners/platforms'], getJobForWorkflowRun: ['GET /repos/{owner}/{repo}/actions/jobs/{job_id}'], getOrgPublicKey: ['GET /orgs/{org}/actions/secrets/public-key'], getOrgSecret: ['GET /orgs/{org}/actions/secrets/{secret_name}'], @@ -20629,8 +23177,12 @@ var require_dist_node9 = __commonJS({ getWorkflowRunUsage: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing'], getWorkflowUsage: ['GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing'], listArtifactsForRepo: ['GET /repos/{owner}/{repo}/actions/artifacts'], - listEnvironmentSecrets: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets'], - listEnvironmentVariables: ['GET /repositories/{repository_id}/environments/{environment_name}/variables'], + listCustomImageVersionsForOrg: ['GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions'], + listCustomImagesForOrg: ['GET /orgs/{org}/actions/hosted-runners/images/custom'], + listEnvironmentSecrets: ['GET /repos/{owner}/{repo}/environments/{environment_name}/secrets'], + listEnvironmentVariables: ['GET /repos/{owner}/{repo}/environments/{environment_name}/variables'], + listGithubHostedRunnersInGroupForOrg: ['GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners'], + listHostedRunnersForOrg: ['GET /orgs/{org}/actions/hosted-runners'], listJobsForWorkflowRun: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs'], listJobsForWorkflowRunAttempt: ['GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs'], listLabelsForSelfHostedRunnerForOrg: ['GET /orgs/{org}/actions/runners/{runner_id}/labels'], @@ -20676,7 +23228,8 @@ var require_dist_node9 = __commonJS({ setSelectedReposForOrgVariable: ['PUT /orgs/{org}/actions/variables/{name}/repositories'], setSelectedRepositoriesEnabledGithubActionsOrganization: ['PUT /orgs/{org}/actions/permissions/repositories'], setWorkflowAccessToRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/access'], - updateEnvironmentVariable: ['PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}'], + updateEnvironmentVariable: ['PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}'], + updateHostedRunnerForOrg: ['PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}'], updateOrgVariable: ['PATCH /orgs/{org}/actions/variables/{name}'], updateRepoVariable: ['PATCH /repos/{owner}/{repo}/actions/variables/{name}'] }, @@ -20768,11 +23321,22 @@ var require_dist_node9 = __commonJS({ billing: { getGithubActionsBillingOrg: ['GET /orgs/{org}/settings/billing/actions'], getGithubActionsBillingUser: ['GET /users/{username}/settings/billing/actions'], + getGithubBillingPremiumRequestUsageReportOrg: ['GET /organizations/{org}/settings/billing/premium_request/usage'], + getGithubBillingPremiumRequestUsageReportUser: ['GET /users/{username}/settings/billing/premium_request/usage'], + getGithubBillingUsageReportOrg: ['GET /organizations/{org}/settings/billing/usage'], + getGithubBillingUsageReportUser: ['GET /users/{username}/settings/billing/usage'], getGithubPackagesBillingOrg: ['GET /orgs/{org}/settings/billing/packages'], getGithubPackagesBillingUser: ['GET /users/{username}/settings/billing/packages'], getSharedStorageBillingOrg: ['GET /orgs/{org}/settings/billing/shared-storage'], getSharedStorageBillingUser: ['GET /users/{username}/settings/billing/shared-storage'] }, + campaigns: { + createCampaign: ['POST /orgs/{org}/campaigns'], + deleteCampaign: ['DELETE /orgs/{org}/campaigns/{campaign_number}'], + getCampaignSummary: ['GET /orgs/{org}/campaigns/{campaign_number}'], + listOrgCampaigns: ['GET /orgs/{org}/campaigns'], + updateCampaign: ['PATCH /orgs/{org}/campaigns/{campaign_number}'] + }, checks: { create: ['POST /repos/{owner}/{repo}/check-runs'], createSuite: ['POST /repos/{owner}/{repo}/check-suites'], @@ -20788,16 +23352,25 @@ var require_dist_node9 = __commonJS({ update: ['PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}'] }, codeScanning: { + commitAutofix: ['POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits'], + createAutofix: ['POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix'], + createVariantAnalysis: ['POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses'], deleteAnalysis: ['DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}'], + deleteCodeqlDatabase: ['DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}'], getAlert: [ 'GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}', {}, { renamedParameters: { alert_id: 'alert_number' } } ], getAnalysis: ['GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}'], + getAutofix: ['GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix'], getCodeqlDatabase: ['GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}'], getDefaultSetup: ['GET /repos/{owner}/{repo}/code-scanning/default-setup'], getSarif: ['GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}'], + getVariantAnalysis: ['GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}'], + getVariantAnalysisRepoTask: [ + 'GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}' + ], listAlertInstances: ['GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances'], listAlertsForOrg: ['GET /orgs/{org}/code-scanning/alerts'], listAlertsForRepo: ['GET /repos/{owner}/{repo}/code-scanning/alerts'], @@ -20812,6 +23385,32 @@ var require_dist_node9 = __commonJS({ updateDefaultSetup: ['PATCH /repos/{owner}/{repo}/code-scanning/default-setup'], uploadSarif: ['POST /repos/{owner}/{repo}/code-scanning/sarifs'] }, + codeSecurity: { + attachConfiguration: ['POST /orgs/{org}/code-security/configurations/{configuration_id}/attach'], + attachEnterpriseConfiguration: ['POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach'], + createConfiguration: ['POST /orgs/{org}/code-security/configurations'], + createConfigurationForEnterprise: ['POST /enterprises/{enterprise}/code-security/configurations'], + deleteConfiguration: ['DELETE /orgs/{org}/code-security/configurations/{configuration_id}'], + deleteConfigurationForEnterprise: ['DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}'], + detachConfiguration: ['DELETE /orgs/{org}/code-security/configurations/detach'], + getConfiguration: ['GET /orgs/{org}/code-security/configurations/{configuration_id}'], + getConfigurationForRepository: ['GET /repos/{owner}/{repo}/code-security-configuration'], + getConfigurationsForEnterprise: ['GET /enterprises/{enterprise}/code-security/configurations'], + getConfigurationsForOrg: ['GET /orgs/{org}/code-security/configurations'], + getDefaultConfigurations: ['GET /orgs/{org}/code-security/configurations/defaults'], + getDefaultConfigurationsForEnterprise: ['GET /enterprises/{enterprise}/code-security/configurations/defaults'], + getRepositoriesForConfiguration: ['GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories'], + getRepositoriesForEnterpriseConfiguration: [ + 'GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories' + ], + getSingleConfigurationForEnterprise: ['GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}'], + setConfigurationAsDefault: ['PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults'], + setConfigurationAsDefaultForEnterprise: [ + 'PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults' + ], + updateConfiguration: ['PATCH /orgs/{org}/code-security/configurations/{configuration_id}'], + updateEnterpriseConfiguration: ['PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}'] + }, codesOfConduct: { getAllCodesOfConduct: ['GET /codes_of_conduct'], getConductCode: ['GET /codes_of_conduct/{key}'] @@ -20870,10 +23469,13 @@ var require_dist_node9 = __commonJS({ addCopilotSeatsForUsers: ['POST /orgs/{org}/copilot/billing/selected_users'], cancelCopilotSeatAssignmentForTeams: ['DELETE /orgs/{org}/copilot/billing/selected_teams'], cancelCopilotSeatAssignmentForUsers: ['DELETE /orgs/{org}/copilot/billing/selected_users'], + copilotMetricsForOrganization: ['GET /orgs/{org}/copilot/metrics'], + copilotMetricsForTeam: ['GET /orgs/{org}/team/{team_slug}/copilot/metrics'], getCopilotOrganizationDetails: ['GET /orgs/{org}/copilot/billing'], getCopilotSeatDetailsForUser: ['GET /orgs/{org}/members/{username}/copilot'], listCopilotSeats: ['GET /orgs/{org}/copilot/billing/seats'] }, + credentials: { revoke: ['POST /credentials/revoke'] }, dependabot: { addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}'], createOrUpdateOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}'], @@ -20892,8 +23494,11 @@ var require_dist_node9 = __commonJS({ listRepoSecrets: ['GET /repos/{owner}/{repo}/dependabot/secrets'], listSelectedReposForOrgSecret: ['GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories'], removeSelectedRepoFromOrgSecret: ['DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}'], + repositoryAccessForOrg: ['GET /organizations/{org}/dependabot/repository-access'], + setRepositoryAccessDefaultLevel: ['PUT /organizations/{org}/dependabot/repository-access/default-level'], setSelectedReposForOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories'], - updateAlert: ['PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}'] + updateAlert: ['PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}'], + updateRepositoryAccessForOrg: ['PATCH /organizations/{org}/dependabot/repository-access'] }, dependencyGraph: { createRepositorySnapshot: ['POST /repos/{owner}/{repo}/dependency-graph/snapshots'], @@ -20901,6 +23506,29 @@ var require_dist_node9 = __commonJS({ exportSbom: ['GET /repos/{owner}/{repo}/dependency-graph/sbom'] }, emojis: { get: ['GET /emojis'] }, + enterpriseTeamMemberships: { + add: ['PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}'], + bulkAdd: ['POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add'], + bulkRemove: ['POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove'], + get: ['GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}'], + list: ['GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships'], + remove: ['DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}'] + }, + enterpriseTeamOrganizations: { + add: ['PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}'], + bulkAdd: ['POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add'], + bulkRemove: ['POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove'], + delete: ['DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}'], + getAssignment: ['GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}'], + getAssignments: ['GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations'] + }, + enterpriseTeams: { + create: ['POST /enterprises/{enterprise}/teams'], + delete: ['DELETE /enterprises/{enterprise}/teams/{team_slug}'], + get: ['GET /enterprises/{enterprise}/teams/{team_slug}'], + list: ['GET /enterprises/{enterprise}/teams'], + update: ['PATCH /enterprises/{enterprise}/teams/{team_slug}'] + }, gists: { checkIsStarred: ['GET /gists/{gist_id}/star'], create: ['POST /gists'], @@ -20942,6 +23570,14 @@ var require_dist_node9 = __commonJS({ getAllTemplates: ['GET /gitignore/templates'], getTemplate: ['GET /gitignore/templates/{name}'] }, + hostedCompute: { + createNetworkConfigurationForOrg: ['POST /orgs/{org}/settings/network-configurations'], + deleteNetworkConfigurationFromOrg: ['DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}'], + getNetworkConfigurationForOrg: ['GET /orgs/{org}/settings/network-configurations/{network_configuration_id}'], + getNetworkSettingsForOrg: ['GET /orgs/{org}/settings/network-settings/{network_settings_id}'], + listNetworkConfigurationsForOrg: ['GET /orgs/{org}/settings/network-configurations'], + updateNetworkConfigurationForOrg: ['PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}'] + }, interactions: { getRestrictionsForAuthenticatedUser: ['GET /user/interaction-limits'], getRestrictionsForOrg: ['GET /orgs/{org}/interaction-limits'], @@ -20970,7 +23606,9 @@ var require_dist_node9 = __commonJS({ }, issues: { addAssignees: ['POST /repos/{owner}/{repo}/issues/{issue_number}/assignees'], + addBlockedByDependency: ['POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by'], addLabels: ['POST /repos/{owner}/{repo}/issues/{issue_number}/labels'], + addSubIssue: ['POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues'], checkUserCanBeAssigned: ['GET /repos/{owner}/{repo}/assignees/{assignee}'], checkUserCanBeAssignedToIssue: ['GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}'], create: ['POST /repos/{owner}/{repo}/issues'], @@ -20985,10 +23623,13 @@ var require_dist_node9 = __commonJS({ getEvent: ['GET /repos/{owner}/{repo}/issues/events/{event_id}'], getLabel: ['GET /repos/{owner}/{repo}/labels/{name}'], getMilestone: ['GET /repos/{owner}/{repo}/milestones/{milestone_number}'], + getParent: ['GET /repos/{owner}/{repo}/issues/{issue_number}/parent'], list: ['GET /issues'], listAssignees: ['GET /repos/{owner}/{repo}/assignees'], listComments: ['GET /repos/{owner}/{repo}/issues/{issue_number}/comments'], listCommentsForRepo: ['GET /repos/{owner}/{repo}/issues/comments'], + listDependenciesBlockedBy: ['GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by'], + listDependenciesBlocking: ['GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking'], listEvents: ['GET /repos/{owner}/{repo}/issues/{issue_number}/events'], listEventsForRepo: ['GET /repos/{owner}/{repo}/issues/events'], listEventsForTimeline: ['GET /repos/{owner}/{repo}/issues/{issue_number}/timeline'], @@ -20999,10 +23640,14 @@ var require_dist_node9 = __commonJS({ listLabelsForRepo: ['GET /repos/{owner}/{repo}/labels'], listLabelsOnIssue: ['GET /repos/{owner}/{repo}/issues/{issue_number}/labels'], listMilestones: ['GET /repos/{owner}/{repo}/milestones'], + listSubIssues: ['GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues'], lock: ['PUT /repos/{owner}/{repo}/issues/{issue_number}/lock'], removeAllLabels: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels'], removeAssignees: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees'], + removeDependencyBlockedBy: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}'], removeLabel: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}'], + removeSubIssue: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue'], + reprioritizeSubIssue: ['PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority'], setLabels: ['PUT /repos/{owner}/{repo}/issues/{issue_number}/labels'], unlock: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock'], update: ['PATCH /repos/{owner}/{repo}/issues/{issue_number}'], @@ -21027,42 +23672,10 @@ var require_dist_node9 = __commonJS({ root: ['GET /'] }, migrations: { - cancelImport: [ - 'DELETE /repos/{owner}/{repo}/import', - {}, - { - deprecated: - 'octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import' - } - ], deleteArchiveForAuthenticatedUser: ['DELETE /user/migrations/{migration_id}/archive'], deleteArchiveForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/archive'], downloadArchiveForOrg: ['GET /orgs/{org}/migrations/{migration_id}/archive'], getArchiveForAuthenticatedUser: ['GET /user/migrations/{migration_id}/archive'], - getCommitAuthors: [ - 'GET /repos/{owner}/{repo}/import/authors', - {}, - { - deprecated: - 'octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors' - } - ], - getImportStatus: [ - 'GET /repos/{owner}/{repo}/import', - {}, - { - deprecated: - 'octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status' - } - ], - getLargeFiles: [ - 'GET /repos/{owner}/{repo}/import/large_files', - {}, - { - deprecated: - 'octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files' - } - ], getStatusForAuthenticatedUser: ['GET /user/migrations/{migration_id}'], getStatusForOrg: ['GET /orgs/{org}/migrations/{migration_id}'], listForAuthenticatedUser: ['GET /user/migrations'], @@ -21074,49 +23687,24 @@ var require_dist_node9 = __commonJS({ {}, { renamed: ['migrations', 'listReposForAuthenticatedUser'] } ], - mapCommitAuthor: [ - 'PATCH /repos/{owner}/{repo}/import/authors/{author_id}', - {}, - { - deprecated: - 'octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author' - } - ], - setLfsPreference: [ - 'PATCH /repos/{owner}/{repo}/import/lfs', - {}, - { - deprecated: - 'octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference' - } - ], startForAuthenticatedUser: ['POST /user/migrations'], startForOrg: ['POST /orgs/{org}/migrations'], - startImport: [ - 'PUT /repos/{owner}/{repo}/import', - {}, - { - deprecated: - 'octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import' - } - ], unlockRepoForAuthenticatedUser: ['DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock'], - unlockRepoForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock'], - updateImport: [ - 'PATCH /repos/{owner}/{repo}/import', - {}, - { - deprecated: - 'octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import' - } - ] + unlockRepoForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock'] }, oidc: { getOidcCustomSubTemplateForOrg: ['GET /orgs/{org}/actions/oidc/customization/sub'], updateOidcCustomSubTemplateForOrg: ['PUT /orgs/{org}/actions/oidc/customization/sub'] }, orgs: { - addSecurityManagerTeam: ['PUT /orgs/{org}/security-managers/teams/{team_slug}'], + addSecurityManagerTeam: [ + 'PUT /orgs/{org}/security-managers/teams/{team_slug}', + {}, + { + deprecated: + 'octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team' + } + ], assignTeamToOrgRole: ['PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}'], assignUserToOrgRole: ['PUT /orgs/{org}/organization-roles/users/{username}/{role_id}'], blockUser: ['PUT /orgs/{org}/blocks/{username}'], @@ -21125,33 +23713,56 @@ var require_dist_node9 = __commonJS({ checkMembershipForUser: ['GET /orgs/{org}/members/{username}'], checkPublicMembershipForUser: ['GET /orgs/{org}/public_members/{username}'], convertMemberToOutsideCollaborator: ['PUT /orgs/{org}/outside_collaborators/{username}'], - createCustomOrganizationRole: ['POST /orgs/{org}/organization-roles'], + createArtifactStorageRecord: ['POST /orgs/{org}/artifacts/metadata/storage-record'], createInvitation: ['POST /orgs/{org}/invitations'], - createOrUpdateCustomProperties: ['PATCH /orgs/{org}/properties/schema'], - createOrUpdateCustomPropertiesValuesForRepos: ['PATCH /orgs/{org}/properties/values'], - createOrUpdateCustomProperty: ['PUT /orgs/{org}/properties/schema/{custom_property_name}'], + createIssueType: ['POST /orgs/{org}/issue-types'], createWebhook: ['POST /orgs/{org}/hooks'], + customPropertiesForOrgsCreateOrUpdateOrganizationValues: ['PATCH /organizations/{org}/org-properties/values'], + customPropertiesForOrgsGetOrganizationValues: ['GET /organizations/{org}/org-properties/values'], + customPropertiesForReposCreateOrUpdateOrganizationDefinition: [ + 'PUT /orgs/{org}/properties/schema/{custom_property_name}' + ], + customPropertiesForReposCreateOrUpdateOrganizationDefinitions: ['PATCH /orgs/{org}/properties/schema'], + customPropertiesForReposCreateOrUpdateOrganizationValues: ['PATCH /orgs/{org}/properties/values'], + customPropertiesForReposDeleteOrganizationDefinition: ['DELETE /orgs/{org}/properties/schema/{custom_property_name}'], + customPropertiesForReposGetOrganizationDefinition: ['GET /orgs/{org}/properties/schema/{custom_property_name}'], + customPropertiesForReposGetOrganizationDefinitions: ['GET /orgs/{org}/properties/schema'], + customPropertiesForReposGetOrganizationValues: ['GET /orgs/{org}/properties/values'], delete: ['DELETE /orgs/{org}'], - deleteCustomOrganizationRole: ['DELETE /orgs/{org}/organization-roles/{role_id}'], + deleteAttestationsBulk: ['POST /orgs/{org}/attestations/delete-request'], + deleteAttestationsById: ['DELETE /orgs/{org}/attestations/{attestation_id}'], + deleteAttestationsBySubjectDigest: ['DELETE /orgs/{org}/attestations/digest/{subject_digest}'], + deleteIssueType: ['DELETE /orgs/{org}/issue-types/{issue_type_id}'], deleteWebhook: ['DELETE /orgs/{org}/hooks/{hook_id}'], - enableOrDisableSecurityProductOnAllOrgRepos: ['POST /orgs/{org}/{security_product}/{enablement}'], + disableSelectedRepositoryImmutableReleasesOrganization: [ + 'DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}' + ], + enableSelectedRepositoryImmutableReleasesOrganization: [ + 'PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}' + ], get: ['GET /orgs/{org}'], - getAllCustomProperties: ['GET /orgs/{org}/properties/schema'], - getCustomProperty: ['GET /orgs/{org}/properties/schema/{custom_property_name}'], + getImmutableReleasesSettings: ['GET /orgs/{org}/settings/immutable-releases'], + getImmutableReleasesSettingsRepositories: ['GET /orgs/{org}/settings/immutable-releases/repositories'], getMembershipForAuthenticatedUser: ['GET /user/memberships/orgs/{org}'], getMembershipForUser: ['GET /orgs/{org}/memberships/{username}'], getOrgRole: ['GET /orgs/{org}/organization-roles/{role_id}'], + getOrgRulesetHistory: ['GET /orgs/{org}/rulesets/{ruleset_id}/history'], + getOrgRulesetVersion: ['GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}'], getWebhook: ['GET /orgs/{org}/hooks/{hook_id}'], getWebhookConfigForOrg: ['GET /orgs/{org}/hooks/{hook_id}/config'], getWebhookDelivery: ['GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}'], list: ['GET /organizations'], listAppInstallations: ['GET /orgs/{org}/installations'], + listArtifactStorageRecords: ['GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records'], + listAttestationRepositories: ['GET /orgs/{org}/attestations/repositories'], + listAttestations: ['GET /orgs/{org}/attestations/{subject_digest}'], + listAttestationsBulk: ['POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}'], listBlockedUsers: ['GET /orgs/{org}/blocks'], - listCustomPropertiesValuesForRepos: ['GET /orgs/{org}/properties/values'], listFailedInvitations: ['GET /orgs/{org}/failed_invitations'], listForAuthenticatedUser: ['GET /user/orgs'], listForUser: ['GET /users/{username}/orgs'], listInvitationTeams: ['GET /orgs/{org}/invitations/{invitation_id}/teams'], + listIssueTypes: ['GET /orgs/{org}/issue-types'], listMembers: ['GET /orgs/{org}/members'], listMembershipsForAuthenticatedUser: ['GET /user/memberships/orgs'], listOrgRoleTeams: ['GET /orgs/{org}/organization-roles/{role_id}/teams'], @@ -21165,28 +23776,43 @@ var require_dist_node9 = __commonJS({ listPatGrants: ['GET /orgs/{org}/personal-access-tokens'], listPendingInvitations: ['GET /orgs/{org}/invitations'], listPublicMembers: ['GET /orgs/{org}/public_members'], - listSecurityManagerTeams: ['GET /orgs/{org}/security-managers'], + listSecurityManagerTeams: [ + 'GET /orgs/{org}/security-managers', + {}, + { + deprecated: + 'octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams' + } + ], listWebhookDeliveries: ['GET /orgs/{org}/hooks/{hook_id}/deliveries'], listWebhooks: ['GET /orgs/{org}/hooks'], - patchCustomOrganizationRole: ['PATCH /orgs/{org}/organization-roles/{role_id}'], pingWebhook: ['POST /orgs/{org}/hooks/{hook_id}/pings'], redeliverWebhookDelivery: ['POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts'], - removeCustomProperty: ['DELETE /orgs/{org}/properties/schema/{custom_property_name}'], removeMember: ['DELETE /orgs/{org}/members/{username}'], removeMembershipForUser: ['DELETE /orgs/{org}/memberships/{username}'], removeOutsideCollaborator: ['DELETE /orgs/{org}/outside_collaborators/{username}'], removePublicMembershipForAuthenticatedUser: ['DELETE /orgs/{org}/public_members/{username}'], - removeSecurityManagerTeam: ['DELETE /orgs/{org}/security-managers/teams/{team_slug}'], + removeSecurityManagerTeam: [ + 'DELETE /orgs/{org}/security-managers/teams/{team_slug}', + {}, + { + deprecated: + 'octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team' + } + ], reviewPatGrantRequest: ['POST /orgs/{org}/personal-access-token-requests/{pat_request_id}'], reviewPatGrantRequestsInBulk: ['POST /orgs/{org}/personal-access-token-requests'], revokeAllOrgRolesTeam: ['DELETE /orgs/{org}/organization-roles/teams/{team_slug}'], revokeAllOrgRolesUser: ['DELETE /orgs/{org}/organization-roles/users/{username}'], revokeOrgRoleTeam: ['DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}'], revokeOrgRoleUser: ['DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}'], + setImmutableReleasesSettings: ['PUT /orgs/{org}/settings/immutable-releases'], + setImmutableReleasesSettingsRepositories: ['PUT /orgs/{org}/settings/immutable-releases/repositories'], setMembershipForUser: ['PUT /orgs/{org}/memberships/{username}'], setPublicMembershipForAuthenticatedUser: ['PUT /orgs/{org}/public_members/{username}'], unblockUser: ['DELETE /orgs/{org}/blocks/{username}'], update: ['PATCH /orgs/{org}'], + updateIssueType: ['PUT /orgs/{org}/issue-types/{issue_type_id}'], updateMembershipForAuthenticatedUser: ['PATCH /user/memberships/orgs/{org}'], updatePatAccess: ['POST /orgs/{org}/personal-access-tokens/{pat_id}'], updatePatAccesses: ['POST /orgs/{org}/personal-access-tokens'], @@ -21246,32 +23872,33 @@ var require_dist_node9 = __commonJS({ 'POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore' ] }, + privateRegistries: { + createOrgPrivateRegistry: ['POST /orgs/{org}/private-registries'], + deleteOrgPrivateRegistry: ['DELETE /orgs/{org}/private-registries/{secret_name}'], + getOrgPrivateRegistry: ['GET /orgs/{org}/private-registries/{secret_name}'], + getOrgPublicKey: ['GET /orgs/{org}/private-registries/public-key'], + listOrgPrivateRegistries: ['GET /orgs/{org}/private-registries'], + updateOrgPrivateRegistry: ['PATCH /orgs/{org}/private-registries/{secret_name}'] + }, projects: { - addCollaborator: ['PUT /projects/{project_id}/collaborators/{username}'], - createCard: ['POST /projects/columns/{column_id}/cards'], - createColumn: ['POST /projects/{project_id}/columns'], - createForAuthenticatedUser: ['POST /user/projects'], - createForOrg: ['POST /orgs/{org}/projects'], - createForRepo: ['POST /repos/{owner}/{repo}/projects'], - delete: ['DELETE /projects/{project_id}'], - deleteCard: ['DELETE /projects/columns/cards/{card_id}'], - deleteColumn: ['DELETE /projects/columns/{column_id}'], - get: ['GET /projects/{project_id}'], - getCard: ['GET /projects/columns/cards/{card_id}'], - getColumn: ['GET /projects/columns/{column_id}'], - getPermissionForUser: ['GET /projects/{project_id}/collaborators/{username}/permission'], - listCards: ['GET /projects/columns/{column_id}/cards'], - listCollaborators: ['GET /projects/{project_id}/collaborators'], - listColumns: ['GET /projects/{project_id}/columns'], - listForOrg: ['GET /orgs/{org}/projects'], - listForRepo: ['GET /repos/{owner}/{repo}/projects'], - listForUser: ['GET /users/{username}/projects'], - moveCard: ['POST /projects/columns/cards/{card_id}/moves'], - moveColumn: ['POST /projects/columns/{column_id}/moves'], - removeCollaborator: ['DELETE /projects/{project_id}/collaborators/{username}'], - update: ['PATCH /projects/{project_id}'], - updateCard: ['PATCH /projects/columns/cards/{card_id}'], - updateColumn: ['PATCH /projects/columns/{column_id}'] + addItemForOrg: ['POST /orgs/{org}/projectsV2/{project_number}/items'], + addItemForUser: ['POST /users/{username}/projectsV2/{project_number}/items'], + deleteItemForOrg: ['DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}'], + deleteItemForUser: ['DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}'], + getFieldForOrg: ['GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}'], + getFieldForUser: ['GET /users/{username}/projectsV2/{project_number}/fields/{field_id}'], + getForOrg: ['GET /orgs/{org}/projectsV2/{project_number}'], + getForUser: ['GET /users/{username}/projectsV2/{project_number}'], + getOrgItem: ['GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}'], + getUserItem: ['GET /users/{username}/projectsV2/{project_number}/items/{item_id}'], + listFieldsForOrg: ['GET /orgs/{org}/projectsV2/{project_number}/fields'], + listFieldsForUser: ['GET /users/{username}/projectsV2/{project_number}/fields'], + listForOrg: ['GET /orgs/{org}/projectsV2'], + listForUser: ['GET /users/{username}/projectsV2'], + listItemsForOrg: ['GET /orgs/{org}/projectsV2/{project_number}/items'], + listItemsForUser: ['GET /users/{username}/projectsV2/{project_number}/items'], + updateItemForOrg: ['PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}'], + updateItemForUser: ['PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}'] }, pulls: { checkIfMerged: ['GET /repos/{owner}/{repo}/pulls/{pull_number}/merge'], @@ -21363,10 +23990,13 @@ var require_dist_node9 = __commonJS({ cancelPagesDeployment: ['POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel'], checkAutomatedSecurityFixes: ['GET /repos/{owner}/{repo}/automated-security-fixes'], checkCollaborator: ['GET /repos/{owner}/{repo}/collaborators/{username}'], + checkImmutableReleases: ['GET /repos/{owner}/{repo}/immutable-releases'], + checkPrivateVulnerabilityReporting: ['GET /repos/{owner}/{repo}/private-vulnerability-reporting'], checkVulnerabilityAlerts: ['GET /repos/{owner}/{repo}/vulnerability-alerts'], codeownersErrors: ['GET /repos/{owner}/{repo}/codeowners/errors'], compareCommits: ['GET /repos/{owner}/{repo}/compare/{base}...{head}'], compareCommitsWithBasehead: ['GET /repos/{owner}/{repo}/compare/{basehead}'], + createAttestation: ['POST /repos/{owner}/{repo}/attestations'], createAutolink: ['POST /repos/{owner}/{repo}/autolinks'], createCommitComment: ['POST /repos/{owner}/{repo}/commits/{commit_sha}/comments'], createCommitSignatureProtection: ['POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures'], @@ -21382,7 +24012,6 @@ var require_dist_node9 = __commonJS({ createForAuthenticatedUser: ['POST /user/repos'], createFork: ['POST /repos/{owner}/{repo}/forks'], createInOrg: ['POST /orgs/{org}/repos'], - createOrUpdateCustomPropertiesValues: ['PATCH /repos/{owner}/{repo}/properties/values'], createOrUpdateEnvironment: ['PUT /repos/{owner}/{repo}/environments/{environment_name}'], createOrUpdateFileContents: ['PUT /repos/{owner}/{repo}/contents/{path}'], createOrgRuleset: ['POST /orgs/{org}/rulesets'], @@ -21390,9 +24019,10 @@ var require_dist_node9 = __commonJS({ createPagesSite: ['POST /repos/{owner}/{repo}/pages'], createRelease: ['POST /repos/{owner}/{repo}/releases'], createRepoRuleset: ['POST /repos/{owner}/{repo}/rulesets'], - createTagProtection: ['POST /repos/{owner}/{repo}/tags/protection'], createUsingTemplate: ['POST /repos/{template_owner}/{template_repo}/generate'], createWebhook: ['POST /repos/{owner}/{repo}/hooks'], + customPropertiesForReposCreateOrUpdateRepositoryValues: ['PATCH /repos/{owner}/{repo}/properties/values'], + customPropertiesForReposGetRepositoryValues: ['GET /repos/{owner}/{repo}/properties/values'], declineInvitation: [ 'DELETE /user/repository_invitations/{invitation_id}', {}, @@ -21422,18 +24052,19 @@ var require_dist_node9 = __commonJS({ deleteRelease: ['DELETE /repos/{owner}/{repo}/releases/{release_id}'], deleteReleaseAsset: ['DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}'], deleteRepoRuleset: ['DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}'], - deleteTagProtection: ['DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}'], deleteWebhook: ['DELETE /repos/{owner}/{repo}/hooks/{hook_id}'], disableAutomatedSecurityFixes: ['DELETE /repos/{owner}/{repo}/automated-security-fixes'], disableDeploymentProtectionRule: [ 'DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}' ], + disableImmutableReleases: ['DELETE /repos/{owner}/{repo}/immutable-releases'], disablePrivateVulnerabilityReporting: ['DELETE /repos/{owner}/{repo}/private-vulnerability-reporting'], disableVulnerabilityAlerts: ['DELETE /repos/{owner}/{repo}/vulnerability-alerts'], downloadArchive: ['GET /repos/{owner}/{repo}/zipball/{ref}', {}, { renamed: ['repos', 'downloadZipballArchive'] }], downloadTarballArchive: ['GET /repos/{owner}/{repo}/tarball/{ref}'], downloadZipballArchive: ['GET /repos/{owner}/{repo}/zipball/{ref}'], enableAutomatedSecurityFixes: ['PUT /repos/{owner}/{repo}/automated-security-fixes'], + enableImmutableReleases: ['PUT /repos/{owner}/{repo}/immutable-releases'], enablePrivateVulnerabilityReporting: ['PUT /repos/{owner}/{repo}/private-vulnerability-reporting'], enableVulnerabilityAlerts: ['PUT /repos/{owner}/{repo}/vulnerability-alerts'], generateReleaseNotes: ['POST /repos/{owner}/{repo}/releases/generate-notes'], @@ -21465,7 +24096,6 @@ var require_dist_node9 = __commonJS({ getCustomDeploymentProtectionRule: [ 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}' ], - getCustomPropertiesValues: ['GET /repos/{owner}/{repo}/properties/values'], getDeployKey: ['GET /repos/{owner}/{repo}/keys/{key_id}'], getDeployment: ['GET /repos/{owner}/{repo}/deployments/{deployment_id}'], getDeploymentBranchPolicy: [ @@ -21494,6 +24124,8 @@ var require_dist_node9 = __commonJS({ getRepoRuleSuite: ['GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}'], getRepoRuleSuites: ['GET /repos/{owner}/{repo}/rulesets/rule-suites'], getRepoRuleset: ['GET /repos/{owner}/{repo}/rulesets/{ruleset_id}'], + getRepoRulesetHistory: ['GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history'], + getRepoRulesetVersion: ['GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}'], getRepoRulesets: ['GET /repos/{owner}/{repo}/rulesets'], getStatusChecksProtection: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks'], getTeamsWithAccessToProtectedBranch: ['GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams'], @@ -21505,6 +24137,7 @@ var require_dist_node9 = __commonJS({ getWebhookConfigForRepo: ['GET /repos/{owner}/{repo}/hooks/{hook_id}/config'], getWebhookDelivery: ['GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}'], listActivities: ['GET /repos/{owner}/{repo}/activity'], + listAttestations: ['GET /repos/{owner}/{repo}/attestations/{subject_digest}'], listAutolinks: ['GET /repos/{owner}/{repo}/autolinks'], listBranches: ['GET /repos/{owner}/{repo}/branches'], listBranchesForHeadCommit: ['GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head'], @@ -21533,7 +24166,6 @@ var require_dist_node9 = __commonJS({ listPullRequestsAssociatedWithCommit: ['GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls'], listReleaseAssets: ['GET /repos/{owner}/{repo}/releases/{release_id}/assets'], listReleases: ['GET /repos/{owner}/{repo}/releases'], - listTagProtection: ['GET /repos/{owner}/{repo}/tags/protection'], listTags: ['GET /repos/{owner}/{repo}/tags'], listTeams: ['GET /repos/{owner}/{repo}/teams'], listWebhookDeliveries: ['GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries'], @@ -21628,12 +24260,15 @@ var require_dist_node9 = __commonJS({ users: ['GET /search/users'] }, secretScanning: { + createPushProtectionBypass: ['POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses'], getAlert: ['GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'], - listAlertsForEnterprise: ['GET /enterprises/{enterprise}/secret-scanning/alerts'], + getScanHistory: ['GET /repos/{owner}/{repo}/secret-scanning/scan-history'], listAlertsForOrg: ['GET /orgs/{org}/secret-scanning/alerts'], listAlertsForRepo: ['GET /repos/{owner}/{repo}/secret-scanning/alerts'], listLocationsForAlert: ['GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations'], - updateAlert: ['PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'] + listOrgPatternConfigs: ['GET /orgs/{org}/secret-scanning/pattern-configurations'], + updateAlert: ['PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'], + updateOrgPatternConfigs: ['PATCH /orgs/{org}/secret-scanning/pattern-configurations'] }, securityAdvisories: { createFork: ['POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks'], @@ -21649,9 +24284,7 @@ var require_dist_node9 = __commonJS({ }, teams: { addOrUpdateMembershipForUserInOrg: ['PUT /orgs/{org}/teams/{team_slug}/memberships/{username}'], - addOrUpdateProjectPermissionsInOrg: ['PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}'], addOrUpdateRepoPermissionsInOrg: ['PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}'], - checkPermissionsForProjectInOrg: ['GET /orgs/{org}/teams/{team_slug}/projects/{project_id}'], checkPermissionsForRepoInOrg: ['GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}'], create: ['POST /orgs/{org}/teams'], createDiscussionCommentInOrg: ['POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments'], @@ -21674,10 +24307,8 @@ var require_dist_node9 = __commonJS({ listForAuthenticatedUser: ['GET /user/teams'], listMembersInOrg: ['GET /orgs/{org}/teams/{team_slug}/members'], listPendingInvitationsInOrg: ['GET /orgs/{org}/teams/{team_slug}/invitations'], - listProjectsInOrg: ['GET /orgs/{org}/teams/{team_slug}/projects'], listReposInOrg: ['GET /orgs/{org}/teams/{team_slug}/repos'], removeMembershipForUserInOrg: ['DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}'], - removeProjectInOrg: ['DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}'], removeRepoInOrg: ['DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}'], updateDiscussionCommentInOrg: [ 'PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}' @@ -21702,6 +24333,9 @@ var require_dist_node9 = __commonJS({ ], createPublicSshKeyForAuthenticatedUser: ['POST /user/keys'], createSshSigningKeyForAuthenticatedUser: ['POST /user/ssh_signing_keys'], + deleteAttestationsBulk: ['POST /users/{username}/attestations/delete-request'], + deleteAttestationsById: ['DELETE /users/{username}/attestations/{attestation_id}'], + deleteAttestationsBySubjectDigest: ['DELETE /users/{username}/attestations/digest/{subject_digest}'], deleteEmailForAuthenticated: ['DELETE /user/emails', {}, { renamed: ['users', 'deleteEmailForAuthenticatedUser'] }], deleteEmailForAuthenticatedUser: ['DELETE /user/emails'], deleteGpgKeyForAuthenticated: [ @@ -21720,6 +24354,7 @@ var require_dist_node9 = __commonJS({ deleteSshSigningKeyForAuthenticatedUser: ['DELETE /user/ssh_signing_keys/{ssh_signing_key_id}'], follow: ['PUT /user/following/{username}'], getAuthenticated: ['GET /user'], + getById: ['GET /user/{account_id}'], getByUsername: ['GET /users/{username}'], getContextForUser: ['GET /users/{username}/hovercard'], getGpgKeyForAuthenticated: [ @@ -21736,6 +24371,8 @@ var require_dist_node9 = __commonJS({ getPublicSshKeyForAuthenticatedUser: ['GET /user/keys/{key_id}'], getSshSigningKeyForAuthenticatedUser: ['GET /user/ssh_signing_keys/{ssh_signing_key_id}'], list: ['GET /users'], + listAttestations: ['GET /users/{username}/attestations/{subject_digest}'], + listAttestationsBulk: ['POST /users/{username}/attestations/bulk-list{?per_page,before,after}'], listBlockedByAuthenticated: ['GET /user/blocks', {}, { renamed: ['users', 'listBlockedByAuthenticatedUser'] }], listBlockedByAuthenticatedUser: ['GET /user/blocks'], listEmailsForAuthenticated: ['GET /user/emails', {}, { renamed: ['users', 'listEmailsForAuthenticatedUser'] }], @@ -21776,11 +24413,61 @@ var require_dist_node9 = __commonJS({ updateAuthenticated: ['PATCH /user'] } }; - var endpoints_default = Endpoints; - var endpointMethodsMap = /* @__PURE__ */ new Map(); + endpoints_default = Endpoints; + } +}); + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js +function endpointsToMethods(octokit2) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit: octokit2, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit2, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit2.request.defaults(defaults); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit2.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit2.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options2) { + octokit2.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} +var endpointMethodsMap, handler; +var init_endpoints_to_methods = __esm({ + 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js'() { + init_endpoints(); + endpointMethodsMap = /* @__PURE__ */ new Map(); for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; + for (const [methodName, endpoint2] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint2; const [method, url] = route.split(/ /); const endpointDefaults = Object.assign( { @@ -21800,7 +24487,7 @@ var require_dist_node9 = __commonJS({ }); } } - var handler = { + handler = { has({ scope }, methodName) { return endpointMethodsMap.get(scope).has(methodName); }, @@ -21844,181 +24531,161 @@ var require_dist_node9 = __commonJS({ return cache[methodName]; } }; - function endpointsToMethods(octokit2) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit: octokit2, scope, cache: {} }, handler); - } - return newMethods; - } - function decorate(octokit2, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit2.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0 - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit2.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - if (decorations.deprecated) { - octokit2.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options2) { - octokit2.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); - } - function restEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2); - return { - rest: api - }; - } - restEndpointMethods.VERSION = VERSION; - function legacyRestEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2); - return { - ...api, - rest: api - }; - } - legacyRestEndpointMethods.VERSION = VERSION; } }); -// node_modules/@octokit/plugin-paginate-rest/dist-node/index.js -var require_dist_node10 = __commonJS({ - 'node_modules/@octokit/plugin-paginate-rest/dist-node/index.js'(exports2, module2) { - 'use strict'; - var __defProp2 = Object.defineProperty; - var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __hasOwnProp2 = Object.prototype.hasOwnProperty; - var __export2 = (target, all) => { - for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps2 = (to, from, except, desc) => { - if ((from && typeof from === 'object') || typeof from === 'function') { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp2.call(to, key) && key !== except) - __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable }); - } - return to; +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js +var dist_src_exports2 = {}; +__export(dist_src_exports2, { + legacyRestEndpointMethods: () => legacyRestEndpointMethods, + restEndpointMethods: () => restEndpointMethods +}); +function restEndpointMethods(octokit2) { + const api = endpointsToMethods(octokit2); + return { + rest: api + }; +} +function legacyRestEndpointMethods(octokit2) { + const api = endpointsToMethods(octokit2); + return { + ...api, + rest: api + }; +} +var init_dist_src3 = __esm({ + 'node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js'() { + init_version2(); + init_endpoints_to_methods(); + restEndpointMethods.VERSION = VERSION5; + legacyRestEndpointMethods.VERSION = VERSION5; + } +}); + +// node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js +var dist_bundle_exports = {}; +__export(dist_bundle_exports, { + composePaginateRest: () => composePaginateRest, + isPaginatingEndpoint: () => isPaginatingEndpoint, + paginateRest: () => paginateRest, + paginatingEndpoints: () => paginatingEndpoints +}); +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] }; - var __toCommonJS2 = mod => __copyProps2(__defProp2({}, '__esModule', { value: true }), mod); - var dist_src_exports = {}; - __export2(dist_src_exports, { - composePaginateRest: () => composePaginateRest, - isPaginatingEndpoint: () => isPaginatingEndpoint, - paginateRest: () => paginateRest, - paginatingEndpoints: () => paginatingEndpoints - }); - module2.exports = __toCommonJS2(dist_src_exports); - var VERSION = '9.2.1'; - function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [] - }; - } - const responseNeedsNormalization = 'total_count' in response.data && !('url' in response.data); - if (!responseNeedsNormalization) return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== 'undefined') { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== 'undefined') { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; - } - function iterator(octokit2, route, parameters) { - const options = typeof route === 'function' ? route.endpoint(parameters) : octokit2.request.endpoint(route, parameters); - const requestMethod = typeof route === 'function' ? route : octokit2.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || '').match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) throw error; - url = ''; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; + } + const responseNeedsNormalization = + ('total_count' in response.data || 'total_commits' in response.data) && !('url' in response.data); + if (!responseNeedsNormalization) return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + const totalCommits = response.data.total_commits; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + delete response.data.total_commits; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== 'undefined') { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== 'undefined') { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + response.data.total_commits = totalCommits; + return response; +} +function iterator(octokit2, route, parameters) { + const options = typeof route === 'function' ? route.endpoint(parameters) : octokit2.request.endpoint(route, parameters); + const requestMethod = typeof route === 'function' ? route : octokit2.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || '').match(/<([^<>]+)>;\s*rel="next"/) || [])[1]; + if (!url && 'total_commits' in normalizedResponse.data) { + const parsedUrl = new URL(normalizedResponse.url); + const params = parsedUrl.searchParams; + const page = parseInt(params.get('page') || '1', 10); + const per_page = parseInt(params.get('per_page') || '250', 10); + if (page * per_page < normalizedResponse.data.total_commits) { + params.set('page', String(page + 1)); + url = parsedUrl.toString(); } } - }) - }; - } - function paginate(octokit2, route, parameters, mapFn) { - if (typeof parameters === 'function') { - mapFn = parameters; - parameters = void 0; + return { value: normalizedResponse }; + } catch (error) { + if (error.status !== 409) throw error; + url = ''; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } } - return gather(octokit2, [], iterator(octokit2, route, parameters)[Symbol.asyncIterator](), mapFn); + }) + }; +} +function paginate(octokit2, route, parameters, mapFn) { + if (typeof parameters === 'function') { + mapFn = parameters; + parameters = void 0; + } + return gather(octokit2, [], iterator(octokit2, route, parameters)[Symbol.asyncIterator](), mapFn); +} +function gather(octokit2, results, iterator2, mapFn) { + return iterator2.next().then(result => { + if (result.done) { + return results; } - function gather(octokit2, results, iterator2, mapFn) { - return iterator2.next().then(result => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - if (earlyExit) { - return results; - } - return gather(octokit2, results, iterator2, mapFn); - }); + let earlyExit = false; + function done() { + earlyExit = true; } - var composePaginateRest = Object.assign(paginate, { + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + if (earlyExit) { + return results; + } + return gather(octokit2, results, iterator2, mapFn); + }); +} +function isPaginatingEndpoint(arg) { + if (typeof arg === 'string') { + return paginatingEndpoints.includes(arg); + } else { + return false; + } +} +function paginateRest(octokit2) { + return { + paginate: Object.assign(paginate.bind(null, octokit2), { + iterator: iterator.bind(null, octokit2) + }) + }; +} +var VERSION6, composePaginateRest, paginatingEndpoints; +var init_dist_bundle5 = __esm({ + 'node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js'() { + VERSION6 = '0.0.0-development'; + composePaginateRest = Object.assign(paginate, { iterator }); - var paginatingEndpoints = [ + paginatingEndpoints = [ 'GET /advisories', 'GET /app/hook/deliveries', 'GET /app/installation-requests', @@ -22026,8 +24693,12 @@ var require_dist_node10 = __commonJS({ 'GET /assignments/{assignment_id}/accepted_assignments', 'GET /classrooms', 'GET /classrooms/{classroom_id}/assignments', + 'GET /enterprises/{enterprise}/code-security/configurations', + 'GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories', 'GET /enterprises/{enterprise}/dependabot/alerts', - 'GET /enterprises/{enterprise}/secret-scanning/alerts', + 'GET /enterprises/{enterprise}/teams', + 'GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships', + 'GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations', 'GET /events', 'GET /gists', 'GET /gists/public', @@ -22045,19 +24716,32 @@ var require_dist_node10 = __commonJS({ 'GET /networks/{owner}/{repo}/events', 'GET /notifications', 'GET /organizations', + 'GET /organizations/{org}/dependabot/repository-access', 'GET /orgs/{org}/actions/cache/usage-by-repository', + 'GET /orgs/{org}/actions/hosted-runners', 'GET /orgs/{org}/actions/permissions/repositories', + 'GET /orgs/{org}/actions/permissions/self-hosted-runners/repositories', + 'GET /orgs/{org}/actions/runner-groups', + 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners', + 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories', + 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners', 'GET /orgs/{org}/actions/runners', 'GET /orgs/{org}/actions/secrets', 'GET /orgs/{org}/actions/secrets/{secret_name}/repositories', 'GET /orgs/{org}/actions/variables', 'GET /orgs/{org}/actions/variables/{name}/repositories', + 'GET /orgs/{org}/attestations/repositories', + 'GET /orgs/{org}/attestations/{subject_digest}', 'GET /orgs/{org}/blocks', + 'GET /orgs/{org}/campaigns', 'GET /orgs/{org}/code-scanning/alerts', + 'GET /orgs/{org}/code-security/configurations', + 'GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories', 'GET /orgs/{org}/codespaces', 'GET /orgs/{org}/codespaces/secrets', 'GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories', 'GET /orgs/{org}/copilot/billing/seats', + 'GET /orgs/{org}/copilot/metrics', 'GET /orgs/{org}/dependabot/alerts', 'GET /orgs/{org}/dependabot/secrets', 'GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories', @@ -22065,6 +24749,9 @@ var require_dist_node10 = __commonJS({ 'GET /orgs/{org}/failed_invitations', 'GET /orgs/{org}/hooks', 'GET /orgs/{org}/hooks/{hook_id}/deliveries', + 'GET /orgs/{org}/insights/api/route-stats/{actor_type}/{actor_id}', + 'GET /orgs/{org}/insights/api/subject-stats', + 'GET /orgs/{org}/insights/api/user-stats/{user_id}', 'GET /orgs/{org}/installations', 'GET /orgs/{org}/invitations', 'GET /orgs/{org}/invitations/{invitation_id}/teams', @@ -22082,14 +24769,22 @@ var require_dist_node10 = __commonJS({ 'GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories', 'GET /orgs/{org}/personal-access-tokens', 'GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories', + 'GET /orgs/{org}/private-registries', 'GET /orgs/{org}/projects', + 'GET /orgs/{org}/projectsV2', + 'GET /orgs/{org}/projectsV2/{project_number}/fields', + 'GET /orgs/{org}/projectsV2/{project_number}/items', 'GET /orgs/{org}/properties/values', 'GET /orgs/{org}/public_members', 'GET /orgs/{org}/repos', 'GET /orgs/{org}/rulesets', 'GET /orgs/{org}/rulesets/rule-suites', + 'GET /orgs/{org}/rulesets/{ruleset_id}/history', 'GET /orgs/{org}/secret-scanning/alerts', 'GET /orgs/{org}/security-advisories', + 'GET /orgs/{org}/settings/immutable-releases/repositories', + 'GET /orgs/{org}/settings/network-configurations', + 'GET /orgs/{org}/team/{team_slug}/copilot/metrics', 'GET /orgs/{org}/teams', 'GET /orgs/{org}/teams/{team_slug}/discussions', 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', @@ -22100,9 +24795,7 @@ var require_dist_node10 = __commonJS({ 'GET /orgs/{org}/teams/{team_slug}/projects', 'GET /orgs/{org}/teams/{team_slug}/repos', 'GET /orgs/{org}/teams/{team_slug}/teams', - 'GET /projects/columns/{column_id}/cards', 'GET /projects/{project_id}/collaborators', - 'GET /projects/{project_id}/columns', 'GET /repos/{owner}/{repo}/actions/artifacts', 'GET /repos/{owner}/{repo}/actions/caches', 'GET /repos/{owner}/{repo}/actions/organization-secrets', @@ -22118,6 +24811,7 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', 'GET /repos/{owner}/{repo}/activity', 'GET /repos/{owner}/{repo}/assignees', + 'GET /repos/{owner}/{repo}/attestations/{subject_digest}', 'GET /repos/{owner}/{repo}/branches', 'GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations', 'GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs', @@ -22137,6 +24831,8 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/commits/{ref}/check-suites', 'GET /repos/{owner}/{repo}/commits/{ref}/status', 'GET /repos/{owner}/{repo}/commits/{ref}/statuses', + 'GET /repos/{owner}/{repo}/compare/{basehead}', + 'GET /repos/{owner}/{repo}/compare/{base}...{head}', 'GET /repos/{owner}/{repo}/contributors', 'GET /repos/{owner}/{repo}/dependabot/alerts', 'GET /repos/{owner}/{repo}/dependabot/secrets', @@ -22145,6 +24841,8 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/environments', 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies', 'GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps', + 'GET /repos/{owner}/{repo}/environments/{environment_name}/secrets', + 'GET /repos/{owner}/{repo}/environments/{environment_name}/variables', 'GET /repos/{owner}/{repo}/events', 'GET /repos/{owner}/{repo}/forks', 'GET /repos/{owner}/{repo}/hooks', @@ -22155,9 +24853,12 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions', 'GET /repos/{owner}/{repo}/issues/events', 'GET /repos/{owner}/{repo}/issues/{issue_number}/comments', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking', 'GET /repos/{owner}/{repo}/issues/{issue_number}/events', 'GET /repos/{owner}/{repo}/issues/{issue_number}/labels', 'GET /repos/{owner}/{repo}/issues/{issue_number}/reactions', + 'GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues', 'GET /repos/{owner}/{repo}/issues/{issue_number}/timeline', 'GET /repos/{owner}/{repo}/keys', 'GET /repos/{owner}/{repo}/labels', @@ -22180,6 +24881,7 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/rules/branches/{branch}', 'GET /repos/{owner}/{repo}/rulesets', 'GET /repos/{owner}/{repo}/rulesets/rule-suites', + 'GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history', 'GET /repos/{owner}/{repo}/secret-scanning/alerts', 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations', 'GET /repos/{owner}/{repo}/security-advisories', @@ -22189,8 +24891,6 @@ var require_dist_node10 = __commonJS({ 'GET /repos/{owner}/{repo}/teams', 'GET /repos/{owner}/{repo}/topics', 'GET /repositories', - 'GET /repositories/{repository_id}/environments/{environment_name}/secrets', - 'GET /repositories/{repository_id}/environments/{environment_name}/variables', 'GET /search/code', 'GET /search/commits', 'GET /search/issues', @@ -22235,6 +24935,7 @@ var require_dist_node10 = __commonJS({ 'GET /user/subscriptions', 'GET /user/teams', 'GET /users', + 'GET /users/{username}/attestations/{subject_digest}', 'GET /users/{username}/events', 'GET /users/{username}/events/orgs/{org}', 'GET /users/{username}/events/public', @@ -22246,6 +24947,9 @@ var require_dist_node10 = __commonJS({ 'GET /users/{username}/orgs', 'GET /users/{username}/packages', 'GET /users/{username}/projects', + 'GET /users/{username}/projectsV2', + 'GET /users/{username}/projectsV2/{project_number}/fields', + 'GET /users/{username}/projectsV2/{project_number}/items', 'GET /users/{username}/received_events', 'GET /users/{username}/received_events/public', 'GET /users/{username}/repos', @@ -22254,21 +24958,7 @@ var require_dist_node10 = __commonJS({ 'GET /users/{username}/starred', 'GET /users/{username}/subscriptions' ]; - function isPaginatingEndpoint(arg) { - if (typeof arg === 'string') { - return paginatingEndpoints.includes(arg); - } else { - return false; - } - } - function paginateRest(octokit2) { - return { - paginate: Object.assign(paginate.bind(null, octokit2), { - iterator: iterator.bind(null, octokit2) - }) - }; - } - paginateRest.VERSION = VERSION; + paginateRest.VERSION = VERSION6; } }); @@ -22307,22 +24997,35 @@ var require_utils4 = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getOctokitOptions = exports2.GitHub = exports2.defaults = exports2.context = void 0; + exports2.GitHub = exports2.defaults = exports2.context = void 0; + exports2.getOctokitOptions = getOctokitOptions; var Context = __importStar(require_context()); var Utils = __importStar(require_utils3()); - var core_1 = require_dist_node8(); - var plugin_rest_endpoint_methods_1 = require_dist_node9(); - var plugin_paginate_rest_1 = require_dist_node10(); + var core_1 = (init_dist_src2(), __toCommonJS(dist_src_exports)); + var plugin_rest_endpoint_methods_1 = (init_dist_src3(), __toCommonJS(dist_src_exports2)); + var plugin_paginate_rest_1 = (init_dist_bundle5(), __toCommonJS(dist_bundle_exports)); exports2.context = new Context.Context(); var baseUrl = Utils.getApiBaseUrl(); exports2.defaults = { @@ -22338,13 +25041,12 @@ var require_utils4 = __commonJS({ ).defaults(exports2.defaults); function getOctokitOptions(token2, options) { const opts = Object.assign({}, options || {}); - const auth = Utils.getAuthString(token2, opts); - if (auth) { - opts.auth = auth; + const auth2 = Utils.getAuthString(token2, opts); + if (auth2) { + opts.auth = auth2; } return opts; } - exports2.getOctokitOptions = getOctokitOptions; } }); @@ -22383,17 +25085,30 @@ var require_github = __commonJS({ }); var __importStar = (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + /* @__PURE__ */ (function () { + var ownKeys = function (o) { + ownKeys = + Object.getOwnPropertyNames || + function (o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== 'default') __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getOctokit = exports2.context = void 0; + exports2.context = void 0; + exports2.getOctokit = getOctokit; var Context = __importStar(require_context()); var utils_1 = require_utils4(); exports2.context = new Context.Context(); @@ -22401,7 +25116,6 @@ var require_github = __commonJS({ const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token2, options)); } - exports2.getOctokit = getOctokit; } }); @@ -22563,9 +25277,16 @@ async function run() { run(); /*! Bundled license information: -undici/lib/fetch/body.js: +undici/lib/web/fetch/body.js: (*! formdata-polyfill. MIT License. Jimmy Wärting *) -undici/lib/websocket/frame.js: +undici/lib/web/websocket/frame.js: (*! ws. MIT License. Einar Otto Stangvik *) + +@octokit/request-error/dist-src/index.js: + (* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist *) + +@octokit/request/dist-bundle/index.js: + (* v8 ignore next -- @preserve *) + (* v8 ignore else -- @preserve *) */ diff --git a/package-lock.json b/package-lock.json index a6ce33f..7e56c5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0" + "@actions/core": "^2.0.3", + "@actions/github": "^8.0.1" }, "devDependencies": { "esbuild": "^0.20.2", @@ -19,36 +19,55 @@ } }, "node_modules/@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.3.tgz", + "integrity": "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA==", + "license": "MIT", + "dependencies": { + "@actions/exec": "^2.0.0", + "@actions/http-client": "^3.0.2" + } + }, + "node_modules/@actions/exec": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", + "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", + "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" + "@actions/io": "^2.0.0" } }, "node_modules/@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-8.0.1.tgz", + "integrity": "sha512-cue7mS+kx1/2Dnc/094pitRUm+0uPXVXYVaqOdZwD15BsXATWYHW3idJDYOlyBc5gJlzAQ/w5YLU4LR8D7hjVg==", "license": "MIT", "dependencies": { - "@actions/http-client": "^2.2.0", - "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" + "@actions/http-client": "^3.0.2", + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0", + "@octokit/request": "^10.0.7", + "@octokit/request-error": "^7.1.0", + "undici": "^6.23.0" } }, "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", + "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", "license": "MIT", "dependencies": { "tunnel": "^0.0.6", - "undici": "^5.25.4" + "undici": "^6.23.0" } }, + "node_modules/@actions/io": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", + "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -440,185 +459,140 @@ "node": ">=12" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "license": "MIT", "dependencies": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/openapi-types": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", - "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==", + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", - "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "license": "MIT", "dependencies": { - "@octokit/types": "^12.6.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", - "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", "license": "MIT", "dependencies": { - "@octokit/types": "^12.6.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "@octokit/core": ">=6" } }, "node_modules/@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz", + "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "fast-content-type-parse": "^3.0.0", + "json-with-bigint": "^3.5.3", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/types": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", - "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^23.0.1" + "@octokit/openapi-types": "^27.0.0" } }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "license": "Apache-2.0" }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "license": "ISC" - }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -658,6 +632,22 @@ "@esbuild/win32-x64": "0.20.2" } }, + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/install": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", @@ -667,14 +657,11 @@ "node": ">= 0.10" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } + "node_modules/json-with-bigint": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.7.tgz", + "integrity": "sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==", + "license": "MIT" }, "node_modules/prettier": { "version": "2.3.0", @@ -697,68 +684,67 @@ } }, "node_modules/undici": { - "version": "5.28.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", - "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, "engines": { - "node": ">=14.0" + "node": ">=18.17" } }, "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "license": "ISC" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", "license": "ISC" } }, "dependencies": { "@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.3.tgz", + "integrity": "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA==", + "requires": { + "@actions/exec": "^2.0.0", + "@actions/http-client": "^3.0.2" + } + }, + "@actions/exec": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", + "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", "requires": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" + "@actions/io": "^2.0.0" } }, "@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-8.0.1.tgz", + "integrity": "sha512-cue7mS+kx1/2Dnc/094pitRUm+0uPXVXYVaqOdZwD15BsXATWYHW3idJDYOlyBc5gJlzAQ/w5YLU4LR8D7hjVg==", "requires": { - "@actions/http-client": "^2.2.0", - "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" + "@actions/http-client": "^3.0.2", + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0", + "@octokit/request": "^10.0.7", + "@octokit/request-error": "^7.1.0", + "undici": "^6.23.0" } }, "@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", + "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", "requires": { "tunnel": "^0.0.6", - "undici": "^5.25.4" + "undici": "^6.23.0" } }, + "@actions/io": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", + "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==" + }, "@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -920,138 +906,98 @@ "dev": true, "optional": true }, - "@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" - }, "@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==" }, "@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "requires": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" } }, "@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", "requires": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" } }, "@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "requires": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" } }, "@octokit/openapi-types": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", - "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==" + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==" }, "@octokit/plugin-paginate-rest": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", - "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "requires": { - "@octokit/types": "^12.6.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" - }, - "@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "requires": { - "@octokit/openapi-types": "^20.0.0" - } - } + "@octokit/types": "^16.0.0" } }, "@octokit/plugin-rest-endpoint-methods": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", - "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", "requires": { - "@octokit/types": "^12.6.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" - }, - "@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "requires": { - "@octokit/openapi-types": "^20.0.0" - } - } + "@octokit/types": "^16.0.0" } }, "@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz", + "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==", "requires": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "fast-content-type-parse": "^3.0.0", + "json-with-bigint": "^3.5.3", + "universal-user-agent": "^7.0.2" } }, "@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "requires": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^16.0.0" } }, "@octokit/types": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", - "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "requires": { - "@octokit/openapi-types": "^23.0.1" + "@octokit/openapi-types": "^27.0.0" } }, "before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==" }, "esbuild": { "version": "0.20.2", @@ -1084,19 +1030,21 @@ "@esbuild/win32-x64": "0.20.2" } }, + "fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==" + }, "install": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } + "json-with-bigint": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.7.tgz", + "integrity": "sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==" }, "prettier": { "version": "2.3.0", @@ -1110,27 +1058,14 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "undici": { - "version": "5.28.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", - "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", - "requires": { - "@fastify/busboy": "^2.0.0" - } + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==" }, "universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==" } } } diff --git a/package.json b/package.json index 5fbb559..559f8f0 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "author": "wtw", "license": "ISC", "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0" + "@actions/core": "^2.0.3", + "@actions/github": "^8.0.1" }, "devDependencies": { "esbuild": "^0.20.2",