From 49bb2edce330640f68fc55699f63236901285a40 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 11 Aug 2025 17:04:32 +0000
Subject: [PATCH 01/27] build(deps-dev): bump the development-dependencies
group across 1 directory with 3 updates (#272)
---
package-lock.json | 266 +++++++++++++++++++++++-----------------------
package.json | 6 +-
2 files changed, 136 insertions(+), 136 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 866c3a46..4d89c35c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,13 +18,13 @@
"devDependencies": {
"@octokit/openapi": "^19.1.0",
"@sinonjs/fake-timers": "^14.0.0",
- "ava": "^6.4.0",
+ "ava": "^6.4.1",
"c8": "^10.1.3",
"dotenv": "^16.5.0",
- "esbuild": "^0.25.6",
+ "esbuild": "^0.25.8",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
- "yaml": "^2.8.0"
+ "yaml": "^2.8.1"
}
},
"node_modules/@actions/core": {
@@ -80,9 +80,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz",
- "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz",
+ "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==",
"cpu": [
"ppc64"
],
@@ -97,9 +97,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz",
- "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz",
+ "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==",
"cpu": [
"arm"
],
@@ -114,9 +114,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz",
- "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz",
+ "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==",
"cpu": [
"arm64"
],
@@ -131,9 +131,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz",
- "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz",
+ "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==",
"cpu": [
"x64"
],
@@ -148,9 +148,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz",
- "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz",
+ "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==",
"cpu": [
"arm64"
],
@@ -165,9 +165,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz",
- "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz",
+ "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==",
"cpu": [
"x64"
],
@@ -182,9 +182,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz",
- "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz",
+ "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==",
"cpu": [
"arm64"
],
@@ -199,9 +199,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz",
- "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz",
+ "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==",
"cpu": [
"x64"
],
@@ -216,9 +216,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz",
- "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz",
+ "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==",
"cpu": [
"arm"
],
@@ -233,9 +233,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz",
- "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz",
+ "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==",
"cpu": [
"arm64"
],
@@ -250,9 +250,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz",
- "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz",
+ "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==",
"cpu": [
"ia32"
],
@@ -267,9 +267,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz",
- "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz",
+ "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==",
"cpu": [
"loong64"
],
@@ -284,9 +284,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz",
- "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz",
+ "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==",
"cpu": [
"mips64el"
],
@@ -301,9 +301,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz",
- "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz",
+ "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==",
"cpu": [
"ppc64"
],
@@ -318,9 +318,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz",
- "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz",
+ "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==",
"cpu": [
"riscv64"
],
@@ -335,9 +335,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz",
- "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz",
+ "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==",
"cpu": [
"s390x"
],
@@ -352,9 +352,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz",
- "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz",
+ "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==",
"cpu": [
"x64"
],
@@ -369,9 +369,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz",
- "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz",
+ "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==",
"cpu": [
"arm64"
],
@@ -386,9 +386,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz",
- "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz",
+ "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==",
"cpu": [
"x64"
],
@@ -403,9 +403,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz",
- "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz",
+ "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==",
"cpu": [
"arm64"
],
@@ -420,9 +420,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz",
- "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz",
+ "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==",
"cpu": [
"x64"
],
@@ -437,9 +437,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz",
- "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz",
+ "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==",
"cpu": [
"arm64"
],
@@ -454,9 +454,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz",
- "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz",
+ "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==",
"cpu": [
"x64"
],
@@ -471,9 +471,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz",
- "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz",
+ "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==",
"cpu": [
"arm64"
],
@@ -488,9 +488,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz",
- "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz",
+ "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==",
"cpu": [
"ia32"
],
@@ -505,9 +505,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz",
- "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz",
+ "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==",
"cpu": [
"x64"
],
@@ -981,9 +981,9 @@
}
},
"node_modules/acorn": {
- "version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -1096,23 +1096,23 @@
"license": "MIT"
},
"node_modules/ava": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/ava/-/ava-6.4.0.tgz",
- "integrity": "sha512-aeFapuBZtaGwVMlFFf074SZJ0bPcdmAdJdsvhHMp+XaOnC2DgeMzopb7yyYAhulNGRJQfUK/SIBYo2PoX7+gtw==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/ava/-/ava-6.4.1.tgz",
+ "integrity": "sha512-vxmPbi1gZx9zhAjHBgw81w/iEDKcrokeRk/fqDTyA2DQygZ0o+dUGRHFOtX8RA5N0heGJTTsIk7+xYxitDb61Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vercel/nft": "^0.29.4",
- "acorn": "^8.14.1",
+ "acorn": "^8.15.0",
"acorn-walk": "^8.3.4",
"ansi-styles": "^6.2.1",
"arrgv": "^1.0.2",
"arrify": "^3.0.0",
"callsites": "^4.2.0",
- "cbor": "^10.0.3",
+ "cbor": "^10.0.9",
"chalk": "^5.4.1",
"chunkd": "^2.0.1",
- "ci-info": "^4.2.0",
+ "ci-info": "^4.3.0",
"ci-parallel-vars": "^1.0.1",
"cli-truncate": "^4.0.0",
"code-excerpt": "^4.0.0",
@@ -1120,7 +1120,7 @@
"concordance": "^5.0.4",
"currently-unhandled": "^0.4.1",
"debug": "^4.4.1",
- "emittery": "^1.1.0",
+ "emittery": "^1.2.0",
"figures": "^6.1.0",
"globby": "^14.1.0",
"ignore-by-default": "^2.1.0",
@@ -1265,16 +1265,16 @@
}
},
"node_modules/cbor": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.3.tgz",
- "integrity": "sha512-72Jnj81xMsqepqdcSdf2+fflz/UDsThOHy5hj2MW5F5xzHL8Oa0KQ6I6V9CwVUPxg5pf+W9xp6W2KilaRXWWtw==",
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.10.tgz",
+ "integrity": "sha512-EirvzAg0G4okCsdTfTjLWHU+tToQ2V2ptO3577Vyy2GOTeVJad99uCIuDqdK7ppFRRcEuigyJY6TJ59wv5JpSg==",
"dev": true,
"license": "MIT",
"dependencies": {
"nofilter": "^3.0.2"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
},
"node_modules/chalk": {
@@ -1307,9 +1307,9 @@
"dev": true
},
"node_modules/ci-info": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
- "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz",
+ "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==",
"dev": true,
"funding": [
{
@@ -1642,9 +1642,9 @@
"dev": true
},
"node_modules/emittery": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.1.0.tgz",
- "integrity": "sha512-rsX7ktqARv/6UQDgMaLfIqUWAEzzbCQiVh7V9rhDXp6c37yoJcks12NVD+XPkgl4AEavmNhVfrhGoqYwIsMYYA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.0.tgz",
+ "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1661,9 +1661,9 @@
"dev": true
},
"node_modules/esbuild": {
- "version": "0.25.6",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz",
- "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==",
+ "version": "0.25.8",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz",
+ "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1674,32 +1674,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.6",
- "@esbuild/android-arm": "0.25.6",
- "@esbuild/android-arm64": "0.25.6",
- "@esbuild/android-x64": "0.25.6",
- "@esbuild/darwin-arm64": "0.25.6",
- "@esbuild/darwin-x64": "0.25.6",
- "@esbuild/freebsd-arm64": "0.25.6",
- "@esbuild/freebsd-x64": "0.25.6",
- "@esbuild/linux-arm": "0.25.6",
- "@esbuild/linux-arm64": "0.25.6",
- "@esbuild/linux-ia32": "0.25.6",
- "@esbuild/linux-loong64": "0.25.6",
- "@esbuild/linux-mips64el": "0.25.6",
- "@esbuild/linux-ppc64": "0.25.6",
- "@esbuild/linux-riscv64": "0.25.6",
- "@esbuild/linux-s390x": "0.25.6",
- "@esbuild/linux-x64": "0.25.6",
- "@esbuild/netbsd-arm64": "0.25.6",
- "@esbuild/netbsd-x64": "0.25.6",
- "@esbuild/openbsd-arm64": "0.25.6",
- "@esbuild/openbsd-x64": "0.25.6",
- "@esbuild/openharmony-arm64": "0.25.6",
- "@esbuild/sunos-x64": "0.25.6",
- "@esbuild/win32-arm64": "0.25.6",
- "@esbuild/win32-ia32": "0.25.6",
- "@esbuild/win32-x64": "0.25.6"
+ "@esbuild/aix-ppc64": "0.25.8",
+ "@esbuild/android-arm": "0.25.8",
+ "@esbuild/android-arm64": "0.25.8",
+ "@esbuild/android-x64": "0.25.8",
+ "@esbuild/darwin-arm64": "0.25.8",
+ "@esbuild/darwin-x64": "0.25.8",
+ "@esbuild/freebsd-arm64": "0.25.8",
+ "@esbuild/freebsd-x64": "0.25.8",
+ "@esbuild/linux-arm": "0.25.8",
+ "@esbuild/linux-arm64": "0.25.8",
+ "@esbuild/linux-ia32": "0.25.8",
+ "@esbuild/linux-loong64": "0.25.8",
+ "@esbuild/linux-mips64el": "0.25.8",
+ "@esbuild/linux-ppc64": "0.25.8",
+ "@esbuild/linux-riscv64": "0.25.8",
+ "@esbuild/linux-s390x": "0.25.8",
+ "@esbuild/linux-x64": "0.25.8",
+ "@esbuild/netbsd-arm64": "0.25.8",
+ "@esbuild/netbsd-x64": "0.25.8",
+ "@esbuild/openbsd-arm64": "0.25.8",
+ "@esbuild/openbsd-x64": "0.25.8",
+ "@esbuild/openharmony-arm64": "0.25.8",
+ "@esbuild/sunos-x64": "0.25.8",
+ "@esbuild/win32-arm64": "0.25.8",
+ "@esbuild/win32-ia32": "0.25.8",
+ "@esbuild/win32-x64": "0.25.8"
}
},
"node_modules/escalade": {
@@ -3881,9 +3881,9 @@
"dev": true
},
"node_modules/yaml": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
- "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
"dev": true,
"license": "ISC",
"bin": {
diff --git a/package.json b/package.json
index 9fd9bff5..3407d235 100644
--- a/package.json
+++ b/package.json
@@ -21,13 +21,13 @@
"devDependencies": {
"@octokit/openapi": "^19.1.0",
"@sinonjs/fake-timers": "^14.0.0",
- "ava": "^6.4.0",
+ "ava": "^6.4.1",
"c8": "^10.1.3",
"dotenv": "^16.5.0",
- "esbuild": "^0.25.6",
+ "esbuild": "^0.25.8",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
- "yaml": "^2.8.0"
+ "yaml": "^2.8.1"
},
"release": {
"branches": [
From fcc6c288e5046f2c3614766b9abb3c41fc5b56c6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 11 Aug 2025 17:34:49 +0000
Subject: [PATCH 02/27] build(deps-dev): bump dotenv from 16.5.0 to 17.2.1
(#269)
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 4d89c35c..def36935 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^16.5.0",
+ "dotenv": "^17.2.1",
"esbuild": "^0.25.8",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
@@ -1623,9 +1623,9 @@
}
},
"node_modules/dotenv": {
- "version": "16.5.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
- "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz",
+ "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
diff --git a/package.json b/package.json
index 3407d235..145240f0 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^16.5.0",
+ "dotenv": "^17.2.1",
"esbuild": "^0.25.8",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
From d00315e88cbf932b0754df7a395f556a41b682e4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 13 Aug 2025 18:21:11 +0000
Subject: [PATCH 03/27] build(deps): bump actions/checkout from 4 to 5 (#279)
---
.github/workflows/publish-immutable-action.yml | 2 +-
.github/workflows/release.yml | 2 +-
.github/workflows/test.yml | 4 ++--
.github/workflows/update-permission-inputs.yml | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/publish-immutable-action.yml b/.github/workflows/publish-immutable-action.yml
index fd100eae..0e65c071 100644
--- a/.github/workflows/publish-immutable-action.yml
+++ b/.github/workflows/publish-immutable-action.yml
@@ -12,6 +12,6 @@ jobs:
id-token: write
packages: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Publish Immutable Action
uses: actions/publish-immutable-action@v0.0.4
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index dbce1703..b9a70469 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
# build local version to create token
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 05129a6c..b1308429 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -19,7 +19,7 @@ jobs:
name: Integration
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
@@ -35,7 +35,7 @@ jobs:
# do not run from forks, as forks don’t have access to repository secrets
if: github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: 20
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index c3cc2baf..5e2ea1bc 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -18,7 +18,7 @@ jobs:
update-permission-inputs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version-file: .node-version
From 8ab05a8a84060745bdc8f0b4f6d8f403c29e06b8 Mon Sep 17 00:00:00 2001
From: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
Date: Fri, 15 Aug 2025 12:34:57 -0700
Subject: [PATCH 04/27] Add beta branch support for releases (#282)
Updated release workflow and semantic-release config to include the beta
branch and pattern-matched branches for release automation. The beta
branch is now marked as a prerelease.
---
.github/workflows/release.yml | 2 ++
package.json | 6 +++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b9a70469..ac1c7abb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -3,7 +3,9 @@ name: release
on:
push:
branches:
+ - "*.x"
- main
+ - beta
permissions:
contents: write
diff --git a/package.json b/package.json
index 145240f0..a3f3f32f 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,11 @@
"release": {
"branches": [
"+([0-9]).x",
- "main"
+ "main",
+ {
+ "name": "beta",
+ "prerelease": true
+ }
],
"plugins": [
"@semantic-release/commit-analyzer",
From 525760a53ff3ae31661275c3461bff7181a54c90 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 12 Sep 2025 18:20:41 +0000
Subject: [PATCH 05/27] build(deps): bump stefanzweifel/git-auto-commit-action
from 5.2.0 to 6.0.1 (#260)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action)
from 5.2.0 to 6.0.1.
Release notes
Sourced from stefanzweifel/git-auto-commit-action's
releases.
v6.0.1
Fixed
v6.0.0
Added
- Throw error early if repository is in a detached state (#357)
Fixed
Removed
- Remove support for
create_branch,
skip_checkout, skip_Fetch (#314)
Changelog
Sourced from stefanzweifel/git-auto-commit-action's
changelog.
Changelog
All notable changes to this project will be documented in this
file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
TBD
v6.0.1
- 2025-06-11
Fixed
v6.0.0
- 2025-06-10
Added
- Throw error early if repository is in a detached state (#357)
Fixed
Removed
- Remove support for
create_branch,
skip_checkout, skip_Fetch (#314)
v5.2.0
- 2025-04-19
Added
- Add
create_git_tag_only option to skip commiting and
always create a git-tag. (#364)
@zMynxx
- Add Test for
create_git_tag_only feature (#367)
@stefanzweifel
Fixed
v5.1.0
- 2025-01-11
Changed
Fixed
... (truncated)
Commits
778341a
Merge pull request #379
from stefanzweifel/disable-detached-state-check
33b203d
Disable Check if Repo is in Detached State
a82d80a
Update CHANGELOG
3cc016c
Merge pull request #375
from stefanzweifel/v6-next
ddb7ae4
Merge pull request #376
from Dreamsorcerer/patch-1
b001e5f
Apply suggestions from code review
6494dc6
Fix PAT instructions with Dependabot
7618051
Add deprecated inputs to fix unbound variable issue
ae11462
Merge pull request #371
from stefanzweifel/dependabot/npm_and_yarn/bats-1.12.0
3058f91
Bump bats from 1.11.1 to 1.12.0
- Additional commits viewable in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/update-permission-inputs.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index 5e2ea1bc..804dfebe 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -28,6 +28,6 @@ jobs:
- name: Run permission inputs update script
run: node scripts/update-permission-inputs.js
- name: Commit changes
- uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0
+ uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0 # v6.0.1
with:
commit_message: 'feat: update permission inputs'
From 5d7307be63501c0070c634b0ae8fec74e8208130 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 12 Sep 2025 18:22:08 +0000
Subject: [PATCH 06/27] fix(deps): bump @octokit/request from 9.2.3 to 10.0.2
(#256)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [@octokit/request](https://github.com/octokit/request.js) from
9.2.3 to 10.0.2.
Release notes
Sourced from @octokit/request's
releases.
v10.0.2
10.0.2
(2025-05-20)
Bug Fixes
v10.0.1
10.0.1
(2025-05-20)
Bug Fixes
- deps: update dependency fast-content-type-parse to
v3 (#747)
(8cf6d84)
v10.0.0
10.0.0
(2025-05-20)
Continuous Integration
BREAKING CHANGES
-
Drop support for NodeJS v18
-
build: set minimal node version in build script to v20
-
ci: stop testing against NodeJS v18
Commits
fe8bb4b
fix(deps): update octokit monorepo (major) (#759)
a4c1f27
chore(deps): update dependency undici to v7 (#761)
8cf6d84
fix(deps): update dependency fast-content-type-parse to v3 (#747)
1eefea8
ci: stop testing against NodeJS v18 (#756)
b73d921
chore(deps): update dependency undici to v6.21.2 [security] (#758)
9820bbe
build(deps): bump vite from 6.2.6 to 6.3.4 (#755)
6150627
ci: replace OCTOKITBOT_PROJECT_ACTION_TOKEN and
OCTOKITBOT_PAT with a tok...
bcd76d7
build(deps): bump vite from 6.2.5 to 6.2.6 (#754)
- See full diff in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
Dependabot will merge this PR once it's up-to-date and CI passes on it,
as requested by @parkerbxyz.
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
package-lock.json | 272 ++++++++++++++++++++++++++++++++++++++++++++--
package.json | 2 +-
2 files changed, 261 insertions(+), 13 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index def36935..bde93464 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"dependencies": {
"@actions/core": "^1.11.1",
"@octokit/auth-app": "^7.2.1",
- "@octokit/request": "^9.2.2",
+ "@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.8.0"
},
@@ -712,6 +712,51 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-app/node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@octokit/auth-oauth-app": {
"version": "8.1.4",
"resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.4.tgz",
@@ -728,6 +773,51 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-app/node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@octokit/auth-oauth-device": {
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.5.tgz",
@@ -743,6 +833,51 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-device/node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@octokit/auth-oauth-user": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.4.tgz",
@@ -759,7 +894,7 @@
"node": ">= 18"
}
},
- "node_modules/@octokit/endpoint": {
+ "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": {
"version": "10.1.4",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
"integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
@@ -772,6 +907,51 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/auth-oauth-user/node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
+ "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/@octokit/oauth-authorization-url": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz",
@@ -796,6 +976,51 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": {
+ "version": "10.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
+ "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": {
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
+ "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^10.1.4",
+ "@octokit/request-error": "^6.1.8",
+ "@octokit/types": "^14.0.0",
+ "fast-content-type-parse": "^2.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@octokit/openapi": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi/-/openapi-19.1.0.tgz",
@@ -813,19 +1038,19 @@
"license": "MIT"
},
"node_modules/@octokit/request": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz",
- "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.3.tgz",
+ "integrity": "sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==",
"license": "MIT",
"dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
+ "@octokit/endpoint": "^11.0.0",
+ "@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
+ "fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@octokit/request-error": {
@@ -840,6 +1065,18 @@
"node": ">= 18"
}
},
+ "node_modules/@octokit/request/node_modules/@octokit/request-error": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
+ "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^14.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/@octokit/types": {
"version": "14.0.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
@@ -1804,9 +2041,20 @@
}
},
"node_modules/fast-content-type-parse": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz",
- "integrity": "sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA=="
+ "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/fast-diff": {
"version": "1.3.0",
diff --git a/package.json b/package.json
index a3f3f32f..4fef1c00 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
"dependencies": {
"@actions/core": "^1.11.1",
"@octokit/auth-app": "^7.2.1",
- "@octokit/request": "^9.2.2",
+ "@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.8.0"
},
From def152b8a737443d7af6c5722c6389146fe90c90 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 12 Sep 2025 18:22:38 +0000
Subject: [PATCH 07/27] build(release): 2.1.2 [skip ci]
## [2.1.2](https://github.com/actions/create-github-app-token/compare/v2.1.1...v2.1.2) (2025-09-12)
### Bug Fixes
* **deps:** bump @octokit/request from 9.2.3 to 10.0.2 ([#256](https://github.com/actions/create-github-app-token/issues/256)) ([5d7307b](https://github.com/actions/create-github-app-token/commit/5d7307be63501c0070c634b0ae8fec74e8208130))
---
dist/main.cjs | 5169 +++++++++++++++++++++++++++++++++++----------
dist/post.cjs | 4 +-
package-lock.json | 4 +-
package.json | 2 +-
4 files changed, 4071 insertions(+), 1108 deletions(-)
diff --git a/dist/main.cjs b/dist/main.cjs
index 905c9fb5..ad2e8a8f 100644
--- a/dist/main.cjs
+++ b/dist/main.cjs
@@ -3646,11 +3646,11 @@ var require_util2 = __commonJS({
}
return location;
}
- function requestCurrentURL(request2) {
- return request2.urlList[request2.urlList.length - 1];
+ function requestCurrentURL(request7) {
+ return request7.urlList[request7.urlList.length - 1];
}
- function requestBadPort(request2) {
- const url = requestCurrentURL(request2);
+ function requestBadPort(request7) {
+ const url = requestCurrentURL(request7);
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
return "blocked";
}
@@ -3717,7 +3717,7 @@ var require_util2 = __commonJS({
}
return true;
}
- function setRequestReferrerPolicyOnRedirect(request2, actualResponse) {
+ function setRequestReferrerPolicyOnRedirect(request7, actualResponse) {
const { headersList } = actualResponse;
const policyHeader = (headersList.get("referrer-policy") ?? "").split(",");
let policy = "";
@@ -3731,7 +3731,7 @@ var require_util2 = __commonJS({
}
}
if (policy !== "") {
- request2.referrerPolicy = policy;
+ request7.referrerPolicy = policy;
}
}
function crossOriginResourcePolicyCheck() {
@@ -3748,33 +3748,33 @@ var require_util2 = __commonJS({
header = httpRequest.mode;
httpRequest.headersList.set("sec-fetch-mode", header);
}
- function appendRequestOriginHeader(request2) {
- let serializedOrigin = request2.origin;
- if (request2.responseTainting === "cors" || request2.mode === "websocket") {
+ function appendRequestOriginHeader(request7) {
+ let serializedOrigin = request7.origin;
+ if (request7.responseTainting === "cors" || request7.mode === "websocket") {
if (serializedOrigin) {
- request2.headersList.append("origin", serializedOrigin);
+ request7.headersList.append("origin", serializedOrigin);
}
- } else if (request2.method !== "GET" && request2.method !== "HEAD") {
- switch (request2.referrerPolicy) {
+ } else if (request7.method !== "GET" && request7.method !== "HEAD") {
+ switch (request7.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))) {
+ if (request7.origin && urlHasHttpsScheme(request7.origin) && !urlHasHttpsScheme(requestCurrentURL(request7))) {
serializedOrigin = null;
}
break;
case "same-origin":
- if (!sameOrigin(request2, requestCurrentURL(request2))) {
+ if (!sameOrigin(request7, requestCurrentURL(request7))) {
serializedOrigin = null;
}
break;
default:
}
if (serializedOrigin) {
- request2.headersList.append("origin", serializedOrigin);
+ request7.headersList.append("origin", serializedOrigin);
}
}
}
@@ -3806,26 +3806,26 @@ var require_util2 = __commonJS({
referrerPolicy: policyContainer.referrerPolicy
};
}
- function determineRequestsReferrer(request2) {
- const policy = request2.referrerPolicy;
+ function determineRequestsReferrer(request7) {
+ const policy = request7.referrerPolicy;
assert(policy);
let referrerSource = null;
- if (request2.referrer === "client") {
+ if (request7.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;
+ } else if (request7.referrer instanceof URL) {
+ referrerSource = request7.referrer;
}
let referrerURL = stripURLForReferrer(referrerSource);
const referrerOrigin = stripURLForReferrer(referrerSource, true);
if (referrerURL.toString().length > 4096) {
referrerURL = referrerOrigin;
}
- const areSameOrigin = sameOrigin(request2, referrerURL);
- const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request2.url);
+ const areSameOrigin = sameOrigin(request7, referrerURL);
+ const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request7.url);
switch (policy) {
case "origin":
return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true);
@@ -3836,7 +3836,7 @@ var require_util2 = __commonJS({
case "origin-when-cross-origin":
return areSameOrigin ? referrerURL : referrerOrigin;
case "strict-origin-when-cross-origin": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
if (sameOrigin(referrerURL, currentURL)) {
return referrerURL;
}
@@ -3996,7 +3996,7 @@ var require_util2 = __commonJS({
}
return true;
}
- function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
+ function tryUpgradeRequestToAPotentiallyTrustworthyURL(request7) {
}
function sameOrigin(A, B) {
if (A.origin === B.origin && A.origin === "null") {
@@ -5884,25 +5884,25 @@ var require_request = __commonJS({
static [kHTTP2BuildRequest](origin, opts, handler) {
const headers = opts.headers;
opts = { ...opts, headers: null };
- const request2 = new _Request(origin, opts, handler);
- request2.headers = {};
+ const request7 = new _Request(origin, opts, handler);
+ request7.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(request2, headers[i], headers[i + 1], true);
+ processHeader(request7, 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(request2, key, headers[key], true);
+ processHeader(request7, key, headers[key], true);
}
} else if (headers != null) {
throw new InvalidArgumentError("headers must be an object or an array");
}
- return request2;
+ return request7;
}
static [kHTTP2CopyHeaders](raw) {
const rawHeaders = raw.split("\r\n");
@@ -5927,26 +5927,26 @@ var require_request = __commonJS({
return skipAppend ? val : `${key}: ${val}\r
`;
}
- function processHeader(request2, key, val, skipAppend = false) {
+ function processHeader(request7, 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 (request2.host === null && key.length === 4 && key.toLowerCase() === "host") {
+ if (request7.host === null && key.length === 4 && key.toLowerCase() === "host") {
if (headerCharRegex.exec(val) !== null) {
throw new InvalidArgumentError(`invalid ${key} header`);
}
- request2.host = val;
- } else if (request2.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {
- request2.contentLength = parseInt(val, 10);
- if (!Number.isFinite(request2.contentLength)) {
+ request7.host = val;
+ } else if (request7.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {
+ request7.contentLength = parseInt(val, 10);
+ if (!Number.isFinite(request7.contentLength)) {
throw new InvalidArgumentError("invalid content-length header");
}
- } else if (request2.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {
- request2.contentType = val;
- if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
- else request2.headers += processHeaderValue(key, val);
+ } else if (request7.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {
+ request7.contentType = val;
+ if (skipAppend) request7.headers[key] = processHeaderValue(key, val, skipAppend);
+ else request7.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") {
@@ -5954,7 +5954,7 @@ var require_request = __commonJS({
if (value !== "close" && value !== "keep-alive") {
throw new InvalidArgumentError("invalid connection header");
} else if (value === "close") {
- request2.reset = true;
+ request7.reset = true;
}
} else if (key.length === 10 && key.toLowerCase() === "keep-alive") {
throw new InvalidArgumentError("invalid keep-alive header");
@@ -5968,15 +5968,15 @@ var require_request = __commonJS({
if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) {
if (skipAppend) {
- if (request2.headers[key]) request2.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`;
- else request2.headers[key] = processHeaderValue(key, val[i], skipAppend);
+ if (request7.headers[key]) request7.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`;
+ else request7.headers[key] = processHeaderValue(key, val[i], skipAppend);
} else {
- request2.headers += processHeaderValue(key, val[i]);
+ request7.headers += processHeaderValue(key, val[i]);
}
}
} else {
- if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
- else request2.headers += processHeaderValue(key, val);
+ if (skipAppend) request7.headers[key] = processHeaderValue(key, val, skipAppend);
+ else request7.headers += processHeaderValue(key, val);
}
}
}
@@ -7140,10 +7140,10 @@ var require_client = __commonJS({
}
[kDispatch](opts, handler) {
const origin = opts.origin || this[kUrl].origin;
- const request2 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler);
- this[kQueue].push(request2);
+ const request7 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler);
+ this[kQueue].push(request7);
if (this[kResuming]) {
- } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
+ } else if (util.bodyLength(request7.body) == null && util.isIterable(request7.body)) {
this[kResuming] = 1;
process.nextTick(resume, this);
} else {
@@ -7167,8 +7167,8 @@ var require_client = __commonJS({
return new Promise((resolve) => {
const requests = this[kQueue].splice(this[kPendingIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- errorRequest(this, request2, err);
+ const request7 = requests[i];
+ errorRequest(this, request7, err);
}
const callback = () => {
if (this[kClosedResolve]) {
@@ -7216,13 +7216,13 @@ var require_client = __commonJS({
assert(this[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- errorRequest(this, request2, err);
+ const request7 = requests[i];
+ errorRequest(this, request7, err);
}
} else if (client[kRunning] > 0) {
- const request2 = client[kQueue][client[kRunningIdx]];
+ const request7 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- errorRequest(client, request2, err);
+ errorRequest(client, request7, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -7430,8 +7430,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- if (!request2) {
+ const request7 = client[kQueue][client[kRunningIdx]];
+ if (!request7) {
return -1;
}
}
@@ -7471,12 +7471,12 @@ var require_client = __commonJS({
onUpgrade(head) {
const { upgrade, client, socket, headers, statusCode } = this;
assert(upgrade);
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
assert(!socket.destroyed);
assert(socket === client[kSocket]);
assert(!this.paused);
- assert(request2.upgrade || request2.method === "CONNECT");
+ assert(request7.upgrade || request7.method === "CONNECT");
this.statusCode = null;
this.statusText = "";
this.shouldKeepAlive = null;
@@ -7493,7 +7493,7 @@ var require_client = __commonJS({
client[kQueue][client[kRunningIdx]++] = null;
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
try {
- request2.onUpgrade(statusCode, headers, socket);
+ request7.onUpgrade(statusCode, headers, socket);
} catch (err) {
util.destroy(socket, err);
}
@@ -7504,8 +7504,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- if (!request2) {
+ const request7 = client[kQueue][client[kRunningIdx]];
+ if (!request7) {
return -1;
}
assert(!this.upgrade);
@@ -7514,23 +7514,23 @@ var require_client = __commonJS({
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
return -1;
}
- if (upgrade && !request2.upgrade) {
+ if (upgrade && !request7.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.
- request2.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
+ request7.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
if (this.statusCode >= 200) {
- const bodyTimeout = request2.bodyTimeout != null ? request2.bodyTimeout : client[kBodyTimeout];
+ const bodyTimeout = request7.bodyTimeout != null ? request7.bodyTimeout : client[kBodyTimeout];
this.setTimeout(bodyTimeout, TIMEOUT_BODY);
} else if (this.timeout) {
if (this.timeout.refresh) {
this.timeout.refresh();
}
}
- if (request2.method === "CONNECT") {
+ if (request7.method === "CONNECT") {
assert(client[kRunning] === 1);
this.upgrade = true;
return 2;
@@ -7561,11 +7561,11 @@ var require_client = __commonJS({
} else {
socket[kReset] = true;
}
- const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false;
- if (request2.aborted) {
+ const pause = request7.onHeaders(statusCode, headers, this.resume, statusText) === false;
+ if (request7.aborted) {
return -1;
}
- if (request2.method === "HEAD") {
+ if (request7.method === "HEAD") {
return 1;
}
if (statusCode < 200) {
@@ -7582,8 +7582,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
assert.strictEqual(this.timeoutType, TIMEOUT_BODY);
if (this.timeout) {
if (this.timeout.refresh) {
@@ -7596,7 +7596,7 @@ var require_client = __commonJS({
return -1;
}
this.bytesRead += buf.length;
- if (request2.onData(buf) === false) {
+ if (request7.onData(buf) === false) {
return constants.ERROR.PAUSED;
}
}
@@ -7608,8 +7608,8 @@ var require_client = __commonJS({
if (upgrade) {
return;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
assert(statusCode >= 100);
this.statusCode = null;
this.statusText = "";
@@ -7623,11 +7623,11 @@ var require_client = __commonJS({
if (statusCode < 200) {
return;
}
- if (request2.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
+ if (request7.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
util.destroy(socket, new ResponseContentLengthMismatchError());
return -1;
}
- request2.onComplete(headers);
+ request7.onComplete(headers);
client[kQueue][client[kRunningIdx]++] = null;
if (socket[kWriting]) {
assert.strictEqual(client[kRunning], 0);
@@ -7685,8 +7685,8 @@ var require_client = __commonJS({
assert(client[kPendingIdx] === client[kRunningIdx]);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- errorRequest(client, request2, err);
+ const request7 = requests[i];
+ errorRequest(client, request7, err);
}
assert(client[kSize] === 0);
}
@@ -7716,13 +7716,13 @@ var require_client = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- errorRequest(client, request2, err);
+ const request7 = requests[i];
+ errorRequest(client, request7, err);
}
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
- const request2 = client[kQueue][client[kRunningIdx]];
+ const request7 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- errorRequest(client, request2, err);
+ errorRequest(client, request7, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -7855,8 +7855,8 @@ var require_client = __commonJS({
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]++];
- errorRequest(client, request2, err);
+ const request7 = client[kQueue][client[kPendingIdx]++];
+ errorRequest(client, request7, err);
}
} else {
onError(client, err);
@@ -7910,8 +7910,8 @@ var require_client = __commonJS({
}
} else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
- const request3 = client[kQueue][client[kRunningIdx]];
- const headersTimeout = request3.headersTimeout != null ? request3.headersTimeout : client[kHeadersTimeout];
+ const request8 = client[kQueue][client[kRunningIdx]];
+ const headersTimeout = request8.headersTimeout != null ? request8.headersTimeout : client[kHeadersTimeout];
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
}
}
@@ -7933,13 +7933,13 @@ var require_client = __commonJS({
if (client[kRunning] >= (client[kPipelining] || 1)) {
return;
}
- const request2 = client[kQueue][client[kPendingIdx]];
- if (client[kUrl].protocol === "https:" && client[kServerName] !== request2.servername) {
+ const request7 = client[kQueue][client[kPendingIdx]];
+ if (client[kUrl].protocol === "https:" && client[kServerName] !== request7.servername) {
if (client[kRunning] > 0) {
return;
}
- client[kServerName] = request2.servername;
- if (socket && socket.servername !== request2.servername) {
+ client[kServerName] = request7.servername;
+ if (socket && socket.servername !== request7.servername) {
util.destroy(socket, new InformationalError("servername changed"));
return;
}
@@ -7954,16 +7954,16 @@ var require_client = __commonJS({
if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {
return;
}
- if (client[kRunning] > 0 && !request2.idempotent) {
+ if (client[kRunning] > 0 && !request7.idempotent) {
return;
}
- if (client[kRunning] > 0 && (request2.upgrade || request2.method === "CONNECT")) {
+ if (client[kRunning] > 0 && (request7.upgrade || request7.method === "CONNECT")) {
return;
}
- if (client[kRunning] > 0 && util.bodyLength(request2.body) !== 0 && (util.isStream(request2.body) || util.isAsyncIterable(request2.body))) {
+ if (client[kRunning] > 0 && util.bodyLength(request7.body) !== 0 && (util.isStream(request7.body) || util.isAsyncIterable(request7.body))) {
return;
}
- if (!request2.aborted && write(client, request2)) {
+ if (!request7.aborted && write(client, request7)) {
client[kPendingIdx]++;
} else {
client[kQueue].splice(client[kPendingIdx], 1);
@@ -7973,12 +7973,12 @@ var require_client = __commonJS({
function shouldSendContentLength(method) {
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
}
- function write(client, request2) {
+ function write(client, request7) {
if (client[kHTTPConnVersion] === "h2") {
- writeH2(client, client[kHTTP2Session], request2);
+ writeH2(client, client[kHTTP2Session], request7);
return;
}
- const { body, method, path, host, upgrade, headers, blocking, reset } = request2;
+ const { body, method, path, host, upgrade, headers, blocking, reset } = request7;
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
if (body && typeof body.read === "function") {
body.read(0);
@@ -7986,31 +7986,31 @@ var require_client = __commonJS({
const bodyLength = util.bodyLength(body);
let contentLength = bodyLength;
if (contentLength === null) {
- contentLength = request2.contentLength;
+ contentLength = request7.contentLength;
}
if (contentLength === 0 && !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength !== null && request2.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength !== null && request7.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- errorRequest(client, request2, new RequestContentLengthMismatchError());
+ errorRequest(client, request7, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
}
const socket = client[kSocket];
try {
- request2.onConnect((err) => {
- if (request2.aborted || request2.completed) {
+ request7.onConnect((err) => {
+ if (request7.aborted || request7.completed) {
return;
}
- errorRequest(client, request2, err || new RequestAbortedError());
+ errorRequest(client, request7, err || new RequestAbortedError());
util.destroy(socket, new InformationalError("aborted"));
});
} catch (err) {
- errorRequest(client, request2, err);
+ errorRequest(client, request7, err);
}
- if (request2.aborted) {
+ if (request7.aborted) {
return false;
}
if (method === "HEAD") {
@@ -8049,7 +8049,7 @@ upgrade: ${upgrade}\r
header += headers;
}
if (channels.sendHeaders.hasSubscribers) {
- channels.sendHeaders.publish({ request: request2, headers: header, socket });
+ channels.sendHeaders.publish({ request: request7, headers: header, socket });
}
if (!body || bodyLength === 0) {
if (contentLength === 0) {
@@ -8061,7 +8061,7 @@ upgrade: ${upgrade}\r
socket.write(`${header}\r
`, "latin1");
}
- request2.onRequestSent();
+ request7.onRequestSent();
} else if (util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
socket.cork();
@@ -8070,46 +8070,46 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(body);
socket.uncork();
- request2.onBodySent(body);
- request2.onRequestSent();
+ request7.onBodySent(body);
+ request7.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
- writeIterable({ body: body.stream(), client, request: request2, socket, contentLength, header, expectsPayload });
+ writeIterable({ body: body.stream(), client, request: request7, socket, contentLength, header, expectsPayload });
} else {
- writeBlob({ body, client, request: request2, socket, contentLength, header, expectsPayload });
+ writeBlob({ body, client, request: request7, socket, contentLength, header, expectsPayload });
}
} else if (util.isStream(body)) {
- writeStream({ body, client, request: request2, socket, contentLength, header, expectsPayload });
+ writeStream({ body, client, request: request7, socket, contentLength, header, expectsPayload });
} else if (util.isIterable(body)) {
- writeIterable({ body, client, request: request2, socket, contentLength, header, expectsPayload });
+ writeIterable({ body, client, request: request7, socket, contentLength, header, expectsPayload });
} else {
assert(false);
}
return true;
}
- function writeH2(client, session, request2) {
- const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2;
+ function writeH2(client, session, request7) {
+ const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request7;
let headers;
if (typeof reqHeaders === "string") headers = Request[kHTTP2CopyHeaders](reqHeaders.trim());
else headers = reqHeaders;
if (upgrade) {
- errorRequest(client, request2, new Error("Upgrade not supported for H2"));
+ errorRequest(client, request7, new Error("Upgrade not supported for H2"));
return false;
}
try {
- request2.onConnect((err) => {
- if (request2.aborted || request2.completed) {
+ request7.onConnect((err) => {
+ if (request7.aborted || request7.completed) {
return;
}
- errorRequest(client, request2, err || new RequestAbortedError());
+ errorRequest(client, request7, err || new RequestAbortedError());
});
} catch (err) {
- errorRequest(client, request2, err);
+ errorRequest(client, request7, err);
}
- if (request2.aborted) {
+ if (request7.aborted) {
return false;
}
let stream;
@@ -8120,11 +8120,11 @@ upgrade: ${upgrade}\r
session.ref();
stream = session.request(headers, { endStream: false, signal });
if (stream.id && !stream.pending) {
- request2.onUpgrade(null, null, stream);
+ request7.onUpgrade(null, null, stream);
++h2State.openStreams;
} else {
stream.once("ready", () => {
- request2.onUpgrade(null, null, stream);
+ request7.onUpgrade(null, null, stream);
++h2State.openStreams;
});
}
@@ -8142,14 +8142,14 @@ upgrade: ${upgrade}\r
}
let contentLength = util.bodyLength(body);
if (contentLength == null) {
- contentLength = request2.contentLength;
+ contentLength = request7.contentLength;
}
if (contentLength === 0 || !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength != null && request2.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength != null && request7.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- errorRequest(client, request2, new RequestContentLengthMismatchError());
+ errorRequest(client, request7, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
@@ -8174,15 +8174,15 @@ upgrade: ${upgrade}\r
++h2State.openStreams;
stream.once("response", (headers2) => {
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
- if (request2.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === false) {
+ if (request7.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === false) {
stream.pause();
}
});
stream.once("end", () => {
- request2.onComplete([]);
+ request7.onComplete([]);
});
stream.on("data", (chunk) => {
- if (request2.onData(chunk) === false) {
+ if (request7.onData(chunk) === false) {
stream.pause();
}
});
@@ -8200,7 +8200,7 @@ upgrade: ${upgrade}\r
});
stream.once("frameError", (type, code) => {
const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`);
- errorRequest(client, request2, err);
+ errorRequest(client, request7, err);
if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
h2State.streams -= 1;
util.destroy(stream, err);
@@ -8209,20 +8209,20 @@ upgrade: ${upgrade}\r
return true;
function writeBodyH2() {
if (!body) {
- request2.onRequestSent();
+ request7.onRequestSent();
} else if (util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
stream.cork();
stream.write(body);
stream.uncork();
stream.end();
- request2.onBodySent(body);
- request2.onRequestSent();
+ request7.onBodySent(body);
+ request7.onRequestSent();
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
writeIterable({
client,
- request: request2,
+ request: request7,
contentLength,
h2stream: stream,
expectsPayload,
@@ -8234,7 +8234,7 @@ upgrade: ${upgrade}\r
writeBlob({
body,
client,
- request: request2,
+ request: request7,
contentLength,
expectsPayload,
h2stream: stream,
@@ -8246,7 +8246,7 @@ upgrade: ${upgrade}\r
writeStream({
body,
client,
- request: request2,
+ request: request7,
contentLength,
expectsPayload,
socket: client[kSocket],
@@ -8257,7 +8257,7 @@ upgrade: ${upgrade}\r
writeIterable({
body,
client,
- request: request2,
+ request: request7,
contentLength,
expectsPayload,
header: "",
@@ -8269,11 +8269,11 @@ upgrade: ${upgrade}\r
}
}
}
- function writeStream({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
+ function writeStream({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
if (client[kHTTPConnVersion] === "h2") {
let onPipeData = function(chunk) {
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
};
const pipe = pipeline(
body,
@@ -8283,7 +8283,7 @@ upgrade: ${upgrade}\r
util.destroy(body, err);
util.destroy(h2stream, err);
} else {
- request2.onRequestSent();
+ request7.onRequestSent();
}
}
);
@@ -8295,7 +8295,7 @@ upgrade: ${upgrade}\r
return;
}
let finished = false;
- const writer = new AsyncWriter({ socket, request: request2, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ socket, request: request7, contentLength, client, expectsPayload, header });
const onData = function(chunk) {
if (finished) {
return;
@@ -8351,7 +8351,7 @@ upgrade: ${upgrade}\r
}
socket.on("drain", onDrain).on("error", onFinished);
}
- async function writeBlob({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
+ async function writeBlob({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
assert(contentLength === body.size, "blob body must have content length");
const isH2 = client[kHTTPConnVersion] === "h2";
try {
@@ -8371,8 +8371,8 @@ upgrade: ${upgrade}\r
socket.write(buffer);
socket.uncork();
}
- request2.onBodySent(buffer);
- request2.onRequestSent();
+ request7.onBodySent(buffer);
+ request7.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -8381,7 +8381,7 @@ upgrade: ${upgrade}\r
util.destroy(isH2 ? h2stream : socket, err);
}
}
- async function writeIterable({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
+ async function writeIterable({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -8407,7 +8407,7 @@ upgrade: ${upgrade}\r
throw socket[kError];
}
const res = h2stream.write(chunk);
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
if (!res) {
await waitForDrain();
}
@@ -8415,14 +8415,14 @@ upgrade: ${upgrade}\r
} catch (err) {
h2stream.destroy(err);
} finally {
- request2.onRequestSent();
+ request7.onRequestSent();
h2stream.end();
h2stream.off("close", onDrain).off("drain", onDrain);
}
return;
}
socket.on("close", onDrain).on("drain", onDrain);
- const writer = new AsyncWriter({ socket, request: request2, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ socket, request: request7, contentLength, client, expectsPayload, header });
try {
for await (const chunk of body) {
if (socket[kError]) {
@@ -8440,9 +8440,9 @@ upgrade: ${upgrade}\r
}
}
var AsyncWriter = class {
- constructor({ socket, request: request2, contentLength, client, expectsPayload, header }) {
+ constructor({ socket, request: request7, contentLength, client, expectsPayload, header }) {
this.socket = socket;
- this.request = request2;
+ this.request = request7;
this.contentLength = contentLength;
this.client = client;
this.bytesWritten = 0;
@@ -8451,7 +8451,7 @@ upgrade: ${upgrade}\r
socket[kWriting] = true;
}
write(chunk) {
- const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this;
+ const { socket, request: request7, contentLength, client, bytesWritten, expectsPayload, header } = this;
if (socket[kError]) {
throw socket[kError];
}
@@ -8490,7 +8490,7 @@ ${len.toString(16)}\r
this.bytesWritten += len;
const ret = socket.write(chunk);
socket.uncork();
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
if (!ret) {
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
if (socket[kParser].timeout.refresh) {
@@ -8501,8 +8501,8 @@ ${len.toString(16)}\r
return ret;
}
end() {
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this;
- request2.onRequestSent();
+ const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request7 } = this;
+ request7.onRequestSent();
socket[kWriting] = false;
if (socket[kError]) {
throw socket[kError];
@@ -8545,10 +8545,10 @@ ${len.toString(16)}\r
}
}
};
- function errorRequest(client, request2, err) {
+ function errorRequest(client, request7, err) {
try {
- request2.onError(err);
- assert(request2.aborted);
+ request7.onError(err);
+ assert(request7.aborted);
} catch (err2) {
client.emit("error", err2);
}
@@ -9661,10 +9661,10 @@ var require_api_request = __commonJS({
}
}
};
- function request2(opts, callback) {
+ function request7(opts, callback) {
if (callback === void 0) {
return new Promise((resolve, reject) => {
- request2.call(this, opts, (err, data) => {
+ request7.call(this, opts, (err, data) => {
return err ? reject(err) : resolve(data);
});
});
@@ -9679,7 +9679,7 @@ var require_api_request = __commonJS({
queueMicrotask(() => callback(err, { opaque }));
}
}
- module2.exports = request2;
+ module2.exports = request7;
module2.exports.RequestHandler = RequestHandler;
}
});
@@ -10393,7 +10393,7 @@ var require_mock_utils = __commonJS({
const headersMatch = matchHeaders(mockDispatch2, headers);
return pathMatch && methodMatch && bodyMatch && headersMatch;
}
- function getResponseData2(data) {
+ function getResponseData7(data) {
if (Buffer.isBuffer(data)) {
return data;
} else if (typeof data === "object") {
@@ -10498,7 +10498,7 @@ var require_mock_utils = __commonJS({
body.then((newData) => handleReply(mockDispatches, newData));
return;
}
- const responseData = getResponseData2(body);
+ const responseData = getResponseData7(body);
const responseHeaders = generateKeyValues(headers);
const responseTrailers = generateKeyValues(trailers);
handler.abort = nop;
@@ -10555,7 +10555,7 @@ var require_mock_utils = __commonJS({
}
}
module2.exports = {
- getResponseData: getResponseData2,
+ getResponseData: getResponseData7,
getMockDispatch,
addMockDispatch,
deleteMockDispatch,
@@ -10577,7 +10577,7 @@ var require_mock_utils = __commonJS({
var require_mock_interceptor = __commonJS({
"node_modules/@actions/http-client/node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) {
"use strict";
- var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils();
+ var { getResponseData: getResponseData7, buildKey, addMockDispatch } = require_mock_utils();
var {
kDispatches,
kDispatchKey,
@@ -10649,7 +10649,7 @@ var require_mock_interceptor = __commonJS({
this[kContentLength] = false;
}
createMockScopeDispatchData(statusCode, data, responseOptions = {}) {
- const responseData = getResponseData2(data);
+ const responseData = getResponseData7(data);
const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {};
const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers };
const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers };
@@ -12357,7 +12357,7 @@ var require_request2 = __commonJS({
policyContainer: makePolicyContainer()
}
};
- let request2 = null;
+ let request7 = null;
let fallbackMode = null;
const baseUrl2 = this[kRealm].settingsObject.baseUrl;
let signal = null;
@@ -12373,17 +12373,17 @@ var require_request2 = __commonJS({
"Request cannot be constructed from a URL that includes credentials: " + input
);
}
- request2 = makeRequest({ urlList: [parsedURL] });
+ request7 = makeRequest({ urlList: [parsedURL] });
fallbackMode = "cors";
} else {
assert(input instanceof _Request);
- request2 = input[kState];
+ request7 = input[kState];
signal = input[kSignal];
}
const origin = this[kRealm].settingsObject.origin;
let window = "client";
- if (request2.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request2.window, origin)) {
- window = request2.window;
+ if (request7.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request7.window, origin)) {
+ window = request7.window;
}
if (init.window != null) {
throw new TypeError(`'window' option '${window}' must be null`);
@@ -12391,66 +12391,66 @@ var require_request2 = __commonJS({
if ("window" in init) {
window = "no-window";
}
- request2 = makeRequest({
+ request7 = 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,
+ method: request7.method,
// header list A copy of request’s header list.
// undici implementation note: headersList is cloned in makeRequest
- headersList: request2.headersList,
+ headersList: request7.headersList,
// unsafe-request flag Set.
- unsafeRequest: request2.unsafeRequest,
+ unsafeRequest: request7.unsafeRequest,
// client This’s relevant settings object.
client: this[kRealm].settingsObject,
// window window.
window,
// priority request’s priority.
- priority: request2.priority,
+ priority: request7.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,
+ origin: request7.origin,
// referrer request’s referrer.
- referrer: request2.referrer,
+ referrer: request7.referrer,
// referrer policy request’s referrer policy.
- referrerPolicy: request2.referrerPolicy,
+ referrerPolicy: request7.referrerPolicy,
// mode request’s mode.
- mode: request2.mode,
+ mode: request7.mode,
// credentials mode request’s credentials mode.
- credentials: request2.credentials,
+ credentials: request7.credentials,
// cache mode request’s cache mode.
- cache: request2.cache,
+ cache: request7.cache,
// redirect mode request’s redirect mode.
- redirect: request2.redirect,
+ redirect: request7.redirect,
// integrity metadata request’s integrity metadata.
- integrity: request2.integrity,
+ integrity: request7.integrity,
// keepalive request’s keepalive.
- keepalive: request2.keepalive,
+ keepalive: request7.keepalive,
// reload-navigation flag request’s reload-navigation flag.
- reloadNavigation: request2.reloadNavigation,
+ reloadNavigation: request7.reloadNavigation,
// history-navigation flag request’s history-navigation flag.
- historyNavigation: request2.historyNavigation,
+ historyNavigation: request7.historyNavigation,
// URL list A clone of request’s URL list.
- urlList: [...request2.urlList]
+ urlList: [...request7.urlList]
});
const initHasKey = Object.keys(init).length !== 0;
if (initHasKey) {
- if (request2.mode === "navigate") {
- request2.mode = "same-origin";
+ if (request7.mode === "navigate") {
+ request7.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];
+ request7.reloadNavigation = false;
+ request7.historyNavigation = false;
+ request7.origin = "client";
+ request7.referrer = "client";
+ request7.referrerPolicy = "";
+ request7.url = request7.urlList[request7.urlList.length - 1];
+ request7.urlList = [request7.url];
}
if (init.referrer !== void 0) {
const referrer = init.referrer;
if (referrer === "") {
- request2.referrer = "no-referrer";
+ request7.referrer = "no-referrer";
} else {
let parsedReferrer;
try {
@@ -12459,14 +12459,14 @@ var require_request2 = __commonJS({
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)) {
- request2.referrer = "client";
+ request7.referrer = "client";
} else {
- request2.referrer = parsedReferrer;
+ request7.referrer = parsedReferrer;
}
}
}
if (init.referrerPolicy !== void 0) {
- request2.referrerPolicy = init.referrerPolicy;
+ request7.referrerPolicy = init.referrerPolicy;
}
let mode;
if (init.mode !== void 0) {
@@ -12481,27 +12481,27 @@ var require_request2 = __commonJS({
});
}
if (mode != null) {
- request2.mode = mode;
+ request7.mode = mode;
}
if (init.credentials !== void 0) {
- request2.credentials = init.credentials;
+ request7.credentials = init.credentials;
}
if (init.cache !== void 0) {
- request2.cache = init.cache;
+ request7.cache = init.cache;
}
- if (request2.cache === "only-if-cached" && request2.mode !== "same-origin") {
+ if (request7.cache === "only-if-cached" && request7.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;
+ request7.redirect = init.redirect;
}
if (init.integrity != null) {
- request2.integrity = String(init.integrity);
+ request7.integrity = String(init.integrity);
}
if (init.keepalive !== void 0) {
- request2.keepalive = Boolean(init.keepalive);
+ request7.keepalive = Boolean(init.keepalive);
}
if (init.method !== void 0) {
let method = init.method;
@@ -12512,12 +12512,12 @@ var require_request2 = __commonJS({
throw new TypeError(`'${method}' HTTP method is unsupported.`);
}
method = normalizeMethodRecord[method] ?? normalizeMethod(method);
- request2.method = method;
+ request7.method = method;
}
if (init.signal !== void 0) {
signal = init.signal;
}
- this[kState] = request2;
+ this[kState] = request7;
const ac = new AbortController();
this[kSignal] = ac.signal;
this[kSignal][kRealm] = this[kRealm];
@@ -12551,13 +12551,13 @@ var require_request2 = __commonJS({
}
}
this[kHeaders] = new Headers(kConstruct);
- this[kHeaders][kHeadersList] = request2.headersList;
+ this[kHeaders][kHeadersList] = request7.headersList;
this[kHeaders][kGuard] = "request";
this[kHeaders][kRealm] = this[kRealm];
if (mode === "no-cors") {
- if (!corsSafeListedMethodsSet.has(request2.method)) {
+ if (!corsSafeListedMethodsSet.has(request7.method)) {
throw new TypeError(
- `'${request2.method} is unsupported in no-cors mode.`
+ `'${request7.method} is unsupported in no-cors mode.`
);
}
this[kHeaders][kGuard] = "request-no-cors";
@@ -12576,14 +12576,14 @@ var require_request2 = __commonJS({
}
}
const inputBody = input instanceof _Request ? input[kState].body : null;
- if ((init.body != null || inputBody != null) && (request2.method === "GET" || request2.method === "HEAD")) {
+ if ((init.body != null || inputBody != null) && (request7.method === "GET" || request7.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
+ request7.keepalive
);
initBody = extractedBody;
if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) {
@@ -12595,12 +12595,12 @@ var require_request2 = __commonJS({
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") {
+ if (request7.mode !== "same-origin" && request7.mode !== "cors") {
throw new TypeError(
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
);
}
- request2.useCORSPreflightFlag = true;
+ request7.useCORSPreflightFlag = true;
}
let finalBody = inputOrInitBody;
if (initBody == null && inputBody != null) {
@@ -12770,7 +12770,7 @@ var require_request2 = __commonJS({
};
mixinBody(Request);
function makeRequest(init) {
- const request2 = {
+ const request7 = {
method: "GET",
localURLsOnly: false,
unsafeRequest: false,
@@ -12809,13 +12809,13 @@ var require_request2 = __commonJS({
...init,
headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()
};
- request2.url = request2.urlList[0];
- return request2;
+ request7.url = request7.urlList[0];
+ return request7;
}
- function cloneRequest(request2) {
- const newRequest = makeRequest({ ...request2, body: null });
- if (request2.body != null) {
- newRequest.body = cloneBody(request2.body);
+ function cloneRequest(request7) {
+ const newRequest = makeRequest({ ...request7, body: null });
+ if (request7.body != null) {
+ newRequest.body = cloneBody(request7.body);
}
return newRequest;
}
@@ -13048,14 +13048,14 @@ var require_fetch = __commonJS({
p.reject(e);
return p.promise;
}
- const request2 = requestObject[kState];
+ const request7 = requestObject[kState];
if (requestObject.signal.aborted) {
- abortFetch(p, request2, null, requestObject.signal.reason);
+ abortFetch(p, request7, null, requestObject.signal.reason);
return p.promise;
}
- const globalObject = request2.client.globalObject;
+ const globalObject = request7.client.globalObject;
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
- request2.serviceWorkers = "none";
+ request7.serviceWorkers = "none";
}
let responseObject = null;
const relevantRealm = null;
@@ -13067,7 +13067,7 @@ var require_fetch = __commonJS({
locallyAborted = true;
assert(controller != null);
controller.abort(requestObject.signal.reason);
- abortFetch(p, request2, responseObject, requestObject.signal.reason);
+ abortFetch(p, request7, responseObject, requestObject.signal.reason);
}
);
const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch");
@@ -13076,7 +13076,7 @@ var require_fetch = __commonJS({
return Promise.resolve();
}
if (response.aborted) {
- abortFetch(p, request2, responseObject, controller.serializedAbortReason);
+ abortFetch(p, request7, responseObject, controller.serializedAbortReason);
return Promise.resolve();
}
if (response.type === "error") {
@@ -13094,7 +13094,7 @@ var require_fetch = __commonJS({
p.resolve(responseObject);
};
controller = fetching({
- request: request2,
+ request: request7,
processResponseEndOfBody: handleFetchDone,
processResponse,
dispatcher: init.dispatcher ?? getGlobalDispatcher()
@@ -13139,13 +13139,13 @@ var require_fetch = __commonJS({
performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState);
}
}
- function abortFetch(p, request2, responseObject, error) {
+ function abortFetch(p, request7, responseObject, error) {
if (!error) {
error = new DOMException2("The operation was aborted.", "AbortError");
}
p.reject(error);
- if (request2.body != null && isReadable(request2.body?.stream)) {
- request2.body.stream.cancel(error).catch((err) => {
+ if (request7.body != null && isReadable(request7.body?.stream)) {
+ request7.body.stream.cancel(error).catch((err) => {
if (err.code === "ERR_INVALID_STATE") {
return;
}
@@ -13166,7 +13166,7 @@ var require_fetch = __commonJS({
}
}
function fetching({
- request: request2,
+ request: request7,
processRequestBodyChunkLength,
processRequestEndOfBody,
processResponse,
@@ -13178,9 +13178,9 @@ var require_fetch = __commonJS({
}) {
let taskDestination = null;
let crossOriginIsolatedCapability = false;
- if (request2.client != null) {
- taskDestination = request2.client.globalObject;
- crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability;
+ if (request7.client != null) {
+ taskDestination = request7.client.globalObject;
+ crossOriginIsolatedCapability = request7.client.crossOriginIsolatedCapability;
}
const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
const timingInfo = createOpaqueTimingInfo({
@@ -13188,7 +13188,7 @@ var require_fetch = __commonJS({
});
const fetchParams = {
controller: new Fetch(dispatcher),
- request: request2,
+ request: request7,
timingInfo,
processRequestBodyChunkLength,
processRequestEndOfBody,
@@ -13198,32 +13198,32 @@ var require_fetch = __commonJS({
taskDestination,
crossOriginIsolatedCapability
};
- assert(!request2.body || request2.body.stream);
- if (request2.window === "client") {
- request2.window = request2.client?.globalObject?.constructor?.name === "Window" ? request2.client : "no-window";
+ assert(!request7.body || request7.body.stream);
+ if (request7.window === "client") {
+ request7.window = request7.client?.globalObject?.constructor?.name === "Window" ? request7.client : "no-window";
}
- if (request2.origin === "client") {
- request2.origin = request2.client?.origin;
+ if (request7.origin === "client") {
+ request7.origin = request7.client?.origin;
}
- if (request2.policyContainer === "client") {
- if (request2.client != null) {
- request2.policyContainer = clonePolicyContainer(
- request2.client.policyContainer
+ if (request7.policyContainer === "client") {
+ if (request7.client != null) {
+ request7.policyContainer = clonePolicyContainer(
+ request7.client.policyContainer
);
} else {
- request2.policyContainer = makePolicyContainer();
+ request7.policyContainer = makePolicyContainer();
}
}
- if (!request2.headersList.contains("accept")) {
+ if (!request7.headersList.contains("accept")) {
const value = "*/*";
- request2.headersList.append("accept", value);
+ request7.headersList.append("accept", value);
}
- if (!request2.headersList.contains("accept-language")) {
- request2.headersList.append("accept-language", "*");
+ if (!request7.headersList.contains("accept-language")) {
+ request7.headersList.append("accept-language", "*");
}
- if (request2.priority === null) {
+ if (request7.priority === null) {
}
- if (subresourceSet.has(request2.destination)) {
+ if (subresourceSet.has(request7.destination)) {
}
mainFetch(fetchParams).catch((err) => {
fetchParams.controller.terminate(err);
@@ -13231,50 +13231,50 @@ var require_fetch = __commonJS({
return fetchParams.controller;
}
async function mainFetch(fetchParams, recursive = false) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
- if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) {
+ if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
response = makeNetworkError("local URLs only");
}
- tryUpgradeRequestToAPotentiallyTrustworthyURL(request2);
- if (requestBadPort(request2) === "blocked") {
+ tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
+ if (requestBadPort(request7) === "blocked") {
response = makeNetworkError("bad port");
}
- if (request2.referrerPolicy === "") {
- request2.referrerPolicy = request2.policyContainer.referrerPolicy;
+ if (request7.referrerPolicy === "") {
+ request7.referrerPolicy = request7.policyContainer.referrerPolicy;
}
- if (request2.referrer !== "no-referrer") {
- request2.referrer = determineRequestsReferrer(request2);
+ if (request7.referrer !== "no-referrer") {
+ request7.referrer = determineRequestsReferrer(request7);
}
if (response === null) {
response = await (async () => {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
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"
+ sameOrigin(currentURL, request7.url) && request7.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")
+ (request7.mode === "navigate" || request7.mode === "websocket")
) {
- request2.responseTainting = "basic";
+ request7.responseTainting = "basic";
return await schemeFetch(fetchParams);
}
- if (request2.mode === "same-origin") {
+ if (request7.mode === "same-origin") {
return makeNetworkError('request mode cannot be "same-origin"');
}
- if (request2.mode === "no-cors") {
- if (request2.redirect !== "follow") {
+ if (request7.mode === "no-cors") {
+ if (request7.redirect !== "follow") {
return makeNetworkError(
'redirect mode cannot be "follow" for "no-cors" request'
);
}
- request2.responseTainting = "opaque";
+ request7.responseTainting = "opaque";
return await schemeFetch(fetchParams);
}
- if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
+ if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
return makeNetworkError("URL scheme must be a HTTP(S) scheme");
}
- request2.responseTainting = "cors";
+ request7.responseTainting = "cors";
return await httpFetch(fetchParams);
})();
}
@@ -13282,13 +13282,13 @@ var require_fetch = __commonJS({
return response;
}
if (response.status !== 0 && !response.internalResponse) {
- if (request2.responseTainting === "cors") {
+ if (request7.responseTainting === "cors") {
}
- if (request2.responseTainting === "basic") {
+ if (request7.responseTainting === "basic") {
response = filterResponse(response, "basic");
- } else if (request2.responseTainting === "cors") {
+ } else if (request7.responseTainting === "cors") {
response = filterResponse(response, "cors");
- } else if (request2.responseTainting === "opaque") {
+ } else if (request7.responseTainting === "opaque") {
response = filterResponse(response, "opaque");
} else {
assert(false);
@@ -13296,26 +13296,26 @@ var require_fetch = __commonJS({
}
let internalResponse = response.status === 0 ? response : response.internalResponse;
if (internalResponse.urlList.length === 0) {
- internalResponse.urlList.push(...request2.urlList);
+ internalResponse.urlList.push(...request7.urlList);
}
- if (!request2.timingAllowFailed) {
+ if (!request7.timingAllowFailed) {
response.timingAllowPassed = true;
}
- if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request2.headers.contains("range")) {
+ if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range")) {
response = internalResponse = makeNetworkError();
}
- if (response.status !== 0 && (request2.method === "HEAD" || request2.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
+ if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
internalResponse.body = null;
fetchParams.controller.dump = true;
}
- if (request2.integrity) {
+ if (request7.integrity) {
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
- if (request2.responseTainting === "opaque" || response.body == null) {
+ if (request7.responseTainting === "opaque" || response.body == null) {
processBodyError(response.error);
return;
}
const processBody = (bytes) => {
- if (!bytesMatch(bytes, request2.integrity)) {
+ if (!bytesMatch(bytes, request7.integrity)) {
processBodyError("integrity mismatch");
return;
}
@@ -13331,8 +13331,8 @@ var require_fetch = __commonJS({
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
}
- const { request: request2 } = fetchParams;
- const { protocol: scheme } = requestCurrentURL(request2);
+ const { request: request7 } = fetchParams;
+ const { protocol: scheme } = requestCurrentURL(request7);
switch (scheme) {
case "about:": {
return Promise.resolve(makeNetworkError("about scheme is not supported"));
@@ -13341,12 +13341,12 @@ var require_fetch = __commonJS({
if (!resolveObjectURL) {
resolveObjectURL = require("buffer").resolveObjectURL;
}
- const blobURLEntry = requestCurrentURL(request2);
+ const blobURLEntry = requestCurrentURL(request7);
if (blobURLEntry.search.length !== 0) {
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
}
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString());
- if (request2.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
+ if (request7.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
return Promise.resolve(makeNetworkError("invalid method"));
}
const bodyWithType = safelyExtractBody(blobURLEntryObject);
@@ -13364,7 +13364,7 @@ var require_fetch = __commonJS({
return Promise.resolve(response);
}
case "data:": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
const dataURLStruct = dataURLProcessor(currentURL);
if (dataURLStruct === "failure") {
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
@@ -13446,41 +13446,41 @@ var require_fetch = __commonJS({
}
}
async function httpFetch(fetchParams) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
let actualResponse = null;
const timingInfo = fetchParams.timingInfo;
- if (request2.serviceWorkers === "all") {
+ if (request7.serviceWorkers === "all") {
}
if (response === null) {
- if (request2.redirect === "follow") {
- request2.serviceWorkers = "none";
+ if (request7.redirect === "follow") {
+ request7.serviceWorkers = "none";
}
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
- if (request2.responseTainting === "cors" && corsCheck(request2, response) === "failure") {
+ if (request7.responseTainting === "cors" && corsCheck(request7, response) === "failure") {
return makeNetworkError("cors failure");
}
- if (TAOCheck(request2, response) === "failure") {
- request2.timingAllowFailed = true;
+ if (TAOCheck(request7, response) === "failure") {
+ request7.timingAllowFailed = true;
}
}
- if ((request2.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
- request2.origin,
- request2.client,
- request2.destination,
+ if ((request7.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
+ request7.origin,
+ request7.client,
+ request7.destination,
actualResponse
) === "blocked") {
return makeNetworkError("blocked");
}
if (redirectStatusSet.has(actualResponse.status)) {
- if (request2.redirect !== "manual") {
+ if (request7.redirect !== "manual") {
fetchParams.controller.connection.destroy();
}
- if (request2.redirect === "error") {
+ if (request7.redirect === "error") {
response = makeNetworkError("unexpected redirect");
- } else if (request2.redirect === "manual") {
+ } else if (request7.redirect === "manual") {
response = actualResponse;
- } else if (request2.redirect === "follow") {
+ } else if (request7.redirect === "follow") {
response = await httpRedirectFetch(fetchParams, response);
} else {
assert(false);
@@ -13490,13 +13490,13 @@ var require_fetch = __commonJS({
return response;
}
function httpRedirectFetch(fetchParams, response) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
const actualResponse = response.internalResponse ? response.internalResponse : response;
let locationURL;
try {
locationURL = responseLocationURL(
actualResponse,
- requestCurrentURL(request2).hash
+ requestCurrentURL(request7).hash
);
if (locationURL == null) {
return response;
@@ -13507,63 +13507,63 @@ var require_fetch = __commonJS({
if (!urlIsHttpHttpsScheme(locationURL)) {
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
}
- if (request2.redirectCount === 20) {
+ if (request7.redirectCount === 20) {
return Promise.resolve(makeNetworkError("redirect count exceeded"));
}
- request2.redirectCount += 1;
- if (request2.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request2, locationURL)) {
+ request7.redirectCount += 1;
+ if (request7.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request7, locationURL)) {
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
}
- if (request2.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
+ if (request7.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) {
+ if (actualResponse.status !== 303 && request7.body != null && request7.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;
+ if ([301, 302].includes(actualResponse.status) && request7.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request7.method)) {
+ request7.method = "GET";
+ request7.body = null;
for (const headerName of requestBodyHeader) {
- request2.headersList.delete(headerName);
+ request7.headersList.delete(headerName);
}
}
- if (!sameOrigin(requestCurrentURL(request2), locationURL)) {
- request2.headersList.delete("authorization");
- request2.headersList.delete("proxy-authorization", true);
- request2.headersList.delete("cookie");
- request2.headersList.delete("host");
+ if (!sameOrigin(requestCurrentURL(request7), locationURL)) {
+ request7.headersList.delete("authorization");
+ request7.headersList.delete("proxy-authorization", true);
+ request7.headersList.delete("cookie");
+ request7.headersList.delete("host");
}
- if (request2.body != null) {
- assert(request2.body.source != null);
- request2.body = safelyExtractBody(request2.body.source)[0];
+ if (request7.body != null) {
+ assert(request7.body.source != null);
+ request7.body = safelyExtractBody(request7.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);
+ request7.urlList.push(locationURL);
+ setRequestReferrerPolicyOnRedirect(request7, actualResponse);
return mainFetch(fetchParams, true);
}
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
- const request2 = fetchParams.request;
+ const request7 = 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") {
+ if (request7.window === "no-window" && request7.redirect === "error") {
httpFetchParams = fetchParams;
- httpRequest = request2;
+ httpRequest = request7;
} else {
- httpRequest = makeRequest(request2);
+ httpRequest = makeRequest(request7);
httpFetchParams = { ...fetchParams };
httpFetchParams.request = httpRequest;
}
- const includeCredentials = request2.credentials === "include" || request2.credentials === "same-origin" && request2.responseTainting === "basic";
+ const includeCredentials = request7.credentials === "include" || request7.credentials === "same-origin" && request7.responseTainting === "basic";
const contentLength = httpRequest.body ? httpRequest.body.length : null;
let contentLengthHeaderValue = null;
if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) {
@@ -13640,7 +13640,7 @@ var require_fetch = __commonJS({
}
response.requestIncludesCredentials = includeCredentials;
if (response.status === 407) {
- if (request2.window === "no-window") {
+ if (request7.window === "no-window") {
return makeNetworkError();
}
if (isCancelled(fetchParams)) {
@@ -13652,7 +13652,7 @@ var require_fetch = __commonJS({
// 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)
+ (request7.body == null || request7.body.source != null)
) {
if (isCancelled(fetchParams)) {
return makeAppropriateNetworkError(fetchParams);
@@ -13680,21 +13680,21 @@ var require_fetch = __commonJS({
}
}
};
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
const timingInfo = fetchParams.timingInfo;
const httpCache = null;
if (httpCache == null) {
- request2.cache = "no-store";
+ request7.cache = "no-store";
}
const newConnection = forceNewConnection ? "yes" : "no";
- if (request2.mode === "websocket") {
+ if (request7.mode === "websocket") {
} else {
}
let requestBody = null;
- if (request2.body == null && fetchParams.processRequestEndOfBody) {
+ if (request7.body == null && fetchParams.processRequestEndOfBody) {
queueMicrotask(() => fetchParams.processRequestEndOfBody());
- } else if (request2.body != null) {
+ } else if (request7.body != null) {
const processBodyChunk = async function* (bytes) {
if (isCancelled(fetchParams)) {
return;
@@ -13722,7 +13722,7 @@ var require_fetch = __commonJS({
};
requestBody = async function* () {
try {
- for await (const bytes of request2.body.stream) {
+ for await (const bytes of request7.body.stream) {
yield* processBodyChunk(bytes);
}
processEndOfBody();
@@ -13834,17 +13834,17 @@ var require_fetch = __commonJS({
}
return response;
async function dispatch({ body }) {
- const url = requestCurrentURL(request2);
+ const url = requestCurrentURL(request7);
const agent = fetchParams.controller.dispatcher;
return new Promise((resolve, reject) => agent.dispatch(
{
path: url.pathname + url.search,
origin: url.origin,
- method: request2.method,
- body: fetchParams.controller.dispatcher.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body,
- headers: request2.headersList.entries,
+ method: request7.method,
+ body: fetchParams.controller.dispatcher.isMockActive ? request7.body && (request7.body.source || request7.body.stream) : body,
+ headers: request7.headersList.entries,
maxRedirections: 0,
- upgrade: request2.mode === "websocket" ? "websocket" : void 0
+ upgrade: request7.mode === "websocket" ? "websocket" : void 0
},
{
body: null,
@@ -13890,8 +13890,8 @@ var require_fetch = __commonJS({
}
this.body = new Readable({ read: resume });
const decoders = [];
- const willFollow = request2.redirect === "follow" && location && redirectStatusSet.has(status);
- if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const willFollow = request7.redirect === "follow" && location && redirectStatusSet.has(status);
+ if (request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
for (const coding of codings) {
if (coding === "x-gzip" || coding === "gzip") {
decoders.push(zlib.createGunzip({
@@ -14861,34 +14861,34 @@ var require_cache = __commonJS({
}
this.#relevantRequestResponseList = arguments[1];
}
- async match(request2, options = {}) {
+ async match(request7, options = {}) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" });
- request2 = webidl.converters.RequestInfo(request2);
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options);
- const p = await this.matchAll(request2, options);
+ const p = await this.matchAll(request7, options);
if (p.length === 0) {
return;
}
return p[0];
}
- async matchAll(request2 = void 0, options = {}) {
+ async matchAll(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
- if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request2 !== void 0) {
- if (request2 instanceof Request) {
- r = request2[kState];
+ if (request7 !== void 0) {
+ if (request7 instanceof Request) {
+ r = request7[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request2 === "string") {
- r = new Request(request2)[kState];
+ } else if (typeof request7 === "string") {
+ r = new Request(request7)[kState];
}
}
const responses = [];
- if (request2 === void 0) {
+ if (request7 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
responses.push(requestResponse[1]);
}
@@ -14910,11 +14910,11 @@ var require_cache = __commonJS({
}
return Object.freeze(responseList);
}
- async add(request2) {
+ async add(request7) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" });
- request2 = webidl.converters.RequestInfo(request2);
- const requests = [request2];
+ request7 = webidl.converters.RequestInfo(request7);
+ const requests = [request7];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
}
@@ -14924,11 +14924,11 @@ var require_cache = __commonJS({
requests = webidl.converters["sequence"](requests);
const responsePromises = [];
const requestList = [];
- for (const request2 of requests) {
- if (typeof request2 === "string") {
+ for (const request7 of requests) {
+ if (typeof request7 === "string") {
continue;
}
- const r = request2[kState];
+ const r = request7[kState];
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
throw webidl.errors.exception({
header: "Cache.addAll",
@@ -14937,8 +14937,8 @@ var require_cache = __commonJS({
}
}
const fetchControllers = [];
- for (const request2 of requests) {
- const r = new Request(request2)[kState];
+ for (const request7 of requests) {
+ const r = new Request(request7)[kState];
if (!urlIsHttpHttpsScheme(r.url)) {
throw webidl.errors.exception({
header: "Cache.addAll",
@@ -15016,16 +15016,16 @@ var require_cache = __commonJS({
});
return cacheJobPromise.promise;
}
- async put(request2, response) {
+ async put(request7, response) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" });
- request2 = webidl.converters.RequestInfo(request2);
+ request7 = webidl.converters.RequestInfo(request7);
response = webidl.converters.Response(response);
let innerRequest = null;
- if (request2 instanceof Request) {
- innerRequest = request2[kState];
+ if (request7 instanceof Request) {
+ innerRequest = request7[kState];
} else {
- innerRequest = new Request(request2)[kState];
+ innerRequest = new Request(request7)[kState];
}
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
throw webidl.errors.exception({
@@ -15096,20 +15096,20 @@ var require_cache = __commonJS({
});
return cacheJobPromise.promise;
}
- async delete(request2, options = {}) {
+ async delete(request7, options = {}) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" });
- request2 = webidl.converters.RequestInfo(request2);
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request2 instanceof Request) {
- r = request2[kState];
+ if (request7 instanceof Request) {
+ r = request7[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return false;
}
} else {
- assert(typeof request2 === "string");
- r = new Request(request2)[kState];
+ assert(typeof request7 === "string");
+ r = new Request(request7)[kState];
}
const operations = [];
const operation = {
@@ -15141,24 +15141,24 @@ var require_cache = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions} options
* @returns {readonly Request[]}
*/
- async keys(request2 = void 0, options = {}) {
+ async keys(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
- if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request2 !== void 0) {
- if (request2 instanceof Request) {
- r = request2[kState];
+ if (request7 !== void 0) {
+ if (request7 instanceof Request) {
+ r = request7[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request2 === "string") {
- r = new Request(request2)[kState];
+ } else if (typeof request7 === "string") {
+ r = new Request(request7)[kState];
}
}
const promise = createDeferredPromise();
const requests = [];
- if (request2 === void 0) {
+ if (request7 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
requests.push(requestResponse[0]);
}
@@ -15170,12 +15170,12 @@ var require_cache = __commonJS({
}
queueMicrotask(() => {
const requestList = [];
- for (const request3 of requests) {
+ for (const request8 of requests) {
const requestObject = new Request("https://a");
- requestObject[kState] = request3;
- requestObject[kHeaders][kHeadersList] = request3.headersList;
+ requestObject[kState] = request8;
+ requestObject[kHeaders][kHeadersList] = request8.headersList;
requestObject[kHeaders][kGuard] = "immutable";
- requestObject[kRealm] = request3.client;
+ requestObject[kRealm] = request8.client;
requestList.push(requestObject);
}
promise.resolve(Object.freeze(requestList));
@@ -15290,9 +15290,9 @@ var require_cache = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
- #requestMatchesCachedItem(requestQuery, request2, response = null, options) {
+ #requestMatchesCachedItem(requestQuery, request7, response = null, options) {
const queryURL = new URL(requestQuery.url);
- const cachedURL = new URL(request2.url);
+ const cachedURL = new URL(request7.url);
if (options?.ignoreSearch) {
cachedURL.search = "";
queryURL.search = "";
@@ -15308,7 +15308,7 @@ var require_cache = __commonJS({
if (fieldValue === "*") {
return false;
}
- const requestValue = request2.headersList.get(fieldValue);
+ const requestValue = request7.headersList.get(fieldValue);
const queryValue = requestQuery.headersList.get(fieldValue);
if (requestValue !== queryValue) {
return false;
@@ -15384,21 +15384,21 @@ var require_cachestorage = __commonJS({
webidl.illegalConstructor();
}
}
- async match(request2, options = {}) {
+ async match(request7, options = {}) {
webidl.brandCheck(this, _CacheStorage);
webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.match" });
- request2 = webidl.converters.RequestInfo(request2);
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.MultiCacheQueryOptions(options);
if (options.cacheName != null) {
if (this.#caches.has(options.cacheName)) {
const cacheList = this.#caches.get(options.cacheName);
const cache = new Cache(kConstruct, cacheList);
- return await cache.match(request2, options);
+ return await cache.match(request7, options);
}
} else {
for (const cacheList of this.#caches.values()) {
const cache = new Cache(kConstruct, cacheList);
- const response = await cache.match(request2, options);
+ const response = await cache.match(request7, options);
if (response !== void 0) {
return response;
}
@@ -16322,7 +16322,7 @@ var require_connection = __commonJS({
function establishWebSocketConnection(url, protocols, ws, onEstablish, options) {
const requestURL = url;
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
- const request2 = makeRequest({
+ const request7 = makeRequest({
urlList: [requestURL],
serviceWorkers: "none",
referrer: "no-referrer",
@@ -16333,17 +16333,17 @@ var require_connection = __commonJS({
});
if (options.headers) {
const headersList = new Headers(options.headers)[kHeadersList];
- request2.headersList = headersList;
+ request7.headersList = headersList;
}
const keyValue = crypto.randomBytes(16).toString("base64");
- request2.headersList.append("sec-websocket-key", keyValue);
- request2.headersList.append("sec-websocket-version", "13");
+ request7.headersList.append("sec-websocket-key", keyValue);
+ request7.headersList.append("sec-websocket-version", "13");
for (const protocol of protocols) {
- request2.headersList.append("sec-websocket-protocol", protocol);
+ request7.headersList.append("sec-websocket-protocol", protocol);
}
const permessageDeflate = "";
const controller = fetching({
- request: request2,
+ request: request7,
useParallelQueue: true,
dispatcher: options.dispatcher ?? getGlobalDispatcher(),
processResponse(response) {
@@ -16375,7 +16375,7 @@ var require_connection = __commonJS({
return;
}
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
- if (secProtocol !== null && secProtocol !== request2.headersList.get("Sec-WebSocket-Protocol")) {
+ if (secProtocol !== null && secProtocol !== request7.headersList.get("Sec-WebSocket-Protocol")) {
failWebsocketConnection(ws, "Protocol was not set in the opening handshake.");
return;
}
@@ -17447,7 +17447,7 @@ var require_lib = __commonJS({
}
exports2.isHttps = isHttps;
var HttpClient = class {
- constructor(userAgent2, handlers, requestOptions) {
+ constructor(userAgent7, handlers, requestOptions) {
this._ignoreSslError = false;
this._allowRedirects = true;
this._allowRedirectDowngrade = false;
@@ -17456,7 +17456,7 @@ var require_lib = __commonJS({
this._maxRetries = 1;
this._keepAlive = false;
this._disposed = false;
- this.userAgent = userAgent2;
+ this.userAgent = userAgent7;
this.handlers = handlers || [];
this.requestOptions = requestOptions;
if (requestOptions) {
@@ -17749,14 +17749,14 @@ var require_lib = __commonJS({
}
_mergeHeaders(headers) {
if (this.requestOptions && this.requestOptions.headers) {
- return Object.assign({}, lowercaseKeys2(this.requestOptions.headers), lowercaseKeys2(headers || {}));
+ return Object.assign({}, lowercaseKeys7(this.requestOptions.headers), lowercaseKeys7(headers || {}));
}
- return lowercaseKeys2(headers || {});
+ return lowercaseKeys7(headers || {});
}
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
let clientHeader;
if (this.requestOptions && this.requestOptions.headers) {
- clientHeader = lowercaseKeys2(this.requestOptions.headers)[header];
+ clientHeader = lowercaseKeys7(this.requestOptions.headers)[header];
}
return additionalHeaders[header] || clientHeader || _default;
}
@@ -17891,7 +17891,7 @@ var require_lib = __commonJS({
}
};
exports2.HttpClient = HttpClient;
- var lowercaseKeys2 = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
+ var lowercaseKeys7 = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
}
});
@@ -19800,9 +19800,393 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
}
});
-// node_modules/fast-content-type-parse/index.js
+// node_modules/@octokit/auth-app/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) {
+ "node_modules/@octokit/auth-app/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 parse7(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;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ throw new TypeError("invalid parameter format");
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ throw new TypeError("invalid parameter format");
+ }
+ return result;
+ }
+ function safeParse7(header) {
+ if (typeof header !== "string") {
+ return defaultContentType;
+ }
+ let index = header.indexOf(";");
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
+ if (mediaTypeRE.test(type) === false) {
+ return defaultContentType;
+ }
+ const result = {
+ type: type.toLowerCase(),
+ parameters: new NullObject()
+ };
+ if (index === -1) {
+ return result;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ return defaultContentType;
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ return defaultContentType;
+ }
+ return result;
+ }
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
+ module2.exports.defaultContentType = defaultContentType;
+ }
+});
+
+// node_modules/@octokit/auth-oauth-app/node_modules/fast-content-type-parse/index.js
+var require_fast_content_type_parse2 = __commonJS({
+ "node_modules/@octokit/auth-oauth-app/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 parse7(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;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ throw new TypeError("invalid parameter format");
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ throw new TypeError("invalid parameter format");
+ }
+ return result;
+ }
+ function safeParse7(header) {
+ if (typeof header !== "string") {
+ return defaultContentType;
+ }
+ let index = header.indexOf(";");
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
+ if (mediaTypeRE.test(type) === false) {
+ return defaultContentType;
+ }
+ const result = {
+ type: type.toLowerCase(),
+ parameters: new NullObject()
+ };
+ if (index === -1) {
+ return result;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ return defaultContentType;
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ return defaultContentType;
+ }
+ return result;
+ }
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
+ module2.exports.defaultContentType = defaultContentType;
+ }
+});
+
+// node_modules/@octokit/auth-oauth-user/node_modules/fast-content-type-parse/index.js
+var require_fast_content_type_parse3 = __commonJS({
+ "node_modules/@octokit/auth-oauth-user/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 parse7(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;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ throw new TypeError("invalid parameter format");
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ throw new TypeError("invalid parameter format");
+ }
+ return result;
+ }
+ function safeParse7(header) {
+ if (typeof header !== "string") {
+ return defaultContentType;
+ }
+ let index = header.indexOf(";");
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
+ if (mediaTypeRE.test(type) === false) {
+ return defaultContentType;
+ }
+ const result = {
+ type: type.toLowerCase(),
+ parameters: new NullObject()
+ };
+ if (index === -1) {
+ return result;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ return defaultContentType;
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ return defaultContentType;
+ }
+ return result;
+ }
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
+ module2.exports.defaultContentType = defaultContentType;
+ }
+});
+
+// node_modules/@octokit/auth-oauth-device/node_modules/fast-content-type-parse/index.js
+var require_fast_content_type_parse4 = __commonJS({
+ "node_modules/@octokit/auth-oauth-device/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 parse7(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;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ throw new TypeError("invalid parameter format");
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ throw new TypeError("invalid parameter format");
+ }
+ return result;
+ }
+ function safeParse7(header) {
+ if (typeof header !== "string") {
+ return defaultContentType;
+ }
+ let index = header.indexOf(";");
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
+ if (mediaTypeRE.test(type) === false) {
+ return defaultContentType;
+ }
+ const result = {
+ type: type.toLowerCase(),
+ parameters: new NullObject()
+ };
+ if (index === -1) {
+ return result;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ return defaultContentType;
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ return defaultContentType;
+ }
+ return result;
+ }
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
+ module2.exports.defaultContentType = defaultContentType;
+ }
+});
+
+// node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse/index.js
+var require_fast_content_type_parse5 = __commonJS({
+ "node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse/index.js"(exports2, module2) {
"use strict";
var NullObject = function NullObject2() {
};
@@ -19813,7 +20197,7 @@ var require_fast_content_type_parse = __commonJS({
var defaultContentType = { type: "", parameters: new NullObject() };
Object.freeze(defaultContentType.parameters);
Object.freeze(defaultContentType);
- function parse2(header) {
+ function parse7(header) {
if (typeof header !== "string") {
throw new TypeError("argument header is required and must be a string");
}
@@ -19851,7 +20235,7 @@ var require_fast_content_type_parse = __commonJS({
}
return result;
}
- function safeParse2(header) {
+ function safeParse7(header) {
if (typeof header !== "string") {
return defaultContentType;
}
@@ -19889,9 +20273,9 @@ var require_fast_content_type_parse = __commonJS({
}
return result;
}
- module2.exports.default = { parse: parse2, safeParse: safeParse2 };
- module2.exports.parse = parse2;
- module2.exports.safeParse = safeParse2;
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
module2.exports.defaultContentType = defaultContentType;
}
});
@@ -20124,6 +20508,102 @@ var require_retry2 = __commonJS({
}
});
+// node_modules/fast-content-type-parse/index.js
+var require_fast_content_type_parse6 = __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 parse7(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;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ throw new TypeError("invalid parameter format");
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ throw new TypeError("invalid parameter format");
+ }
+ return result;
+ }
+ function safeParse7(header) {
+ if (typeof header !== "string") {
+ return defaultContentType;
+ }
+ let index = header.indexOf(";");
+ const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
+ if (mediaTypeRE.test(type) === false) {
+ return defaultContentType;
+ }
+ const result = {
+ type: type.toLowerCase(),
+ parameters: new NullObject()
+ };
+ if (index === -1) {
+ return result;
+ }
+ let key;
+ let match;
+ let value;
+ paramRE.lastIndex = index;
+ while (match = paramRE.exec(header)) {
+ if (match.index !== index) {
+ return defaultContentType;
+ }
+ 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;
+ }
+ if (index !== header.length) {
+ return defaultContentType;
+ }
+ return result;
+ }
+ module2.exports.default = { parse: parse7, safeParse: safeParse7 };
+ module2.exports.parse = parse7;
+ module2.exports.safeParse = safeParse7;
+ module2.exports.defaultContentType = defaultContentType;
+ }
+});
+
// node_modules/undici/lib/core/symbols.js
var require_symbols6 = __commonJS({
"node_modules/undici/lib/core/symbols.js"(exports2, module2) {
@@ -21367,10 +21847,10 @@ var require_util8 = __commonJS({
}
return obj;
}
- function errorRequest(client, request2, err) {
+ function errorRequest(client, request7, err) {
try {
- request2.onError(err);
- assert(request2.aborted);
+ request7.onError(err);
+ assert(request7.aborted);
} catch (err2) {
client.emit("error", err2);
}
@@ -21945,7 +22425,7 @@ var require_request3 = __commonJS({
return this;
}
};
- function processHeader(request2, key, val) {
+ function processHeader(request7, key, val) {
if (val && (typeof val === "object" && !Array.isArray(val))) {
throw new InvalidArgumentError(`invalid ${key} header`);
} else if (val === void 0) {
@@ -21984,19 +22464,19 @@ var require_request3 = __commonJS({
} else {
val = `${val}`;
}
- if (request2.host === null && headerName === "host") {
+ if (request7.host === null && headerName === "host") {
if (typeof val !== "string") {
throw new InvalidArgumentError("invalid host header");
}
- request2.host = val;
- } else if (request2.contentLength === null && headerName === "content-length") {
- request2.contentLength = parseInt(val, 10);
- if (!Number.isFinite(request2.contentLength)) {
+ request7.host = val;
+ } else if (request7.contentLength === null && headerName === "content-length") {
+ request7.contentLength = parseInt(val, 10);
+ if (!Number.isFinite(request7.contentLength)) {
throw new InvalidArgumentError("invalid content-length header");
}
- } else if (request2.contentType === null && headerName === "content-type") {
- request2.contentType = val;
- request2.headers.push(key, val);
+ } else if (request7.contentType === null && headerName === "content-type") {
+ request7.contentType = val;
+ request7.headers.push(key, val);
} else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
throw new InvalidArgumentError(`invalid ${headerName} header`);
} else if (headerName === "connection") {
@@ -22005,12 +22485,12 @@ var require_request3 = __commonJS({
throw new InvalidArgumentError("invalid connection header");
}
if (value === "close") {
- request2.reset = true;
+ request7.reset = true;
}
} else if (headerName === "expect") {
throw new NotSupportedError("expect header not supported");
} else {
- request2.headers.push(key, val);
+ request7.headers.push(key, val);
}
}
module2.exports = Request;
@@ -24254,11 +24734,11 @@ var require_util9 = __commonJS({
function normalizeBinaryStringToUtf8(value) {
return Buffer.from(value, "binary").toString("utf8");
}
- function requestCurrentURL(request2) {
- return request2.urlList[request2.urlList.length - 1];
+ function requestCurrentURL(request7) {
+ return request7.urlList[request7.urlList.length - 1];
}
- function requestBadPort(request2) {
- const url = requestCurrentURL(request2);
+ function requestBadPort(request7) {
+ const url = requestCurrentURL(request7);
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
return "blocked";
}
@@ -24296,10 +24776,10 @@ var require_util9 = __commonJS({
}
return policy;
}
- function setRequestReferrerPolicyOnRedirect(request2, actualResponse) {
+ function setRequestReferrerPolicyOnRedirect(request7, actualResponse) {
const policy = parseReferrerPolicy(actualResponse);
if (policy !== "") {
- request2.referrerPolicy = policy;
+ request7.referrerPolicy = policy;
}
}
function crossOriginResourcePolicyCheck() {
@@ -24316,33 +24796,33 @@ var require_util9 = __commonJS({
header = httpRequest.mode;
httpRequest.headersList.set("sec-fetch-mode", header, true);
}
- function appendRequestOriginHeader(request2) {
- let serializedOrigin = request2.origin;
+ function appendRequestOriginHeader(request7) {
+ let serializedOrigin = request7.origin;
if (serializedOrigin === "client" || serializedOrigin === void 0) {
return;
}
- if (request2.responseTainting === "cors" || request2.mode === "websocket") {
- request2.headersList.append("origin", serializedOrigin, true);
- } else if (request2.method !== "GET" && request2.method !== "HEAD") {
- switch (request2.referrerPolicy) {
+ if (request7.responseTainting === "cors" || request7.mode === "websocket") {
+ request7.headersList.append("origin", serializedOrigin, true);
+ } else if (request7.method !== "GET" && request7.method !== "HEAD") {
+ switch (request7.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))) {
+ if (request7.origin && urlHasHttpsScheme(request7.origin) && !urlHasHttpsScheme(requestCurrentURL(request7))) {
serializedOrigin = null;
}
break;
case "same-origin":
- if (!sameOrigin(request2, requestCurrentURL(request2))) {
+ if (!sameOrigin(request7, requestCurrentURL(request7))) {
serializedOrigin = null;
}
break;
default:
}
- request2.headersList.append("origin", serializedOrigin, true);
+ request7.headersList.append("origin", serializedOrigin, true);
}
}
function coarsenTime(timestamp, crossOriginIsolatedCapability) {
@@ -24396,18 +24876,18 @@ var require_util9 = __commonJS({
referrerPolicy: policyContainer.referrerPolicy
};
}
- function determineRequestsReferrer(request2) {
- const policy = request2.referrerPolicy;
+ function determineRequestsReferrer(request7) {
+ const policy = request7.referrerPolicy;
assert(policy);
let referrerSource = null;
- if (request2.referrer === "client") {
+ if (request7.referrer === "client") {
const globalOrigin = getGlobalOrigin();
if (!globalOrigin || globalOrigin.origin === "null") {
return "no-referrer";
}
referrerSource = new URL(globalOrigin);
- } else if (webidl.is.URL(request2.referrer)) {
- referrerSource = request2.referrer;
+ } else if (webidl.is.URL(request7.referrer)) {
+ referrerSource = request7.referrer;
}
let referrerURL = stripURLForReferrer(referrerSource);
const referrerOrigin = stripURLForReferrer(referrerSource, true);
@@ -24425,14 +24905,14 @@ var require_util9 = __commonJS({
case "unsafe-url":
return referrerURL;
case "strict-origin": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
return referrerOrigin;
}
case "strict-origin-when-cross-origin": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
if (sameOrigin(referrerURL, currentURL)) {
return referrerURL;
}
@@ -24442,17 +24922,17 @@ var require_util9 = __commonJS({
return referrerOrigin;
}
case "same-origin":
- if (sameOrigin(request2, referrerURL)) {
+ if (sameOrigin(request7, referrerURL)) {
return referrerURL;
}
return "no-referrer";
case "origin-when-cross-origin":
- if (sameOrigin(request2, referrerURL)) {
+ if (sameOrigin(request7, referrerURL)) {
return referrerURL;
}
return referrerOrigin;
case "no-referrer-when-downgrade": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
@@ -24614,7 +25094,7 @@ var require_util9 = __commonJS({
}
return true;
}
- function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
+ function tryUpgradeRequestToAPotentiallyTrustworthyURL(request7) {
}
function sameOrigin(A, B) {
if (A.origin === B.origin && A.origin === "null") {
@@ -26159,11 +26639,11 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- if (!request2) {
+ const request7 = client[kQueue][client[kRunningIdx]];
+ if (!request7) {
return -1;
}
- request2.onResponseStarted();
+ request7.onResponseStarted();
return 0;
}
/**
@@ -26225,9 +26705,9 @@ var require_client_h1 = __commonJS({
assert(!socket.destroyed);
assert(!this.paused);
assert((headers.length & 1) === 0);
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
- assert(request2.upgrade || request2.method === "CONNECT");
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
+ assert(request7.upgrade || request7.method === "CONNECT");
this.statusCode = 0;
this.statusText = "";
this.shouldKeepAlive = false;
@@ -26244,7 +26724,7 @@ var require_client_h1 = __commonJS({
client[kQueue][client[kRunningIdx]++] = null;
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
try {
- request2.onUpgrade(statusCode, headers, socket);
+ request7.onUpgrade(statusCode, headers, socket);
} catch (err) {
util.destroy(socket, err);
}
@@ -26261,8 +26741,8 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- if (!request2) {
+ const request7 = client[kQueue][client[kRunningIdx]];
+ if (!request7) {
return -1;
}
assert(!this.upgrade);
@@ -26271,23 +26751,23 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
return -1;
}
- if (upgrade && !request2.upgrade) {
+ if (upgrade && !request7.upgrade) {
util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket)));
return -1;
}
assert(this.timeoutType === TIMEOUT_HEADERS);
this.statusCode = statusCode;
this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
- request2.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
+ request7.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
if (this.statusCode >= 200) {
- const bodyTimeout = request2.bodyTimeout != null ? request2.bodyTimeout : client[kBodyTimeout];
+ const bodyTimeout = request7.bodyTimeout != null ? request7.bodyTimeout : client[kBodyTimeout];
this.setTimeout(bodyTimeout, TIMEOUT_BODY);
} else if (this.timeout) {
if (this.timeout.refresh) {
this.timeout.refresh();
}
}
- if (request2.method === "CONNECT") {
+ if (request7.method === "CONNECT") {
assert(client[kRunning] === 1);
this.upgrade = true;
return 2;
@@ -26318,11 +26798,11 @@ var require_client_h1 = __commonJS({
} else {
socket[kReset] = true;
}
- const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false;
- if (request2.aborted) {
+ const pause = request7.onHeaders(statusCode, headers, this.resume, statusText) === false;
+ if (request7.aborted) {
return -1;
}
- if (request2.method === "HEAD") {
+ if (request7.method === "HEAD") {
return 1;
}
if (statusCode < 200) {
@@ -26343,8 +26823,8 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
assert(this.timeoutType === TIMEOUT_BODY);
if (this.timeout) {
if (this.timeout.refresh) {
@@ -26357,7 +26837,7 @@ var require_client_h1 = __commonJS({
return -1;
}
this.bytesRead += buf.length;
- if (request2.onData(buf) === false) {
+ if (request7.onData(buf) === false) {
return constants.ERROR.PAUSED;
}
return 0;
@@ -26375,8 +26855,8 @@ var require_client_h1 = __commonJS({
}
assert(statusCode >= 100);
assert((this.headers.length & 1) === 0);
- const request2 = client[kQueue][client[kRunningIdx]];
- assert(request2);
+ const request7 = client[kQueue][client[kRunningIdx]];
+ assert(request7);
this.statusCode = 0;
this.statusText = "";
this.bytesRead = 0;
@@ -26388,11 +26868,11 @@ var require_client_h1 = __commonJS({
if (statusCode < 200) {
return 0;
}
- if (request2.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
+ if (request7.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
util.destroy(socket, new ResponseContentLengthMismatchError());
return -1;
}
- request2.onComplete(headers);
+ request7.onComplete(headers);
client[kQueue][client[kRunningIdx]++] = null;
if (socket[kWriting]) {
assert(client[kRunning] === 0);
@@ -26458,8 +26938,8 @@ var require_client_h1 = __commonJS({
return {
version: "h1",
defaultPipelining: 1,
- write(request2) {
- return writeH1(client, request2);
+ write(request7) {
+ return writeH1(client, request7);
},
resume() {
resumeH1(client);
@@ -26486,18 +26966,18 @@ var require_client_h1 = __commonJS({
* @param {import('../core/request.js')} request
* @returns {boolean}
*/
- busy(request2) {
+ busy(request7) {
if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
return true;
}
- if (request2) {
- if (client[kRunning] > 0 && !request2.idempotent) {
+ if (request7) {
+ if (client[kRunning] > 0 && !request7.idempotent) {
return true;
}
- if (client[kRunning] > 0 && (request2.upgrade || request2.method === "CONNECT")) {
+ if (client[kRunning] > 0 && (request7.upgrade || request7.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))) {
+ if (client[kRunning] > 0 && util.bodyLength(request7.body) !== 0 && (util.isStream(request7.body) || util.isAsyncIterable(request7.body) || util.isFormDataLike(request7.body))) {
return true;
}
}
@@ -26543,13 +27023,13 @@ var require_client_h1 = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- util.errorRequest(client, request2, err);
+ const request7 = requests[i];
+ util.errorRequest(client, request7, err);
}
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
- const request2 = client[kQueue][client[kRunningIdx]];
+ const request7 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- util.errorRequest(client, request2, err);
+ util.errorRequest(client, request7, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -26577,8 +27057,8 @@ var require_client_h1 = __commonJS({
}
} 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];
+ const request7 = client[kQueue][client[kRunningIdx]];
+ const headersTimeout = request7.headersTimeout != null ? request7.headersTimeout : client[kHeadersTimeout];
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
}
}
@@ -26587,21 +27067,21 @@ var require_client_h1 = __commonJS({
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, headers, contentLength } = request2;
+ function writeH1(client, request7) {
+ const { method, path, host, upgrade, blocking, reset } = request7;
+ let { body, headers, contentLength } = request7;
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
if (util.isFormDataLike(body)) {
if (!extractBody) {
extractBody = require_body2().extractBody;
}
const [bodyStream, contentType] = extractBody(body);
- if (request2.contentType == null) {
+ if (request7.contentType == null) {
headers.push("content-type", contentType);
}
body = bodyStream.stream;
contentLength = bodyStream.length;
- } else if (util.isBlobLike(body) && request2.contentType == null && body.type) {
+ } else if (util.isBlobLike(body) && request7.contentType == null && body.type) {
headers.push("content-type", body.type);
}
if (body && typeof body.read === "function") {
@@ -26610,33 +27090,33 @@ var require_client_h1 = __commonJS({
const bodyLength = util.bodyLength(body);
contentLength = bodyLength ?? contentLength;
if (contentLength === null) {
- contentLength = request2.contentLength;
+ contentLength = request7.contentLength;
}
if (contentLength === 0 && !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength !== null && request2.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength !== null && request7.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- util.errorRequest(client, request2, new RequestContentLengthMismatchError());
+ util.errorRequest(client, request7, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
}
const socket = client[kSocket];
const abort = (err) => {
- if (request2.aborted || request2.completed) {
+ if (request7.aborted || request7.completed) {
return;
}
- util.errorRequest(client, request2, err || new RequestAbortedError());
+ util.errorRequest(client, request7, err || new RequestAbortedError());
util.destroy(body);
util.destroy(socket, new InformationalError("aborted"));
};
try {
- request2.onConnect(abort);
+ request7.onConnect(abort);
} catch (err) {
- util.errorRequest(client, request2, err);
+ util.errorRequest(client, request7, err);
}
- if (request2.aborted) {
+ if (request7.aborted) {
return false;
}
if (method === "HEAD") {
@@ -26687,31 +27167,31 @@ upgrade: ${upgrade}\r
}
}
if (channels.sendHeaders.hasSubscribers) {
- channels.sendHeaders.publish({ request: request2, headers: header, socket });
+ channels.sendHeaders.publish({ request: request7, headers: header, socket });
}
if (!body || bodyLength === 0) {
- writeBuffer(abort, null, client, request2, socket, contentLength, header, expectsPayload);
+ writeBuffer(abort, null, client, request7, socket, contentLength, header, expectsPayload);
} else if (util.isBuffer(body)) {
- writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload);
+ writeBuffer(abort, body, client, request7, socket, contentLength, header, expectsPayload);
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
- writeIterable(abort, body.stream(), client, request2, socket, contentLength, header, expectsPayload);
+ writeIterable(abort, body.stream(), client, request7, socket, contentLength, header, expectsPayload);
} else {
- writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload);
+ writeBlob(abort, body, client, request7, socket, contentLength, header, expectsPayload);
}
} else if (util.isStream(body)) {
- writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload);
+ writeStream(abort, body, client, request7, socket, contentLength, header, expectsPayload);
} else if (util.isIterable(body)) {
- writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload);
+ writeIterable(abort, body, client, request7, socket, contentLength, header, expectsPayload);
} else {
assert(false);
}
return true;
}
- function writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
+ function writeStream(abort, body, client, request7, 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 writer = new AsyncWriter({ abort, socket, request: request7, contentLength, client, expectsPayload, header });
const onData = function(chunk) {
if (finished) {
return;
@@ -26777,7 +27257,7 @@ upgrade: ${upgrade}\r
setImmediate(onClose);
}
}
- function writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
+ function writeBuffer(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
try {
if (!body) {
if (contentLength === 0) {
@@ -26797,18 +27277,18 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(body);
socket.uncork();
- request2.onBodySent(body);
- if (!expectsPayload && request2.reset !== false) {
+ request7.onBodySent(body);
+ if (!expectsPayload && request7.reset !== false) {
socket[kReset] = true;
}
}
- request2.onRequestSent();
+ request7.onRequestSent();
client[kResume]();
} catch (err) {
abort(err);
}
}
- async function writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
+ async function writeBlob(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
assert(contentLength === body.size, "blob body must have content length");
try {
if (contentLength != null && contentLength !== body.size) {
@@ -26821,9 +27301,9 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(buffer);
socket.uncork();
- request2.onBodySent(buffer);
- request2.onRequestSent();
- if (!expectsPayload && request2.reset !== false) {
+ request7.onBodySent(buffer);
+ request7.onRequestSent();
+ if (!expectsPayload && request7.reset !== false) {
socket[kReset] = true;
}
client[kResume]();
@@ -26831,7 +27311,7 @@ upgrade: ${upgrade}\r
abort(err);
}
}
- async function writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
+ async function writeIterable(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -26850,7 +27330,7 @@ upgrade: ${upgrade}\r
}
});
socket.on("close", onDrain).on("drain", onDrain);
- const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ abort, socket, request: request7, contentLength, client, expectsPayload, header });
try {
for await (const chunk of body) {
if (socket[kError]) {
@@ -26879,9 +27359,9 @@ upgrade: ${upgrade}\r
* @param {boolean} arg.expectsPayload
* @param {string} arg.header
*/
- constructor({ abort, socket, request: request2, contentLength, client, expectsPayload, header }) {
+ constructor({ abort, socket, request: request7, contentLength, client, expectsPayload, header }) {
this.socket = socket;
- this.request = request2;
+ this.request = request7;
this.contentLength = contentLength;
this.client = client;
this.bytesWritten = 0;
@@ -26895,7 +27375,7 @@ upgrade: ${upgrade}\r
* @returns
*/
write(chunk) {
- const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this;
+ const { socket, request: request7, contentLength, client, bytesWritten, expectsPayload, header } = this;
if (socket[kError]) {
throw socket[kError];
}
@@ -26914,7 +27394,7 @@ upgrade: ${upgrade}\r
}
socket.cork();
if (bytesWritten === 0) {
- if (!expectsPayload && request2.reset !== false) {
+ if (!expectsPayload && request7.reset !== false) {
socket[kReset] = true;
}
if (contentLength === null) {
@@ -26934,7 +27414,7 @@ ${len.toString(16)}\r
this.bytesWritten += len;
const ret = socket.write(chunk);
socket.uncork();
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
if (!ret) {
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
if (socket[kParser].timeout.refresh) {
@@ -26948,8 +27428,8 @@ ${len.toString(16)}\r
* @returns {void}
*/
end() {
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this;
- request2.onRequestSent();
+ const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request7 } = this;
+ request7.onRequestSent();
socket[kWriting] = false;
if (socket[kError]) {
throw socket[kError];
@@ -27097,8 +27577,8 @@ var require_client_h2 = __commonJS({
return {
version: "h2",
defaultPipelining: Infinity,
- write(request2) {
- return writeH2(client, request2);
+ write(request7) {
+ return writeH2(client, request7);
},
resume() {
resumeH2(client);
@@ -27156,9 +27636,9 @@ var require_client_h2 = __commonJS({
this[kHTTP2Session] = null;
util.destroy(this[kSocket], err);
if (client[kRunningIdx] < client[kQueue].length) {
- const request2 = client[kQueue][client[kRunningIdx]];
+ const request7 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- util.errorRequest(client, request2, err);
+ util.errorRequest(client, request7, err);
client[kPendingIdx] = client[kRunningIdx];
}
assert(client[kRunning] === 0);
@@ -27176,8 +27656,8 @@ var require_client_h2 = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request2 = requests[i];
- util.errorRequest(client, request2, err);
+ const request7 = requests[i];
+ util.errorRequest(client, request7, err);
}
}
}
@@ -27208,13 +27688,13 @@ var require_client_h2 = __commonJS({
function shouldSendContentLength(method) {
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
}
- function writeH2(client, request2) {
- const requestTimeout = request2.bodyTimeout ?? client[kBodyTimeout];
+ function writeH2(client, request7) {
+ const requestTimeout = request7.bodyTimeout ?? client[kBodyTimeout];
const session = client[kHTTP2Session];
- const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2;
- let { body } = request2;
+ const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request7;
+ let { body } = request7;
if (upgrade) {
- util.errorRequest(client, request2, new Error("Upgrade not supported for H2"));
+ util.errorRequest(client, request7, new Error("Upgrade not supported for H2"));
return false;
}
const headers = {};
@@ -27238,11 +27718,11 @@ var require_client_h2 = __commonJS({
headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ""}`;
headers[HTTP2_HEADER_METHOD] = method;
const abort = (err) => {
- if (request2.aborted || request2.completed) {
+ if (request7.aborted || request7.completed) {
return;
}
err = err || new RequestAbortedError();
- util.errorRequest(client, request2, err);
+ util.errorRequest(client, request7, err);
if (stream != null) {
stream.removeAllListeners("data");
stream.close();
@@ -27252,23 +27732,23 @@ var require_client_h2 = __commonJS({
util.destroy(body, err);
};
try {
- request2.onConnect(abort);
+ request7.onConnect(abort);
} catch (err) {
- util.errorRequest(client, request2, err);
+ util.errorRequest(client, request7, err);
}
- if (request2.aborted) {
+ if (request7.aborted) {
return false;
}
if (method === "CONNECT") {
session.ref();
stream = session.request(headers, { endStream: false, signal });
if (!stream.pending) {
- request2.onUpgrade(null, null, stream);
+ request7.onUpgrade(null, null, stream);
++session[kOpenStreams];
client[kQueue][client[kRunningIdx]++] = null;
} else {
stream.once("ready", () => {
- request2.onUpgrade(null, null, stream);
+ request7.onUpgrade(null, null, stream);
++session[kOpenStreams];
client[kQueue][client[kRunningIdx]++] = null;
});
@@ -27295,14 +27775,14 @@ var require_client_h2 = __commonJS({
contentLength = bodyStream.length;
}
if (contentLength == null) {
- contentLength = request2.contentLength;
+ contentLength = request7.contentLength;
}
if (contentLength === 0 || !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength != null && request2.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength != null && request7.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- util.errorRequest(client, request2, new RequestContentLengthMismatchError());
+ util.errorRequest(client, request7, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
@@ -27318,7 +27798,7 @@ var require_client_h2 = __commonJS({
header += `${key}: ${headers[key]}\r
`;
}
- channels.sendHeaders.publish({ request: request2, headers: header, socket: session[kSocket] });
+ channels.sendHeaders.publish({ request: request7, headers: header, socket: session[kSocket] });
}
const shouldEndStream = method === "GET" || method === "HEAD" || body === null;
if (expectContinue) {
@@ -27336,25 +27816,25 @@ var require_client_h2 = __commonJS({
stream.setTimeout(requestTimeout);
stream.once("response", (headers2) => {
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
- request2.onResponseStarted();
- if (request2.aborted) {
+ request7.onResponseStarted();
+ if (request7.aborted) {
stream.removeAllListeners("data");
return;
}
- if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
+ if (request7.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
stream.pause();
}
});
stream.on("data", (chunk) => {
- if (request2.onData(chunk) === false) {
+ if (request7.onData(chunk) === false) {
stream.pause();
}
});
stream.once("end", (err) => {
stream.removeAllListeners("data");
if (stream.state?.state == null || stream.state.state < 6) {
- if (!request2.aborted && !request2.completed) {
- request2.onComplete({});
+ if (!request7.aborted && !request7.completed) {
+ request7.onComplete({});
}
client[kQueue][client[kRunningIdx]++] = null;
client[kResume]();
@@ -27397,10 +27877,10 @@ var require_client_h2 = __commonJS({
abort(err);
});
stream.once("trailers", (trailers) => {
- if (request2.aborted || request2.completed) {
+ if (request7.aborted || request7.completed) {
return;
}
- request2.onComplete(trailers);
+ request7.onComplete(trailers);
});
return true;
function writeBodyH2() {
@@ -27410,7 +27890,7 @@ var require_client_h2 = __commonJS({
stream,
null,
client,
- request2,
+ request7,
client[kSocket],
contentLength,
expectsPayload
@@ -27421,7 +27901,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request2,
+ request7,
client[kSocket],
contentLength,
expectsPayload
@@ -27433,7 +27913,7 @@ var require_client_h2 = __commonJS({
stream,
body.stream(),
client,
- request2,
+ request7,
client[kSocket],
contentLength,
expectsPayload
@@ -27444,7 +27924,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request2,
+ request7,
client[kSocket],
contentLength,
expectsPayload
@@ -27458,7 +27938,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request2,
+ request7,
contentLength
);
} else if (util.isIterable(body)) {
@@ -27467,7 +27947,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request2,
+ request7,
client[kSocket],
contentLength,
expectsPayload
@@ -27477,7 +27957,7 @@ var require_client_h2 = __commonJS({
}
}
}
- function writeBuffer(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
+ function writeBuffer(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
try {
if (body != null && util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
@@ -27485,18 +27965,18 @@ var require_client_h2 = __commonJS({
h2stream.write(body);
h2stream.uncork();
h2stream.end();
- request2.onBodySent(body);
+ request7.onBodySent(body);
}
if (!expectsPayload) {
socket[kReset] = true;
}
- request2.onRequestSent();
+ request7.onRequestSent();
client[kResume]();
} catch (error) {
abort(error);
}
}
- function writeStream(abort, socket, expectsPayload, h2stream, body, client, request2, contentLength) {
+ function writeStream(abort, socket, expectsPayload, h2stream, body, client, request7, contentLength) {
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
const pipe = pipeline(
body,
@@ -27507,7 +27987,7 @@ var require_client_h2 = __commonJS({
abort(err);
} else {
util.removeAllListeners(pipe);
- request2.onRequestSent();
+ request7.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -27517,10 +27997,10 @@ var require_client_h2 = __commonJS({
);
util.addListener(pipe, "data", onPipeData);
function onPipeData(chunk) {
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
}
}
- async function writeBlob(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
+ async function writeBlob(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
assert(contentLength === body.size, "blob body must have content length");
try {
if (contentLength != null && contentLength !== body.size) {
@@ -27531,8 +28011,8 @@ var require_client_h2 = __commonJS({
h2stream.write(buffer);
h2stream.uncork();
h2stream.end();
- request2.onBodySent(buffer);
- request2.onRequestSent();
+ request7.onBodySent(buffer);
+ request7.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -27541,7 +28021,7 @@ var require_client_h2 = __commonJS({
abort(err);
}
}
- async function writeIterable(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
+ async function writeIterable(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -27566,13 +28046,13 @@ var require_client_h2 = __commonJS({
throw socket[kError];
}
const res = h2stream.write(chunk);
- request2.onBodySent(chunk);
+ request7.onBodySent(chunk);
if (!res) {
await waitForDrain();
}
}
h2stream.end();
- request2.onRequestSent();
+ request7.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -27824,10 +28304,10 @@ var require_client2 = __commonJS({
}
[kDispatch](opts, handler) {
const origin = opts.origin || this[kUrl].origin;
- const request2 = new Request(origin, opts, handler);
- this[kQueue].push(request2);
+ const request7 = new Request(origin, opts, handler);
+ this[kQueue].push(request7);
if (this[kResuming]) {
- } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
+ } else if (util.bodyLength(request7.body) == null && util.isIterable(request7.body)) {
this[kResuming] = 1;
queueMicrotask(() => resume(this));
} else {
@@ -27851,8 +28331,8 @@ var require_client2 = __commonJS({
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 request7 = requests[i];
+ util.errorRequest(this, request7, err);
}
const callback = () => {
if (this[kClosedResolve]) {
@@ -27876,8 +28356,8 @@ var require_client2 = __commonJS({
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);
+ const request7 = requests[i];
+ util.errorRequest(client, request7, err);
}
assert(client[kSize] === 0);
}
@@ -27980,8 +28460,8 @@ var require_client2 = __commonJS({
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);
+ const request7 = client[kQueue][client[kPendingIdx]++];
+ util.errorRequest(client, request7, err);
}
} else {
onError(client, err);
@@ -28038,12 +28518,12 @@ var require_client2 = __commonJS({
if (client[kRunning] >= (getPipelining(client) || 1)) {
return;
}
- const request2 = client[kQueue][client[kPendingIdx]];
- if (client[kUrl].protocol === "https:" && client[kServerName] !== request2.servername) {
+ const request7 = client[kQueue][client[kPendingIdx]];
+ if (client[kUrl].protocol === "https:" && client[kServerName] !== request7.servername) {
if (client[kRunning] > 0) {
return;
}
- client[kServerName] = request2.servername;
+ client[kServerName] = request7.servername;
client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => {
client[kHTTPContext] = null;
resume(client);
@@ -28059,10 +28539,10 @@ var require_client2 = __commonJS({
if (client[kHTTPContext].destroyed) {
return;
}
- if (client[kHTTPContext].busy(request2)) {
+ if (client[kHTTPContext].busy(request7)) {
return;
}
- if (!request2.aborted && client[kHTTPContext].write(request2)) {
+ if (!request7.aborted && client[kHTTPContext].write(request7)) {
client[kPendingIdx]++;
} else {
client[kQueue].splice(client[kPendingIdx], 1);
@@ -29890,10 +30370,10 @@ var require_api_request2 = __commonJS({
}
}
};
- function request2(opts, callback) {
+ function request7(opts, callback) {
if (callback === void 0) {
return new Promise((resolve, reject) => {
- request2.call(this, opts, (err, data) => {
+ request7.call(this, opts, (err, data) => {
return err ? reject(err) : resolve(data);
});
});
@@ -29909,7 +30389,7 @@ var require_api_request2 = __commonJS({
queueMicrotask(() => callback(err, { opaque }));
}
}
- module2.exports = request2;
+ module2.exports = request7;
module2.exports.RequestHandler = RequestHandler;
}
});
@@ -30679,7 +31159,7 @@ var require_mock_utils2 = __commonJS({
const headersMatch = matchHeaders(mockDispatch2, headers);
return pathMatch && methodMatch && bodyMatch && headersMatch;
}
- function getResponseData2(data) {
+ function getResponseData7(data) {
if (Buffer.isBuffer(data)) {
return data;
} else if (data instanceof Uint8Array) {
@@ -30813,7 +31293,7 @@ var require_mock_utils2 = __commonJS({
body.then((newData) => handleReply(mockDispatches, newData));
return;
}
- const responseData = getResponseData2(body);
+ const responseData = getResponseData7(body);
const responseHeaders = generateKeyValues(headers);
const responseTrailers = generateKeyValues(trailers);
handler.onConnect?.((err) => handler.onError(err), null);
@@ -30873,7 +31353,7 @@ var require_mock_utils2 = __commonJS({
}
}
module2.exports = {
- getResponseData: getResponseData2,
+ getResponseData: getResponseData7,
getMockDispatch,
addMockDispatch,
deleteMockDispatch,
@@ -30896,7 +31376,7 @@ var require_mock_utils2 = __commonJS({
var require_mock_interceptor2 = __commonJS({
"node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) {
"use strict";
- var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils2();
+ var { getResponseData: getResponseData7, buildKey, addMockDispatch } = require_mock_utils2();
var {
kDispatches,
kDispatchKey,
@@ -30970,7 +31450,7 @@ var require_mock_interceptor2 = __commonJS({
this[kContentLength] = false;
}
createMockScopeDispatchData({ statusCode, data, responseOptions }) {
- const responseData = getResponseData2(data);
+ const responseData = getResponseData7(data);
const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {};
const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers };
const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers };
@@ -33572,7 +34052,7 @@ var require_sqlite_cache_store = __commonJS({
var { Writable } = require("stream");
var { assertCacheKey, assertCacheValue } = require_cache2();
var DatabaseSync;
- var VERSION7 = 3;
+ var VERSION17 = 3;
var MAX_ENTRY_SIZE = 2 * 1e3 * 1e3 * 1e3;
module2.exports = class SqliteCacheStore {
#maxEntrySize = MAX_ENTRY_SIZE;
@@ -33643,7 +34123,7 @@ var require_sqlite_cache_store = __commonJS({
PRAGMA temp_store = memory;
PRAGMA optimize;
- CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION7} (
+ CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION17} (
-- Data specific to us
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL,
@@ -33662,8 +34142,8 @@ var require_sqlite_cache_store = __commonJS({
staleAt INTEGER NOT NULL
);
- CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_getValuesQuery ON cacheInterceptorV${VERSION7}(url, method, deleteAt);
- CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_deleteByUrlQuery ON cacheInterceptorV${VERSION7}(deleteAt);
+ CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION17}_getValuesQuery ON cacheInterceptorV${VERSION17}(url, method, deleteAt);
+ CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION17}_deleteByUrlQuery ON cacheInterceptorV${VERSION17}(deleteAt);
`);
this.#getValuesQuery = this.#db.prepare(`
SELECT
@@ -33678,7 +34158,7 @@ var require_sqlite_cache_store = __commonJS({
vary,
cachedAt,
staleAt
- FROM cacheInterceptorV${VERSION7}
+ FROM cacheInterceptorV${VERSION17}
WHERE
url = ?
AND method = ?
@@ -33686,7 +34166,7 @@ var require_sqlite_cache_store = __commonJS({
deleteAt ASC
`);
this.#updateValueQuery = this.#db.prepare(`
- UPDATE cacheInterceptorV${VERSION7} SET
+ UPDATE cacheInterceptorV${VERSION17} SET
body = ?,
deleteAt = ?,
statusCode = ?,
@@ -33700,7 +34180,7 @@ var require_sqlite_cache_store = __commonJS({
id = ?
`);
this.#insertValueQuery = this.#db.prepare(`
- INSERT INTO cacheInterceptorV${VERSION7} (
+ INSERT INTO cacheInterceptorV${VERSION17} (
url,
method,
body,
@@ -33716,20 +34196,20 @@ var require_sqlite_cache_store = __commonJS({
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`);
this.#deleteByUrlQuery = this.#db.prepare(
- `DELETE FROM cacheInterceptorV${VERSION7} WHERE url = ?`
+ `DELETE FROM cacheInterceptorV${VERSION17} WHERE url = ?`
);
this.#countEntriesQuery = this.#db.prepare(
- `SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION7}`
+ `SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION17}`
);
this.#deleteExpiredValuesQuery = this.#db.prepare(
- `DELETE FROM cacheInterceptorV${VERSION7} WHERE deleteAt <= ?`
+ `DELETE FROM cacheInterceptorV${VERSION17} WHERE deleteAt <= ?`
);
this.#deleteOldValuesQuery = this.#maxCount === Infinity ? null : this.#db.prepare(`
- DELETE FROM cacheInterceptorV${VERSION7}
+ DELETE FROM cacheInterceptorV${VERSION17}
WHERE id IN (
SELECT
id
- FROM cacheInterceptorV${VERSION7}
+ FROM cacheInterceptorV${VERSION17}
ORDER BY cachedAt DESC
LIMIT ?
)
@@ -34932,7 +35412,7 @@ var require_request4 = __commonJS({
webidl.argumentLengthCheck(arguments, 1, prefix);
input = webidl.converters.RequestInfo(input, prefix, "input");
init = webidl.converters.RequestInit(init, prefix, "init");
- let request2 = null;
+ let request7 = null;
let fallbackMode = null;
const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl;
let signal = null;
@@ -34949,18 +35429,18 @@ var require_request4 = __commonJS({
"Request cannot be constructed from a URL that includes credentials: " + input
);
}
- request2 = makeRequest({ urlList: [parsedURL] });
+ request7 = makeRequest({ urlList: [parsedURL] });
fallbackMode = "cors";
} else {
assert(webidl.is.Request(input));
- request2 = input.#state;
+ request7 = input.#state;
signal = input.#signal;
this.#dispatcher = init.dispatcher || input.#dispatcher;
}
const origin = environmentSettingsObject.settingsObject.origin;
let window = "client";
- if (request2.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request2.window, origin)) {
- window = request2.window;
+ if (request7.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request7.window, origin)) {
+ window = request7.window;
}
if (init.window != null) {
throw new TypeError(`'window' option '${window}' must be null`);
@@ -34968,66 +35448,66 @@ var require_request4 = __commonJS({
if ("window" in init) {
window = "no-window";
}
- request2 = makeRequest({
+ request7 = 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,
+ method: request7.method,
// header list A copy of request’s header list.
// undici implementation note: headersList is cloned in makeRequest
- headersList: request2.headersList,
+ headersList: request7.headersList,
// unsafe-request flag Set.
- unsafeRequest: request2.unsafeRequest,
+ unsafeRequest: request7.unsafeRequest,
// client This’s relevant settings object.
client: environmentSettingsObject.settingsObject,
// window window.
window,
// priority request’s priority.
- priority: request2.priority,
+ priority: request7.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,
+ origin: request7.origin,
// referrer request’s referrer.
- referrer: request2.referrer,
+ referrer: request7.referrer,
// referrer policy request’s referrer policy.
- referrerPolicy: request2.referrerPolicy,
+ referrerPolicy: request7.referrerPolicy,
// mode request’s mode.
- mode: request2.mode,
+ mode: request7.mode,
// credentials mode request’s credentials mode.
- credentials: request2.credentials,
+ credentials: request7.credentials,
// cache mode request’s cache mode.
- cache: request2.cache,
+ cache: request7.cache,
// redirect mode request’s redirect mode.
- redirect: request2.redirect,
+ redirect: request7.redirect,
// integrity metadata request’s integrity metadata.
- integrity: request2.integrity,
+ integrity: request7.integrity,
// keepalive request’s keepalive.
- keepalive: request2.keepalive,
+ keepalive: request7.keepalive,
// reload-navigation flag request’s reload-navigation flag.
- reloadNavigation: request2.reloadNavigation,
+ reloadNavigation: request7.reloadNavigation,
// history-navigation flag request’s history-navigation flag.
- historyNavigation: request2.historyNavigation,
+ historyNavigation: request7.historyNavigation,
// URL list A clone of request’s URL list.
- urlList: [...request2.urlList]
+ urlList: [...request7.urlList]
});
const initHasKey = Object.keys(init).length !== 0;
if (initHasKey) {
- if (request2.mode === "navigate") {
- request2.mode = "same-origin";
+ if (request7.mode === "navigate") {
+ request7.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];
+ request7.reloadNavigation = false;
+ request7.historyNavigation = false;
+ request7.origin = "client";
+ request7.referrer = "client";
+ request7.referrerPolicy = "";
+ request7.url = request7.urlList[request7.urlList.length - 1];
+ request7.urlList = [request7.url];
}
if (init.referrer !== void 0) {
const referrer = init.referrer;
if (referrer === "") {
- request2.referrer = "no-referrer";
+ request7.referrer = "no-referrer";
} else {
let parsedReferrer;
try {
@@ -35036,14 +35516,14 @@ var require_request4 = __commonJS({
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";
+ request7.referrer = "client";
} else {
- request2.referrer = parsedReferrer;
+ request7.referrer = parsedReferrer;
}
}
}
if (init.referrerPolicy !== void 0) {
- request2.referrerPolicy = init.referrerPolicy;
+ request7.referrerPolicy = init.referrerPolicy;
}
let mode;
if (init.mode !== void 0) {
@@ -35058,33 +35538,33 @@ var require_request4 = __commonJS({
});
}
if (mode != null) {
- request2.mode = mode;
+ request7.mode = mode;
}
if (init.credentials !== void 0) {
- request2.credentials = init.credentials;
+ request7.credentials = init.credentials;
}
if (init.cache !== void 0) {
- request2.cache = init.cache;
+ request7.cache = init.cache;
}
- if (request2.cache === "only-if-cached" && request2.mode !== "same-origin") {
+ if (request7.cache === "only-if-cached" && request7.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;
+ request7.redirect = init.redirect;
}
if (init.integrity != null) {
- request2.integrity = String(init.integrity);
+ request7.integrity = String(init.integrity);
}
if (init.keepalive !== void 0) {
- request2.keepalive = Boolean(init.keepalive);
+ request7.keepalive = Boolean(init.keepalive);
}
if (init.method !== void 0) {
let method = init.method;
const mayBeNormalized = normalizedMethodRecords[method];
if (mayBeNormalized !== void 0) {
- request2.method = mayBeNormalized;
+ request7.method = mayBeNormalized;
} else {
if (!isValidHTTPToken(method)) {
throw new TypeError(`'${method}' is not a valid HTTP method.`);
@@ -35094,9 +35574,9 @@ var require_request4 = __commonJS({
throw new TypeError(`'${method}' HTTP method is unsupported.`);
}
method = normalizedMethodRecordsBase[upperCase] ?? method;
- request2.method = method;
+ request7.method = method;
}
- if (!patchMethodWarning && request2.method === "patch") {
+ if (!patchMethodWarning && request7.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"
});
@@ -35106,7 +35586,7 @@ var require_request4 = __commonJS({
if (init.signal !== void 0) {
signal = init.signal;
}
- this.#state = request2;
+ this.#state = request7;
const ac = new AbortController();
this.#signal = ac.signal;
if (signal != null) {
@@ -35124,12 +35604,12 @@ var require_request4 = __commonJS({
}
}
this.#headers = new Headers(kConstruct);
- setHeadersList(this.#headers, request2.headersList);
+ setHeadersList(this.#headers, request7.headersList);
setHeadersGuard(this.#headers, "request");
if (mode === "no-cors") {
- if (!corsSafeListedMethodsSet.has(request2.method)) {
+ if (!corsSafeListedMethodsSet.has(request7.method)) {
throw new TypeError(
- `'${request2.method} is unsupported in no-cors mode.`
+ `'${request7.method} is unsupported in no-cors mode.`
);
}
setHeadersGuard(this.#headers, "request-no-cors");
@@ -35148,14 +35628,14 @@ var require_request4 = __commonJS({
}
}
const inputBody = webidl.is.Request(input) ? input.#state.body : null;
- if ((init.body != null || inputBody != null) && (request2.method === "GET" || request2.method === "HEAD")) {
+ if ((init.body != null || inputBody != null) && (request7.method === "GET" || request7.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
+ request7.keepalive
);
initBody = extractedBody;
if (contentType && !getHeadersList(this.#headers).contains("content-type", true)) {
@@ -35167,12 +35647,12 @@ var require_request4 = __commonJS({
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") {
+ if (request7.mode !== "same-origin" && request7.mode !== "cors") {
throw new TypeError(
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
);
}
- request2.useCORSPreflightFlag = true;
+ request7.useCORSPreflightFlag = true;
}
let finalBody = inputOrInitBody;
if (initBody == null && inputBody != null) {
@@ -35362,42 +35842,42 @@ var require_request4 = __commonJS({
* @param {Request} request
* @param {AbortSignal} newSignal
*/
- static setRequestSignal(request2, newSignal) {
- request2.#signal = newSignal;
- return request2;
+ static setRequestSignal(request7, newSignal) {
+ request7.#signal = newSignal;
+ return request7;
}
/**
* @param {Request} request
*/
- static getRequestDispatcher(request2) {
- return request2.#dispatcher;
+ static getRequestDispatcher(request7) {
+ return request7.#dispatcher;
}
/**
* @param {Request} request
* @param {import('../../dispatcher/dispatcher')} newDispatcher
*/
- static setRequestDispatcher(request2, newDispatcher) {
- request2.#dispatcher = newDispatcher;
+ static setRequestDispatcher(request7, newDispatcher) {
+ request7.#dispatcher = newDispatcher;
}
/**
* @param {Request} request
* @param {Headers} newHeaders
*/
- static setRequestHeaders(request2, newHeaders) {
- request2.#headers = newHeaders;
+ static setRequestHeaders(request7, newHeaders) {
+ request7.#headers = newHeaders;
}
/**
* @param {Request} request
*/
- static getRequestState(request2) {
- return request2.#state;
+ static getRequestState(request7) {
+ return request7.#state;
}
/**
* @param {Request} request
* @param {any} newState
*/
- static setRequestState(request2, newState) {
- request2.#state = newState;
+ static setRequestState(request7, newState) {
+ request7.#state = newState;
}
};
var { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request;
@@ -35450,23 +35930,23 @@ var require_request4 = __commonJS({
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);
+ function cloneRequest(request7) {
+ const newRequest = makeRequest({ ...request7, body: null });
+ if (request7.body != null) {
+ newRequest.body = cloneBody(newRequest, request7.body);
}
return newRequest;
}
function fromInnerRequest(innerRequest, dispatcher, signal, guard) {
- const request2 = new Request(kConstruct);
- setRequestState(request2, innerRequest);
- setRequestDispatcher(request2, dispatcher);
- setRequestSignal(request2, signal);
+ const request7 = new Request(kConstruct);
+ setRequestState(request7, innerRequest);
+ setRequestDispatcher(request7, dispatcher);
+ setRequestSignal(request7, signal);
const headers = new Headers(kConstruct);
- setRequestHeaders(request2, headers);
+ setRequestHeaders(request7, headers);
setHeadersList(headers, innerRequest.headersList);
setHeadersGuard(headers, guard);
- return request2;
+ return request7;
}
Object.defineProperties(Request.prototype, {
method: kEnumerableProperty,
@@ -35708,14 +36188,14 @@ var require_fetch2 = __commonJS({
p.reject(e);
return p.promise;
}
- const request2 = getRequestState(requestObject);
+ const request7 = getRequestState(requestObject);
if (requestObject.signal.aborted) {
- abortFetch(p, request2, null, requestObject.signal.reason);
+ abortFetch(p, request7, null, requestObject.signal.reason);
return p.promise;
}
- const globalObject = request2.client.globalObject;
+ const globalObject = request7.client.globalObject;
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
- request2.serviceWorkers = "none";
+ request7.serviceWorkers = "none";
}
let responseObject = null;
let locallyAborted = false;
@@ -35727,7 +36207,7 @@ var require_fetch2 = __commonJS({
assert(controller != null);
controller.abort(requestObject.signal.reason);
const realResponse = responseObject?.deref();
- abortFetch(p, request2, realResponse, requestObject.signal.reason);
+ abortFetch(p, request7, realResponse, requestObject.signal.reason);
}
);
const processResponse = (response) => {
@@ -35735,7 +36215,7 @@ var require_fetch2 = __commonJS({
return;
}
if (response.aborted) {
- abortFetch(p, request2, responseObject, controller.serializedAbortReason);
+ abortFetch(p, request7, responseObject, controller.serializedAbortReason);
return;
}
if (response.type === "error") {
@@ -35747,7 +36227,7 @@ var require_fetch2 = __commonJS({
p = null;
};
controller = fetching({
- request: request2,
+ request: request7,
processResponseEndOfBody: handleFetchDone,
processResponse,
dispatcher: getRequestDispatcher(requestObject)
@@ -35791,12 +36271,12 @@ var require_fetch2 = __commonJS({
);
}
var markResourceTiming = performance.markResourceTiming;
- function abortFetch(p, request2, responseObject, error) {
+ function abortFetch(p, request7, responseObject, error) {
if (p) {
p.reject(error);
}
- if (request2.body?.stream != null && isReadable(request2.body.stream)) {
- request2.body.stream.cancel(error).catch((err) => {
+ if (request7.body?.stream != null && isReadable(request7.body.stream)) {
+ request7.body.stream.cancel(error).catch((err) => {
if (err.code === "ERR_INVALID_STATE") {
return;
}
@@ -35817,7 +36297,7 @@ var require_fetch2 = __commonJS({
}
}
function fetching({
- request: request2,
+ request: request7,
processRequestBodyChunkLength,
processRequestEndOfBody,
processResponse,
@@ -35830,9 +36310,9 @@ var require_fetch2 = __commonJS({
assert(dispatcher);
let taskDestination = null;
let crossOriginIsolatedCapability = false;
- if (request2.client != null) {
- taskDestination = request2.client.globalObject;
- crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability;
+ if (request7.client != null) {
+ taskDestination = request7.client.globalObject;
+ crossOriginIsolatedCapability = request7.client.crossOriginIsolatedCapability;
}
const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
const timingInfo = createOpaqueTimingInfo({
@@ -35840,7 +36320,7 @@ var require_fetch2 = __commonJS({
});
const fetchParams = {
controller: new Fetch(dispatcher),
- request: request2,
+ request: request7,
timingInfo,
processRequestBodyChunkLength,
processRequestEndOfBody,
@@ -35850,32 +36330,32 @@ var require_fetch2 = __commonJS({
taskDestination,
crossOriginIsolatedCapability
};
- assert(!request2.body || request2.body.stream);
- if (request2.window === "client") {
- request2.window = request2.client?.globalObject?.constructor?.name === "Window" ? request2.client : "no-window";
+ assert(!request7.body || request7.body.stream);
+ if (request7.window === "client") {
+ request7.window = request7.client?.globalObject?.constructor?.name === "Window" ? request7.client : "no-window";
}
- if (request2.origin === "client") {
- request2.origin = request2.client.origin;
+ if (request7.origin === "client") {
+ request7.origin = request7.client.origin;
}
- if (request2.policyContainer === "client") {
- if (request2.client != null) {
- request2.policyContainer = clonePolicyContainer(
- request2.client.policyContainer
+ if (request7.policyContainer === "client") {
+ if (request7.client != null) {
+ request7.policyContainer = clonePolicyContainer(
+ request7.client.policyContainer
);
} else {
- request2.policyContainer = makePolicyContainer();
+ request7.policyContainer = makePolicyContainer();
}
}
- if (!request2.headersList.contains("accept", true)) {
+ if (!request7.headersList.contains("accept", true)) {
const value = "*/*";
- request2.headersList.append("accept", value, true);
+ request7.headersList.append("accept", value, true);
}
- if (!request2.headersList.contains("accept-language", true)) {
- request2.headersList.append("accept-language", "*", true);
+ if (!request7.headersList.contains("accept-language", true)) {
+ request7.headersList.append("accept-language", "*", true);
}
- if (request2.priority === null) {
+ if (request7.priority === null) {
}
- if (subresourceSet.has(request2.destination)) {
+ if (subresourceSet.has(request7.destination)) {
}
mainFetch(fetchParams).catch((err) => {
fetchParams.controller.terminate(err);
@@ -35883,47 +36363,47 @@ var require_fetch2 = __commonJS({
return fetchParams.controller;
}
async function mainFetch(fetchParams, recursive = false) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
- if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) {
+ if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
response = makeNetworkError("local URLs only");
}
- tryUpgradeRequestToAPotentiallyTrustworthyURL(request2);
- if (requestBadPort(request2) === "blocked") {
+ tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
+ if (requestBadPort(request7) === "blocked") {
response = makeNetworkError("bad port");
}
- if (request2.referrerPolicy === "") {
- request2.referrerPolicy = request2.policyContainer.referrerPolicy;
+ if (request7.referrerPolicy === "") {
+ request7.referrerPolicy = request7.policyContainer.referrerPolicy;
}
- if (request2.referrer !== "no-referrer") {
- request2.referrer = determineRequestsReferrer(request2);
+ if (request7.referrer !== "no-referrer") {
+ request7.referrer = determineRequestsReferrer(request7);
}
if (response === null) {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
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"
+ sameOrigin(currentURL, request7.url) && request7.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")
+ (request7.mode === "navigate" || request7.mode === "websocket")
) {
- request2.responseTainting = "basic";
+ request7.responseTainting = "basic";
response = await schemeFetch(fetchParams);
- } else if (request2.mode === "same-origin") {
+ } else if (request7.mode === "same-origin") {
response = makeNetworkError('request mode cannot be "same-origin"');
- } else if (request2.mode === "no-cors") {
- if (request2.redirect !== "follow") {
+ } else if (request7.mode === "no-cors") {
+ if (request7.redirect !== "follow") {
response = makeNetworkError(
'redirect mode cannot be "follow" for "no-cors" request'
);
} else {
- request2.responseTainting = "opaque";
+ request7.responseTainting = "opaque";
response = await schemeFetch(fetchParams);
}
- } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
+ } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
} else {
- request2.responseTainting = "cors";
+ request7.responseTainting = "cors";
response = await httpFetch(fetchParams);
}
}
@@ -35931,13 +36411,13 @@ var require_fetch2 = __commonJS({
return response;
}
if (response.status !== 0 && !response.internalResponse) {
- if (request2.responseTainting === "cors") {
+ if (request7.responseTainting === "cors") {
}
- if (request2.responseTainting === "basic") {
+ if (request7.responseTainting === "basic") {
response = filterResponse(response, "basic");
- } else if (request2.responseTainting === "cors") {
+ } else if (request7.responseTainting === "cors") {
response = filterResponse(response, "cors");
- } else if (request2.responseTainting === "opaque") {
+ } else if (request7.responseTainting === "opaque") {
response = filterResponse(response, "opaque");
} else {
assert(false);
@@ -35945,26 +36425,26 @@ var require_fetch2 = __commonJS({
}
let internalResponse = response.status === 0 ? response : response.internalResponse;
if (internalResponse.urlList.length === 0) {
- internalResponse.urlList.push(...request2.urlList);
+ internalResponse.urlList.push(...request7.urlList);
}
- if (!request2.timingAllowFailed) {
+ if (!request7.timingAllowFailed) {
response.timingAllowPassed = true;
}
- if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request2.headers.contains("range", true)) {
+ if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range", true)) {
response = internalResponse = makeNetworkError();
}
- if (response.status !== 0 && (request2.method === "HEAD" || request2.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
+ if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
internalResponse.body = null;
fetchParams.controller.dump = true;
}
- if (request2.integrity) {
+ if (request7.integrity) {
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
- if (request2.responseTainting === "opaque" || response.body == null) {
+ if (request7.responseTainting === "opaque" || response.body == null) {
processBodyError(response.error);
return;
}
const processBody = (bytes) => {
- if (!bytesMatch(bytes, request2.integrity)) {
+ if (!bytesMatch(bytes, request7.integrity)) {
processBodyError("integrity mismatch");
return;
}
@@ -35980,8 +36460,8 @@ var require_fetch2 = __commonJS({
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
}
- const { request: request2 } = fetchParams;
- const { protocol: scheme } = requestCurrentURL(request2);
+ const { request: request7 } = fetchParams;
+ const { protocol: scheme } = requestCurrentURL(request7);
switch (scheme) {
case "about:": {
return Promise.resolve(makeNetworkError("about scheme is not supported"));
@@ -35990,19 +36470,19 @@ var require_fetch2 = __commonJS({
if (!resolveObjectURL) {
resolveObjectURL = require("node:buffer").resolveObjectURL;
}
- const blobURLEntry = requestCurrentURL(request2);
+ const blobURLEntry = requestCurrentURL(request7);
if (blobURLEntry.search.length !== 0) {
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
}
const blob = resolveObjectURL(blobURLEntry.toString());
- if (request2.method !== "GET" || !webidl.is.Blob(blob)) {
+ if (request7.method !== "GET" || !webidl.is.Blob(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)) {
+ if (!request7.headersList.contains("range", true)) {
const bodyWithType = extractBody(blob);
response.statusText = "OK";
response.body = bodyWithType[0];
@@ -36010,7 +36490,7 @@ var require_fetch2 = __commonJS({
response.headersList.set("content-type", type, true);
} else {
response.rangeRequested = true;
- const rangeHeader = request2.headersList.get("range", true);
+ const rangeHeader = request7.headersList.get("range", true);
const rangeValue = simpleRangeHeaderValue(rangeHeader, true);
if (rangeValue === "failure") {
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
@@ -36041,7 +36521,7 @@ var require_fetch2 = __commonJS({
return Promise.resolve(response);
}
case "data:": {
- const currentURL = requestCurrentURL(request2);
+ const currentURL = requestCurrentURL(request7);
const dataURLStruct = dataURLProcessor(currentURL);
if (dataURLStruct === "failure") {
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
@@ -36130,41 +36610,41 @@ var require_fetch2 = __commonJS({
}
}
async function httpFetch(fetchParams) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
let actualResponse = null;
const timingInfo = fetchParams.timingInfo;
- if (request2.serviceWorkers === "all") {
+ if (request7.serviceWorkers === "all") {
}
if (response === null) {
- if (request2.redirect === "follow") {
- request2.serviceWorkers = "none";
+ if (request7.redirect === "follow") {
+ request7.serviceWorkers = "none";
}
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
- if (request2.responseTainting === "cors" && corsCheck(request2, response) === "failure") {
+ if (request7.responseTainting === "cors" && corsCheck(request7, response) === "failure") {
return makeNetworkError("cors failure");
}
- if (TAOCheck(request2, response) === "failure") {
- request2.timingAllowFailed = true;
+ if (TAOCheck(request7, response) === "failure") {
+ request7.timingAllowFailed = true;
}
}
- if ((request2.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
- request2.origin,
- request2.client,
- request2.destination,
+ if ((request7.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
+ request7.origin,
+ request7.client,
+ request7.destination,
actualResponse
) === "blocked") {
return makeNetworkError("blocked");
}
if (redirectStatusSet.has(actualResponse.status)) {
- if (request2.redirect !== "manual") {
+ if (request7.redirect !== "manual") {
fetchParams.controller.connection.destroy(void 0, false);
}
- if (request2.redirect === "error") {
+ if (request7.redirect === "error") {
response = makeNetworkError("unexpected redirect");
- } else if (request2.redirect === "manual") {
+ } else if (request7.redirect === "manual") {
response = actualResponse;
- } else if (request2.redirect === "follow") {
+ } else if (request7.redirect === "follow") {
response = await httpRedirectFetch(fetchParams, response);
} else {
assert(false);
@@ -36174,13 +36654,13 @@ var require_fetch2 = __commonJS({
return response;
}
function httpRedirectFetch(fetchParams, response) {
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
const actualResponse = response.internalResponse ? response.internalResponse : response;
let locationURL;
try {
locationURL = responseLocationURL(
actualResponse,
- requestCurrentURL(request2).hash
+ requestCurrentURL(request7).hash
);
if (locationURL == null) {
return response;
@@ -36191,63 +36671,63 @@ var require_fetch2 = __commonJS({
if (!urlIsHttpHttpsScheme(locationURL)) {
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
}
- if (request2.redirectCount === 20) {
+ if (request7.redirectCount === 20) {
return Promise.resolve(makeNetworkError("redirect count exceeded"));
}
- request2.redirectCount += 1;
- if (request2.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request2, locationURL)) {
+ request7.redirectCount += 1;
+ if (request7.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request7, locationURL)) {
return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
}
- if (request2.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
+ if (request7.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) {
+ if (actualResponse.status !== 303 && request7.body != null && request7.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;
+ if ([301, 302].includes(actualResponse.status) && request7.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request7.method)) {
+ request7.method = "GET";
+ request7.body = null;
for (const headerName of requestBodyHeader) {
- request2.headersList.delete(headerName);
+ request7.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 (!sameOrigin(requestCurrentURL(request7), locationURL)) {
+ request7.headersList.delete("authorization", true);
+ request7.headersList.delete("proxy-authorization", true);
+ request7.headersList.delete("cookie", true);
+ request7.headersList.delete("host", true);
}
- if (request2.body != null) {
- assert(request2.body.source != null);
- request2.body = safelyExtractBody(request2.body.source)[0];
+ if (request7.body != null) {
+ assert(request7.body.source != null);
+ request7.body = safelyExtractBody(request7.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);
+ request7.urlList.push(locationURL);
+ setRequestReferrerPolicyOnRedirect(request7, actualResponse);
return mainFetch(fetchParams, true);
}
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
- const request2 = fetchParams.request;
+ const request7 = 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") {
+ if (request7.window === "no-window" && request7.redirect === "error") {
httpFetchParams = fetchParams;
- httpRequest = request2;
+ httpRequest = request7;
} else {
- httpRequest = cloneRequest(request2);
+ httpRequest = cloneRequest(request7);
httpFetchParams = { ...fetchParams };
httpFetchParams.request = httpRequest;
}
- const includeCredentials = request2.credentials === "include" || request2.credentials === "same-origin" && request2.responseTainting === "basic";
+ const includeCredentials = request7.credentials === "include" || request7.credentials === "same-origin" && request7.responseTainting === "basic";
const contentLength = httpRequest.body ? httpRequest.body.length : null;
let contentLengthHeaderValue = null;
if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) {
@@ -36324,7 +36804,7 @@ var require_fetch2 = __commonJS({
}
response.requestIncludesCredentials = includeCredentials;
if (response.status === 407) {
- if (request2.window === "no-window") {
+ if (request7.window === "no-window") {
return makeNetworkError();
}
if (isCancelled(fetchParams)) {
@@ -36336,7 +36816,7 @@ var require_fetch2 = __commonJS({
// 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)
+ (request7.body == null || request7.body.source != null)
) {
if (isCancelled(fetchParams)) {
return makeAppropriateNetworkError(fetchParams);
@@ -36366,21 +36846,21 @@ var require_fetch2 = __commonJS({
}
}
};
- const request2 = fetchParams.request;
+ const request7 = fetchParams.request;
let response = null;
const timingInfo = fetchParams.timingInfo;
const httpCache = null;
if (httpCache == null) {
- request2.cache = "no-store";
+ request7.cache = "no-store";
}
const newConnection = forceNewConnection ? "yes" : "no";
- if (request2.mode === "websocket") {
+ if (request7.mode === "websocket") {
} else {
}
let requestBody = null;
- if (request2.body == null && fetchParams.processRequestEndOfBody) {
+ if (request7.body == null && fetchParams.processRequestEndOfBody) {
queueMicrotask(() => fetchParams.processRequestEndOfBody());
- } else if (request2.body != null) {
+ } else if (request7.body != null) {
const processBodyChunk = async function* (bytes) {
if (isCancelled(fetchParams)) {
return;
@@ -36408,7 +36888,7 @@ var require_fetch2 = __commonJS({
};
requestBody = async function* () {
try {
- for await (const bytes of request2.body.stream) {
+ for await (const bytes of request7.body.stream) {
yield* processBodyChunk(bytes);
}
processEndOfBody();
@@ -36519,17 +36999,17 @@ var require_fetch2 = __commonJS({
}
return response;
function dispatch({ body }) {
- const url = requestCurrentURL(request2);
+ const url = requestCurrentURL(request7);
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) : body,
- headers: request2.headersList.entries,
+ method: request7.method,
+ body: agent.isMockActive ? request7.body && (request7.body.source || request7.body.stream) : body,
+ headers: request7.headersList.entries,
maxRedirections: 0,
- upgrade: request2.mode === "websocket" ? "websocket" : void 0
+ upgrade: request7.mode === "websocket" ? "websocket" : void 0
},
{
body: null,
@@ -36565,8 +37045,8 @@ var require_fetch2 = __commonJS({
location = headersList.get("location", true);
this.body = new Readable({ read: resume });
const decoders = [];
- const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status);
- if (codings.length !== 0 && request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const willFollow = location && request7.redirect === "follow" && redirectStatusSet.has(status);
+ if (codings.length !== 0 && request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
for (let i = codings.length - 1; i >= 0; --i) {
const coding = codings[i];
if (coding === "x-gzip" || coding === "gzip") {
@@ -36715,31 +37195,31 @@ var require_cache4 = __commonJS({
webidl.util.markAsUncloneable(this);
this.#relevantRequestResponseList = arguments[1];
}
- async match(request2, options = {}) {
+ async match(request7, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.match";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7, prefix, "request");
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
- const p = this.#internalMatchAll(request2, options, 1);
+ const p = this.#internalMatchAll(request7, options, 1);
if (p.length === 0) {
return;
}
return p[0];
}
- async matchAll(request2 = void 0, options = {}) {
+ async matchAll(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.matchAll";
- if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7, prefix, "request");
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
- return this.#internalMatchAll(request2, options);
+ return this.#internalMatchAll(request7, options);
}
- async add(request2) {
+ async add(request7) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.add";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
- const requests = [request2];
+ request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ const requests = [request7];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
}
@@ -36749,19 +37229,19 @@ var require_cache4 = __commonJS({
webidl.argumentLengthCheck(arguments, 1, prefix);
const responsePromises = [];
const requestList = [];
- for (let request2 of requests) {
- if (request2 === void 0) {
+ for (let request7 of requests) {
+ if (request7 === void 0) {
throw webidl.errors.conversionFailed({
prefix,
argument: "Argument 1",
types: ["undefined is not allowed"]
});
}
- request2 = webidl.converters.RequestInfo(request2);
- if (typeof request2 === "string") {
+ request7 = webidl.converters.RequestInfo(request7);
+ if (typeof request7 === "string") {
continue;
}
- const r = getRequestState(request2);
+ const r = getRequestState(request7);
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
throw webidl.errors.exception({
header: prefix,
@@ -36770,8 +37250,8 @@ var require_cache4 = __commonJS({
}
}
const fetchControllers = [];
- for (const request2 of requests) {
- const r = getRequestState(new Request(request2));
+ for (const request7 of requests) {
+ const r = getRequestState(new Request(request7));
if (!urlIsHttpHttpsScheme(r.url)) {
throw webidl.errors.exception({
header: prefix,
@@ -36848,17 +37328,17 @@ var require_cache4 = __commonJS({
});
return cacheJobPromise.promise;
}
- async put(request2, response) {
+ async put(request7, response) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.put";
webidl.argumentLengthCheck(arguments, 2, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7, prefix, "request");
response = webidl.converters.Response(response, prefix, "response");
let innerRequest = null;
- if (webidl.is.Request(request2)) {
- innerRequest = getRequestState(request2);
+ if (webidl.is.Request(request7)) {
+ innerRequest = getRequestState(request7);
} else {
- innerRequest = getRequestState(new Request(request2));
+ innerRequest = getRequestState(new Request(request7));
}
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
throw webidl.errors.exception({
@@ -36929,21 +37409,21 @@ var require_cache4 = __commonJS({
});
return cacheJobPromise.promise;
}
- async delete(request2, options = {}) {
+ async delete(request7, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.delete";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7, prefix, "request");
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
- if (webidl.is.Request(request2)) {
- r = getRequestState(request2);
+ if (webidl.is.Request(request7)) {
+ r = getRequestState(request7);
if (r.method !== "GET" && !options.ignoreMethod) {
return false;
}
} else {
- assert(typeof request2 === "string");
- r = getRequestState(new Request(request2));
+ assert(typeof request7 === "string");
+ r = getRequestState(new Request(request7));
}
const operations = [];
const operation = {
@@ -36975,25 +37455,25 @@ var require_cache4 = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions} options
* @returns {Promise}
*/
- async keys(request2 = void 0, options = {}) {
+ async keys(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.keys";
- if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7, prefix, "request");
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
- if (request2 !== void 0) {
- if (webidl.is.Request(request2)) {
- r = getRequestState(request2);
+ if (request7 !== void 0) {
+ if (webidl.is.Request(request7)) {
+ r = getRequestState(request7);
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request2 === "string") {
- r = getRequestState(new Request(request2));
+ } else if (typeof request7 === "string") {
+ r = getRequestState(new Request(request7));
}
}
const promise = createDeferredPromise();
const requests = [];
- if (request2 === void 0) {
+ if (request7 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
requests.push(requestResponse[0]);
}
@@ -37005,9 +37485,9 @@ var require_cache4 = __commonJS({
}
queueMicrotask(() => {
const requestList = [];
- for (const request3 of requests) {
+ for (const request8 of requests) {
const requestObject = fromInnerRequest(
- request3,
+ request8,
void 0,
new AbortController().signal,
"immutable"
@@ -37126,9 +37606,9 @@ var require_cache4 = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
- #requestMatchesCachedItem(requestQuery, request2, response = null, options) {
+ #requestMatchesCachedItem(requestQuery, request7, response = null, options) {
const queryURL = new URL(requestQuery.url);
- const cachedURL = new URL(request2.url);
+ const cachedURL = new URL(request7.url);
if (options?.ignoreSearch) {
cachedURL.search = "";
queryURL.search = "";
@@ -37144,7 +37624,7 @@ var require_cache4 = __commonJS({
if (fieldValue === "*") {
return false;
}
- const requestValue = request2.headersList.get(fieldValue);
+ const requestValue = request7.headersList.get(fieldValue);
const queryValue = requestQuery.headersList.get(fieldValue);
if (requestValue !== queryValue) {
return false;
@@ -37152,20 +37632,20 @@ var require_cache4 = __commonJS({
}
return true;
}
- #internalMatchAll(request2, options, maxResponses = Infinity) {
+ #internalMatchAll(request7, options, maxResponses = Infinity) {
let r = null;
- if (request2 !== void 0) {
- if (webidl.is.Request(request2)) {
- r = getRequestState(request2);
+ if (request7 !== void 0) {
+ if (webidl.is.Request(request7)) {
+ r = getRequestState(request7);
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request2 === "string") {
- r = getRequestState(new Request(request2));
+ } else if (typeof request7 === "string") {
+ r = getRequestState(new Request(request7));
}
}
const responses = [];
- if (request2 === void 0) {
+ if (request7 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
responses.push(requestResponse[1]);
}
@@ -37257,21 +37737,21 @@ var require_cachestorage2 = __commonJS({
}
webidl.util.markAsUncloneable(this);
}
- async match(request2, options = {}) {
+ async match(request7, options = {}) {
webidl.brandCheck(this, _CacheStorage);
webidl.argumentLengthCheck(arguments, 1, "CacheStorage.match");
- request2 = webidl.converters.RequestInfo(request2);
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.MultiCacheQueryOptions(options);
if (options.cacheName != null) {
if (this.#caches.has(options.cacheName)) {
const cacheList = this.#caches.get(options.cacheName);
const cache = new Cache(kConstruct, cacheList);
- return await cache.match(request2, options);
+ return await cache.match(request7, options);
}
} else {
for (const cacheList of this.#caches.values()) {
const cache = new Cache(kConstruct, cacheList);
- const response = await cache.match(request2, options);
+ const response = await cache.match(request7, options);
if (response !== void 0) {
return response;
}
@@ -38433,7 +38913,7 @@ var require_connection2 = __commonJS({
function establishWebSocketConnection(url, protocols, client, handler, options) {
const requestURL = url;
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
- const request2 = makeRequest({
+ const request7 = makeRequest({
urlList: [requestURL],
client,
serviceWorkers: "none",
@@ -38445,18 +38925,18 @@ var require_connection2 = __commonJS({
});
if (options.headers) {
const headersList = getHeadersList(new Headers(options.headers));
- request2.headersList = headersList;
+ request7.headersList = headersList;
}
const keyValue = crypto.randomBytes(16).toString("base64");
- request2.headersList.append("sec-websocket-key", keyValue, true);
- request2.headersList.append("sec-websocket-version", "13", true);
+ request7.headersList.append("sec-websocket-key", keyValue, true);
+ request7.headersList.append("sec-websocket-version", "13", true);
for (const protocol of protocols) {
- request2.headersList.append("sec-websocket-protocol", protocol, true);
+ request7.headersList.append("sec-websocket-protocol", protocol, true);
}
const permessageDeflate = "permessage-deflate; client_max_window_bits";
- request2.headersList.append("sec-websocket-extensions", permessageDeflate, true);
+ request7.headersList.append("sec-websocket-extensions", permessageDeflate, true);
const controller = fetching({
- request: request2,
+ request: request7,
useParallelQueue: true,
dispatcher: options.dispatcher,
processResponse(response) {
@@ -38496,7 +38976,7 @@ var require_connection2 = __commonJS({
}
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
if (secProtocol !== null) {
- const requestProtocols = getDecodeSplit("sec-websocket-protocol", request2.headersList);
+ const requestProtocols = getDecodeSplit("sec-websocket-protocol", request7.headersList);
if (!requestProtocols.includes(secProtocol)) {
failWebsocketConnection(handler, 1002, "Protocol was not set in the opening handshake.");
return;
@@ -40560,7 +41040,7 @@ function getUserAgent() {
return "";
}
-// node_modules/@octokit/endpoint/dist-bundle/index.js
+// node_modules/@octokit/auth-app/node_modules/@octokit/endpoint/dist-bundle/index.js
var VERSION = "0.0.0-development";
var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
var DEFAULTS = {
@@ -40568,13 +41048,1518 @@ var DEFAULTS = {
baseUrl: "https://api.github.com",
headers: {
accept: "application/vnd.github.v3+json",
- "user-agent": userAgent
+ "user-agent": userAgent
+ },
+ mediaType: {
+ format: ""
+ }
+};
+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] });
+ }
+ });
+ return result;
+}
+function removeUndefinedProperties(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ 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];
+ }
+ }
+ 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 === "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("");
+ }
+ }
+ 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);
+ }
+ 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 body;
+ 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) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+function endpointWithDefaults(defaults, route, options) {
+ return parse(merge(defaults, route, options));
+}
+function withDefaults(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults.bind(null, DEFAULTS22),
+ merge: merge.bind(null, DEFAULTS22),
+ parse
+ });
+}
+var endpoint = withDefaults(null, DEFAULTS);
+
+// node_modules/@octokit/auth-app/node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
+
+// node_modules/@octokit/request-error/dist-src/index.js
+var 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);
+ this.name = "HttpError";
+ this.status = Number.parseInt(statusCode);
+ if (Number.isNaN(this.status)) {
+ this.status = 0;
+ }
+ if ("response" in options) {
+ this.response = options.response;
+ }
+ const requestCopy = Object.assign({}, options.request);
+ if (options.request.headers.authorization) {
+ requestCopy.headers = Object.assign({}, options.request.headers, {
+ authorization: options.request.headers.authorization.replace(
+ /(? [
+ name,
+ String(value)
+ ])
+ );
+ let fetchResponse;
+ try {
+ fetchResponse = await fetch(requestOptions.url, {
+ method: requestOptions.method,
+ body,
+ 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" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ 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;
+ }
+ }
+ }
+ 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;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ 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(() => "");
+ }
+ const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
+ if (isJSONResponse(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => 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 endpoint22 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint22.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper(endpoint22.parse(endpointOptions));
+ }
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults2.bind(null, endpoint22)
+ });
+ return endpointOptions.request.hook(request22, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint22,
+ defaults: withDefaults2.bind(null, endpoint22)
+ });
+}
+var request = withDefaults2(endpoint, defaults_default);
+
+// node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION3 = "0.0.0-development";
+var userAgent2 = `octokit-endpoint.js/${VERSION3} ${getUserAgent()}`;
+var DEFAULTS2 = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent2
+ },
+ mediaType: {
+ format: ""
+ }
+};
+function lowercaseKeys2(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+function isPlainObject3(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 mergeDeep2(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject3(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep2(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
+ }
+ });
+ return result;
+}
+function removeUndefinedProperties2(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ return obj;
+}
+function merge2(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 = lowercaseKeys2(options.headers);
+ removeUndefinedProperties2(options);
+ removeUndefinedProperties2(options.headers);
+ const mergedOptions = mergeDeep2(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 addQueryParameters2(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 urlVariableRegex2 = /\{[^{}}]+\}/g;
+function removeNonChars2(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+function omit2(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 encodeReserved2(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 encodeUnreserved2(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue2(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved2(value) : encodeUnreserved2(value);
+ if (key) {
+ return encodeUnreserved2(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined2(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator2(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues2(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined2(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(
+ encodeValue2(operator, value, isKeyOperator2(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined2).forEach(function(value2) {
+ result.push(
+ encodeValue2(operator, value2, isKeyOperator2(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined2(value[k])) {
+ result.push(encodeValue2(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined2).forEach(function(value2) {
+ tmp.push(encodeValue2(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined2(value[k])) {
+ tmp.push(encodeUnreserved2(k));
+ tmp.push(encodeValue2(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator2(operator)) {
+ result.push(encodeUnreserved2(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined2(value)) {
+ result.push(encodeUnreserved2(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved2(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl2(template) {
+ return {
+ expand: expand2.bind(null, template)
+ };
+}
+function expand2(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(getValues2(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 encodeReserved2(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 body;
+ let parameters = omit2(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames2(url);
+ url = parseUrl2(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 = omit2(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 = addQueryParameters2(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+function endpointWithDefaults2(defaults, route, options) {
+ return parse2(merge2(defaults, route, options));
+}
+function withDefaults3(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge2(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults2.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults3.bind(null, DEFAULTS22),
+ merge: merge2.bind(null, DEFAULTS22),
+ parse: parse2
+ });
+}
+var endpoint2 = withDefaults3(null, DEFAULTS2);
+
+// node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse2 = __toESM(require_fast_content_type_parse2(), 1);
+var VERSION4 = "9.2.4";
+var defaults_default2 = {
+ headers: {
+ "user-agent": `octokit-request.js/${VERSION4} ${getUserAgent()}`
+ }
+};
+function isPlainObject4(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 fetchWrapper2(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 body = isPlainObject4(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
+ 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" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ 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;
+ }
+ }
+ }
+ 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;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData2(fetchResponse);
+ throw new RequestError("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData2(fetchResponse);
+ throw new RequestError(toErrorMessage2(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData2(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData2(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = (0, import_fast_content_type_parse2.safeParse)(contentType);
+ if (isJSONResponse2(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse2(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage2(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 withDefaults4(oldEndpoint, newDefaults) {
+ const endpoint22 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint22.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper2(endpoint22.parse(endpointOptions));
+ }
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper2(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults4.bind(null, endpoint22)
+ });
+ return endpointOptions.request.hook(request22, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint22,
+ defaults: withDefaults4.bind(null, endpoint22)
+ });
+}
+var request2 = withDefaults4(endpoint2, defaults_default2);
+
+// node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION5 = "0.0.0-development";
+var userAgent3 = `octokit-endpoint.js/${VERSION5} ${getUserAgent()}`;
+var DEFAULTS3 = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent3
+ },
+ mediaType: {
+ format: ""
+ }
+};
+function lowercaseKeys3(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+function isPlainObject5(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 mergeDeep3(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject5(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep3(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
+ }
+ });
+ return result;
+}
+function removeUndefinedProperties3(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ return obj;
+}
+function merge3(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 = lowercaseKeys3(options.headers);
+ removeUndefinedProperties3(options);
+ removeUndefinedProperties3(options.headers);
+ const mergedOptions = mergeDeep3(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 addQueryParameters3(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 urlVariableRegex3 = /\{[^{}}]+\}/g;
+function removeNonChars3(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+function omit3(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 encodeReserved3(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 encodeUnreserved3(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue3(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved3(value) : encodeUnreserved3(value);
+ if (key) {
+ return encodeUnreserved3(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined3(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator3(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues3(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined3(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(
+ encodeValue3(operator, value, isKeyOperator3(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined3).forEach(function(value2) {
+ result.push(
+ encodeValue3(operator, value2, isKeyOperator3(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined3(value[k])) {
+ result.push(encodeValue3(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined3).forEach(function(value2) {
+ tmp.push(encodeValue3(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined3(value[k])) {
+ tmp.push(encodeUnreserved3(k));
+ tmp.push(encodeValue3(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator3(operator)) {
+ result.push(encodeUnreserved3(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined3(value)) {
+ result.push(encodeUnreserved3(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved3(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl3(template) {
+ return {
+ expand: expand3.bind(null, template)
+ };
+}
+function expand3(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(getValues3(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 encodeReserved3(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
+ }
+}
+function parse3(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit3(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames3(url);
+ url = parseUrl3(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 = omit3(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 = addQueryParameters3(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+function endpointWithDefaults3(defaults, route, options) {
+ return parse3(merge3(defaults, route, options));
+}
+function withDefaults5(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge3(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults3.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults5.bind(null, DEFAULTS22),
+ merge: merge3.bind(null, DEFAULTS22),
+ parse: parse3
+ });
+}
+var endpoint3 = withDefaults5(null, DEFAULTS3);
+
+// node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse3 = __toESM(require_fast_content_type_parse3(), 1);
+var VERSION6 = "9.2.4";
+var defaults_default3 = {
+ headers: {
+ "user-agent": `octokit-request.js/${VERSION6} ${getUserAgent()}`
+ }
+};
+function isPlainObject6(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 fetchWrapper3(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 body = isPlainObject6(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
+ 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" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ 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;
+ }
+ }
+ }
+ 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;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData3(fetchResponse);
+ throw new RequestError("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData3(fetchResponse);
+ throw new RequestError(toErrorMessage3(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData3(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData3(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = (0, import_fast_content_type_parse3.safeParse)(contentType);
+ if (isJSONResponse3(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse3(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage3(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 withDefaults6(oldEndpoint, newDefaults) {
+ const endpoint22 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint22.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper3(endpoint22.parse(endpointOptions));
+ }
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper3(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults6.bind(null, endpoint22)
+ });
+ return endpointOptions.request.hook(request22, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint22,
+ defaults: withDefaults6.bind(null, endpoint22)
+ });
+}
+var request3 = withDefaults6(endpoint3, defaults_default3);
+
+// node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION7 = "0.0.0-development";
+var userAgent4 = `octokit-endpoint.js/${VERSION7} ${getUserAgent()}`;
+var DEFAULTS4 = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent4
},
mediaType: {
format: ""
}
};
-function lowercaseKeys(object) {
+function lowercaseKeys4(object) {
if (!object) {
return {};
}
@@ -40583,7 +42568,7 @@ function lowercaseKeys(object) {
return newObj;
}, {});
}
-function isPlainObject(value) {
+function isPlainObject7(value) {
if (typeof value !== "object" || value === null) return false;
if (Object.prototype.toString.call(value) !== "[object Object]") return false;
const proto = Object.getPrototypeOf(value);
@@ -40591,19 +42576,19 @@ function isPlainObject(value) {
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) {
+function mergeDeep4(defaults, options) {
const result = Object.assign({}, defaults);
Object.keys(options).forEach((key) => {
- if (isPlainObject(options[key])) {
+ if (isPlainObject7(options[key])) {
if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep(defaults[key], options[key]);
+ else result[key] = mergeDeep4(defaults[key], options[key]);
} else {
Object.assign(result, { [key]: options[key] });
}
});
return result;
}
-function removeUndefinedProperties(obj) {
+function removeUndefinedProperties4(obj) {
for (const key in obj) {
if (obj[key] === void 0) {
delete obj[key];
@@ -40611,17 +42596,17 @@ function removeUndefinedProperties(obj) {
}
return obj;
}
-function merge(defaults, route, options) {
+function merge4(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);
+ options.headers = lowercaseKeys4(options.headers);
+ removeUndefinedProperties4(options);
+ removeUndefinedProperties4(options.headers);
+ const mergedOptions = mergeDeep4(defaults || {}, options);
if (options.url === "/graphql") {
if (defaults && defaults.mediaType.previews?.length) {
mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
@@ -40632,7 +42617,7 @@ function merge(defaults, route, options) {
}
return mergedOptions;
}
-function addQueryParameters(url, parameters) {
+function addQueryParameters4(url, parameters) {
const separator = /\?/.test(url) ? "&" : "?";
const names = Object.keys(parameters);
if (names.length === 0) {
@@ -40645,18 +42630,18 @@ function addQueryParameters(url, parameters) {
return `${name}=${encodeURIComponent(parameters[name])}`;
}).join("&");
}
-var urlVariableRegex = /\{[^{}}]+\}/g;
-function removeNonChars(variableName) {
+var urlVariableRegex4 = /\{[^{}}]+\}/g;
+function removeNonChars4(variableName) {
return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+ return matches.map(removeNonChars4).reduce((a, b) => a.concat(b), []);
}
-function omit(object, keysToOmit) {
+function omit4(object, keysToOmit) {
const result = { __proto__: null };
for (const key of Object.keys(object)) {
if (keysToOmit.indexOf(key) === -1) {
@@ -40665,7 +42650,7 @@ function omit(object, keysToOmit) {
}
return result;
}
-function encodeReserved(str) {
+function encodeReserved4(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, "]");
@@ -40673,67 +42658,67 @@ function encodeReserved(str) {
return part;
}).join("");
}
-function encodeUnreserved(str) {
+function encodeUnreserved4(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);
+function encodeValue4(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved4(value) : encodeUnreserved4(value);
if (key) {
- return encodeUnreserved(key) + "=" + value;
+ return encodeUnreserved4(key) + "=" + value;
} else {
return value;
}
}
-function isDefined(value) {
+function isDefined4(value) {
return value !== void 0 && value !== null;
}
-function isKeyOperator(operator) {
+function isKeyOperator4(operator) {
return operator === ";" || operator === "&" || operator === "?";
}
-function getValues(context, operator, key, modifier) {
+function getValues4(context, operator, key, modifier) {
var value = context[key], result = [];
- if (isDefined(value) && value !== "") {
+ if (isDefined4(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 : "")
+ encodeValue4(operator, value, isKeyOperator4(operator) ? key : "")
);
} else {
if (modifier === "*") {
if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function(value2) {
+ value.filter(isDefined4).forEach(function(value2) {
result.push(
- encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
+ encodeValue4(operator, value2, isKeyOperator4(operator) ? key : "")
);
});
} else {
Object.keys(value).forEach(function(k) {
- if (isDefined(value[k])) {
- result.push(encodeValue(operator, value[k], k));
+ if (isDefined4(value[k])) {
+ result.push(encodeValue4(operator, value[k], k));
}
});
}
} else {
const tmp = [];
if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function(value2) {
- tmp.push(encodeValue(operator, value2));
+ value.filter(isDefined4).forEach(function(value2) {
+ tmp.push(encodeValue4(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 (isDefined4(value[k])) {
+ tmp.push(encodeUnreserved4(k));
+ tmp.push(encodeValue4(operator, value[k].toString()));
}
});
}
- if (isKeyOperator(operator)) {
- result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+ if (isKeyOperator4(operator)) {
+ result.push(encodeUnreserved4(key) + "=" + tmp.join(","));
} else if (tmp.length !== 0) {
result.push(tmp.join(","));
}
@@ -40741,23 +42726,23 @@ function getValues(context, operator, key, modifier) {
}
} else {
if (operator === ";") {
- if (isDefined(value)) {
- result.push(encodeUnreserved(key));
+ if (isDefined4(value)) {
+ result.push(encodeUnreserved4(key));
}
} else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved(key) + "=");
+ result.push(encodeUnreserved4(key) + "=");
} else if (value === "") {
result.push("");
}
}
return result;
}
-function parseUrl(template) {
+function parseUrl4(template) {
return {
- expand: expand.bind(null, template)
+ expand: expand4.bind(null, template)
};
}
-function expand(template, context) {
+function expand4(template, context) {
var operators = ["+", "#", ".", "/", ";", "?", "&"];
template = template.replace(
/\{([^\{\}]+)\}|([^\{\}]+)/g,
@@ -40771,7 +42756,7 @@ function expand(template, context) {
}
expression.split(/,/g).forEach(function(variable) {
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
- values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+ values.push(getValues4(context, operator, tmp[1], tmp[2] || tmp[3]));
});
if (operator && operator !== "+") {
var separator = ",";
@@ -40785,7 +42770,7 @@ function expand(template, context) {
return values.join(",");
}
} else {
- return encodeReserved(literal);
+ return encodeReserved4(literal);
}
}
);
@@ -40795,12 +42780,12 @@ function expand(template, context) {
return template.replace(/\/$/, "");
}
}
-function parse(options) {
+function parse4(options) {
let method = options.method.toUpperCase();
let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
let headers = Object.assign({}, options.headers);
let body;
- let parameters = omit(options, [
+ let parameters = omit4(options, [
"method",
"baseUrl",
"url",
@@ -40808,13 +42793,13 @@ function parse(options) {
"request",
"mediaType"
]);
- const urlVariableNames = extractUrlVariableNames(url);
- url = parseUrl(url).expand(parameters);
+ const urlVariableNames = extractUrlVariableNames4(url);
+ url = parseUrl4(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 remainingParameters = omit4(parameters, omittedParameters);
const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
if (!isBinaryRequest) {
if (options.mediaType.format) {
@@ -40836,7 +42821,7 @@ function parse(options) {
}
}
if (["GET", "HEAD"].includes(method)) {
- url = addQueryParameters(url, remainingParameters);
+ url = addQueryParameters4(url, remainingParameters);
} else {
if ("data" in remainingParameters) {
body = remainingParameters.data;
@@ -40858,71 +42843,518 @@ function parse(options) {
options.request ? { request: options.request } : null
);
}
-function endpointWithDefaults(defaults, route, options) {
- return parse(merge(defaults, route, options));
+function endpointWithDefaults4(defaults, route, options) {
+ return parse4(merge4(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
+function withDefaults7(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge4(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults4.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults7.bind(null, DEFAULTS22),
+ merge: merge4.bind(null, DEFAULTS22),
+ parse: parse4
});
}
-var endpoint = withDefaults(null, DEFAULTS);
+var endpoint4 = withDefaults7(null, DEFAULTS4);
-// node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
+// node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse4 = __toESM(require_fast_content_type_parse4(), 1);
+var VERSION8 = "9.2.4";
+var defaults_default4 = {
+ headers: {
+ "user-agent": `octokit-request.js/${VERSION8} ${getUserAgent()}`
+ }
+};
+function isPlainObject8(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 fetchWrapper4(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 body = isPlainObject8(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
+ 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" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ 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;
+ }
+ }
+ }
+ 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;
+ }
+ throw new RequestError(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData4(fetchResponse);
+ throw new RequestError("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData4(fetchResponse);
+ throw new RequestError(toErrorMessage4(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData4(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData4(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = (0, import_fast_content_type_parse4.safeParse)(contentType);
+ if (isJSONResponse4(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse4(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage4(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 withDefaults8(oldEndpoint, newDefaults) {
+ const endpoint22 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint22.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper4(endpoint22.parse(endpointOptions));
+ }
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper4(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults8.bind(null, endpoint22)
+ });
+ return endpointOptions.request.hook(request22, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint22,
+ defaults: withDefaults8.bind(null, endpoint22)
+ });
+}
+var request4 = withDefaults8(endpoint4, defaults_default4);
-// node_modules/@octokit/request-error/dist-src/index.js
-var 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);
- this.name = "HttpError";
- this.status = Number.parseInt(statusCode);
- if (Number.isNaN(this.status)) {
- this.status = 0;
+// node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION9 = "0.0.0-development";
+var userAgent5 = `octokit-endpoint.js/${VERSION9} ${getUserAgent()}`;
+var DEFAULTS5 = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent5
+ },
+ mediaType: {
+ format: ""
+ }
+};
+function lowercaseKeys5(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+function isPlainObject9(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 mergeDeep5(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject9(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep5(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
}
- if ("response" in options) {
- this.response = options.response;
+ });
+ return result;
+}
+function removeUndefinedProperties5(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
}
- const requestCopy = Object.assign({}, options.request);
- if (options.request.headers.authorization) {
- requestCopy.headers = Object.assign({}, options.request.headers, {
- authorization: options.request.headers.authorization.replace(
- /(? !mergedOptions.mediaType.previews.includes(preview)
+ ).concat(mergedOptions.mediaType.previews);
+ }
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
+ }
+ return mergedOptions;
+}
+function addQueryParameters5(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 urlVariableRegex5 = /\{[^{}}]+\}/g;
+function removeNonChars5(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+function omit5(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 encodeReserved5(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 encodeUnreserved5(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue5(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved5(value) : encodeUnreserved5(value);
+ if (key) {
+ return encodeUnreserved5(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined5(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator5(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues5(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined5(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(
+ encodeValue5(operator, value, isKeyOperator5(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined5).forEach(function(value2) {
+ result.push(
+ encodeValue5(operator, value2, isKeyOperator5(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined5(value[k])) {
+ result.push(encodeValue5(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined5).forEach(function(value2) {
+ tmp.push(encodeValue5(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined5(value[k])) {
+ tmp.push(encodeUnreserved5(k));
+ tmp.push(encodeValue5(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator5(operator)) {
+ result.push(encodeUnreserved5(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined5(value)) {
+ result.push(encodeUnreserved5(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved5(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl5(template) {
+ return {
+ expand: expand5.bind(null, template)
+ };
+}
+function expand5(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(getValues5(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 encodeReserved5(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
+ }
+}
+function parse5(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit5(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames5(url);
+ url = parseUrl5(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 = omit5(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(",");
+ }
}
- requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
- this.request = requestCopy;
}
-};
+ if (["GET", "HEAD"].includes(method)) {
+ url = addQueryParameters5(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+function endpointWithDefaults5(defaults, route, options) {
+ return parse5(merge5(defaults, route, options));
+}
+function withDefaults9(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge5(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults5.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults9.bind(null, DEFAULTS22),
+ merge: merge5.bind(null, DEFAULTS22),
+ parse: parse5
+ });
+}
+var endpoint5 = withDefaults9(null, DEFAULTS5);
-// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "0.0.0-development";
-var defaults_default = {
+// node_modules/@octokit/oauth-methods/node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse5 = __toESM(require_fast_content_type_parse5(), 1);
+var VERSION10 = "9.2.4";
+var defaults_default5 = {
headers: {
- "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
+ "user-agent": `octokit-request.js/${VERSION10} ${getUserAgent()}`
}
};
-function isPlainObject2(value) {
+function isPlainObject10(value) {
if (typeof value !== "object" || value === null) return false;
if (Object.prototype.toString.call(value) !== "[object Object]") return false;
const proto = Object.getPrototypeOf(value);
@@ -40930,7 +43362,7 @@ function isPlainObject2(value) {
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) {
+async function fetchWrapper5(requestOptions) {
const fetch = requestOptions.request?.fetch || globalThis.fetch;
if (!fetch) {
throw new Error(
@@ -40939,7 +43371,7 @@ async function fetchWrapper(requestOptions) {
}
const log = requestOptions.request?.log || console;
const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
- const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
+ const body = isPlainObject10(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
const requestHeaders = Object.fromEntries(
Object.entries(requestOptions.headers).map(([name, value]) => [
name,
@@ -41012,29 +43444,29 @@ async function fetchWrapper(requestOptions) {
});
}
if (status === 304) {
- octokitResponse.data = await getResponseData(fetchResponse);
+ octokitResponse.data = await getResponseData5(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, {
+ octokitResponse.data = await getResponseData5(fetchResponse);
+ throw new RequestError(toErrorMessage5(octokitResponse.data), status, {
response: octokitResponse,
request: requestOptions
});
}
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData5(fetchResponse) : fetchResponse.body;
return octokitResponse;
}
-async function getResponseData(response) {
+async function getResponseData5(response) {
const contentType = response.headers.get("content-type");
if (!contentType) {
return response.text().catch(() => "");
}
- const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
- if (isJSONResponse(mimetype)) {
+ const mimetype = (0, import_fast_content_type_parse5.safeParse)(contentType);
+ if (isJSONResponse5(mimetype)) {
let text = "";
try {
text = await response.text();
@@ -41048,10 +43480,10 @@ async function getResponseData(response) {
return response.arrayBuffer().catch(() => new ArrayBuffer(0));
}
}
-function isJSONResponse(mimetype) {
+function isJSONResponse5(mimetype) {
return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
}
-function toErrorMessage(data) {
+function toErrorMessage5(data) {
if (typeof data === "string") {
return data;
}
@@ -41064,51 +43496,51 @@ function toErrorMessage(data) {
}
return `Unknown error: ${JSON.stringify(data)}`;
}
-function withDefaults2(oldEndpoint, newDefaults) {
- const endpoint2 = oldEndpoint.defaults(newDefaults);
+function withDefaults10(oldEndpoint, newDefaults) {
+ const endpoint22 = oldEndpoint.defaults(newDefaults);
const newApi = function(route, parameters) {
- const endpointOptions = endpoint2.merge(route, parameters);
+ const endpointOptions = endpoint22.merge(route, parameters);
if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper(endpoint2.parse(endpointOptions));
+ return fetchWrapper5(endpoint22.parse(endpointOptions));
}
- const request2 = (route2, parameters2) => {
- return fetchWrapper(
- endpoint2.parse(endpoint2.merge(route2, parameters2))
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper5(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
);
};
- Object.assign(request2, {
- endpoint: endpoint2,
- defaults: withDefaults2.bind(null, endpoint2)
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults10.bind(null, endpoint22)
});
- return endpointOptions.request.hook(request2, endpointOptions);
+ return endpointOptions.request.hook(request22, endpointOptions);
};
return Object.assign(newApi, {
- endpoint: endpoint2,
- defaults: withDefaults2.bind(null, endpoint2)
+ endpoint: endpoint22,
+ defaults: withDefaults10.bind(null, endpoint22)
});
}
-var request = withDefaults2(endpoint, defaults_default);
+var request5 = withDefaults10(endpoint5, defaults_default5);
// node_modules/@octokit/oauth-methods/dist-bundle/index.js
-function requestToOAuthBaseUrl(request2) {
- const endpointDefaults = request2.endpoint.DEFAULTS;
+function requestToOAuthBaseUrl(request7) {
+ const endpointDefaults = request7.endpoint.DEFAULTS;
return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", "");
}
-async function oauthRequest(request2, route, parameters) {
+async function oauthRequest(request7, route, parameters) {
const withOAuthParameters = {
- baseUrl: requestToOAuthBaseUrl(request2),
+ baseUrl: requestToOAuthBaseUrl(request7),
headers: {
accept: "application/json"
},
...parameters
};
- const response = await request2(route, withOAuthParameters);
+ const response = await request7(route, withOAuthParameters);
if ("error" in response.data) {
const error = new RequestError(
`${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,
400,
{
- request: request2.endpoint.merge(
+ request: request7.endpoint.merge(
route,
withOAuthParameters
)
@@ -41120,9 +43552,9 @@ async function oauthRequest(request2, route, parameters) {
return response;
}
async function exchangeWebFlowCode(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const response = await oauthRequest(
- request2,
+ request7,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -41157,19 +43589,19 @@ function toTimestamp(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function createDeviceCode(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const parameters = {
client_id: options.clientId
};
if ("scopes" in options && Array.isArray(options.scopes)) {
parameters.scope = options.scopes.join(" ");
}
- return oauthRequest(request2, "POST /login/device/code", parameters);
+ return oauthRequest(request7, "POST /login/device/code", parameters);
}
async function exchangeDeviceCode(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const response = await oauthRequest(
- request2,
+ request7,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -41205,8 +43637,8 @@ function toTimestamp2(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function checkToken(options) {
- const request2 = options.request || request;
- const response = await request2("POST /applications/{client_id}/token", {
+ const request7 = options.request || request5;
+ const response = await request7("POST /applications/{client_id}/token", {
headers: {
authorization: `basic ${btoa(
`${options.clientId}:${options.clientSecret}`
@@ -41230,9 +43662,9 @@ async function checkToken(options) {
return { ...response, authentication };
}
async function refreshToken(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const response = await oauthRequest(
- request2,
+ request7,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -41260,9 +43692,9 @@ function toTimestamp3(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function resetToken(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- const response = await request2(
+ const response = await request7(
"PATCH /applications/{client_id}/token",
{
headers: {
@@ -41287,9 +43719,9 @@ async function resetToken(options) {
return { ...response, authentication };
}
async function deleteToken(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- return request2(
+ return request7(
"DELETE /applications/{client_id}/token",
{
headers: {
@@ -41301,9 +43733,9 @@ async function deleteToken(options) {
);
}
async function deleteAuthorization(options) {
- const request2 = options.request || request;
+ const request7 = options.request || request5;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- return request2(
+ return request7(
"DELETE /applications/{client_id}/grant",
{
headers: {
@@ -41352,11 +43784,11 @@ function getCachedAuthentication(state, auth22) {
async function wait(seconds) {
await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));
}
-async function waitForAccessToken(request2, clientId, clientType, verification) {
+async function waitForAccessToken(request7, clientId, clientType, verification) {
try {
const options = {
clientId,
- request: request2,
+ request: request7,
code: verification.device_code
};
const { authentication } = clientType === "oauth-app" ? await exchangeDeviceCode({
@@ -41376,11 +43808,11 @@ async function waitForAccessToken(request2, clientId, clientType, verification)
const errorType = error.response.data.error;
if (errorType === "authorization_pending") {
await wait(verification.interval);
- return waitForAccessToken(request2, clientId, clientType, verification);
+ return waitForAccessToken(request7, clientId, clientType, verification);
}
if (errorType === "slow_down") {
await wait(verification.interval + 7);
- return waitForAccessToken(request2, clientId, clientType, verification);
+ return waitForAccessToken(request7, clientId, clientType, verification);
}
throw error;
}
@@ -41390,37 +43822,37 @@ async function auth(state, authOptions) {
auth: authOptions
});
}
-async function hook(state, request2, route, parameters) {
- let endpoint2 = request2.endpoint.merge(
+async function hook(state, request7, route, parameters) {
+ let endpoint7 = request7.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
- return request2(endpoint2);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
+ return request7(endpoint7);
}
const { token } = await getOAuthAccessToken(state, {
- request: request2,
+ request: request7,
auth: { type: "oauth" }
});
- endpoint2.headers.authorization = `token ${token}`;
- return request2(endpoint2);
+ endpoint7.headers.authorization = `token ${token}`;
+ return request7(endpoint7);
}
-var VERSION3 = "0.0.0-development";
+var VERSION11 = "0.0.0-development";
function createOAuthDeviceAuth(options) {
- const requestWithDefaults = options.request || request.defaults({
+ const requestWithDefaults = options.request || request4.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-device.js/${VERSION3} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-device.js/${VERSION11} ${getUserAgent()}`
}
});
- const { request: request2 = requestWithDefaults, ...otherOptions } = options;
+ const { request: request7 = requestWithDefaults, ...otherOptions } = options;
const state = options.clientType === "github-app" ? {
...otherOptions,
clientType: "github-app",
- request: request2
+ request: request7
} : {
...otherOptions,
clientType: "oauth-app",
- request: request2,
+ request: request7,
scopes: options.scopes || []
};
if (!options.clientId) {
@@ -41439,7 +43871,7 @@ function createOAuthDeviceAuth(options) {
}
// node_modules/@octokit/auth-oauth-user/dist-bundle/index.js
-var VERSION4 = "0.0.0-development";
+var VERSION12 = "0.0.0-development";
async function getAuthentication(state) {
if ("code" in state.strategyOptions) {
const { authentication } = await exchangeWebFlowCode({
@@ -41576,30 +44008,30 @@ var ROUTES_REQUIRING_BASIC_AUTH = /\/applications\/[^/]+\/(token|grant)s?/;
function requiresBasicAuth(url) {
return url && ROUTES_REQUIRING_BASIC_AUTH.test(url);
}
-async function hook2(state, request2, route, parameters = {}) {
- const endpoint2 = request2.endpoint.merge(
+async function hook2(state, request7, route, parameters = {}) {
+ const endpoint7 = request7.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
- return request2(endpoint2);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
+ return request7(endpoint7);
}
- if (requiresBasicAuth(endpoint2.url)) {
+ if (requiresBasicAuth(endpoint7.url)) {
const credentials = btoa(`${state.clientId}:${state.clientSecret}`);
- endpoint2.headers.authorization = `basic ${credentials}`;
- return request2(endpoint2);
+ endpoint7.headers.authorization = `basic ${credentials}`;
+ return request7(endpoint7);
}
- const { token } = state.clientType === "oauth-app" ? await auth2({ ...state, request: request2 }) : await auth2({ ...state, request: request2 });
- endpoint2.headers.authorization = "token " + token;
- return request2(endpoint2);
+ const { token } = state.clientType === "oauth-app" ? await auth2({ ...state, request: request7 }) : await auth2({ ...state, request: request7 });
+ endpoint7.headers.authorization = "token " + token;
+ return request7(endpoint7);
}
function createOAuthUserAuth({
clientId,
clientSecret,
clientType = "oauth-app",
- request: request2 = request.defaults({
+ request: request7 = request3.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION4} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION12} ${getUserAgent()}`
}
}),
onTokenCreated,
@@ -41611,14 +44043,14 @@ function createOAuthUserAuth({
clientSecret,
onTokenCreated,
strategyOptions,
- request: request2
+ request: request7
});
return Object.assign(auth2.bind(null, state), {
// @ts-expect-error not worth the extra code needed to appease TS
hook: hook2.bind(null, state)
});
}
-createOAuthUserAuth.VERSION = VERSION4;
+createOAuthUserAuth.VERSION = VERSION12;
// node_modules/@octokit/auth-oauth-app/dist-bundle/index.js
async function auth3(state, authOptions) {
@@ -41657,36 +44089,36 @@ async function auth3(state, authOptions) {
});
return userAuth();
}
-async function hook3(state, request2, route, parameters) {
- let endpoint2 = request2.endpoint.merge(
+async function hook3(state, request22, route, parameters) {
+ let endpoint7 = request22.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
- return request2(endpoint2);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
+ return request22(endpoint7);
}
- if (state.clientType === "github-app" && !requiresBasicAuth(endpoint2.url)) {
+ if (state.clientType === "github-app" && !requiresBasicAuth(endpoint7.url)) {
throw new Error(
- `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint2.method} ${endpoint2.url}" is not supported.`
+ `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint7.method} ${endpoint7.url}" is not supported.`
);
}
const credentials = btoa(`${state.clientId}:${state.clientSecret}`);
- endpoint2.headers.authorization = `basic ${credentials}`;
+ endpoint7.headers.authorization = `basic ${credentials}`;
try {
- return await request2(endpoint2);
+ return await request22(endpoint7);
} catch (error) {
if (error.status !== 401) throw error;
- error.message = `[@octokit/auth-oauth-app] "${endpoint2.method} ${endpoint2.url}" does not support clientId/clientSecret basic authentication.`;
+ error.message = `[@octokit/auth-oauth-app] "${endpoint7.method} ${endpoint7.url}" does not support clientId/clientSecret basic authentication.`;
throw error;
}
}
-var VERSION5 = "0.0.0-development";
+var VERSION13 = "0.0.0-development";
function createOAuthAppAuth(options) {
const state = Object.assign(
{
- request: request.defaults({
+ request: request2.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION5} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION13} ${getUserAgent()}`
}
}),
clientType: "oauth-app"
@@ -42097,15 +44529,15 @@ async function getInstallationAuthentication(state, options, customRequest) {
};
return factory(factoryAuthOptions);
}
- const request2 = customRequest || state.request;
+ const request7 = customRequest || state.request;
return getInstallationAuthenticationConcurrently(
state,
{ ...options, installationId },
- request2
+ request7
);
}
var pendingPromises = /* @__PURE__ */ new Map();
-function getInstallationAuthenticationConcurrently(state, options, request2) {
+function getInstallationAuthenticationConcurrently(state, options, request7) {
const cacheKey = optionsToCacheKey(options);
if (pendingPromises.has(cacheKey)) {
return pendingPromises.get(cacheKey);
@@ -42113,12 +44545,12 @@ function getInstallationAuthenticationConcurrently(state, options, request2) {
const promise = getInstallationAuthenticationImpl(
state,
options,
- request2
+ request7
).finally(() => pendingPromises.delete(cacheKey));
pendingPromises.set(cacheKey, promise);
return promise;
}
-async function getInstallationAuthenticationImpl(state, options, request2) {
+async function getInstallationAuthenticationImpl(state, options, request7) {
if (!options.refresh) {
const result = await get(state.cache, options);
if (result) {
@@ -42175,7 +44607,7 @@ async function getInstallationAuthenticationImpl(state, options, request2) {
repository_selection: repositorySelectionOptional,
single_file: singleFileName
}
- } = await request2(
+ } = await request7(
"POST /app/installations/{installation_id}/access_tokens",
payload
);
@@ -42272,18 +44704,18 @@ function isNotTimeSkewError(error) {
/'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
));
}
-async function hook4(state, request2, route, parameters) {
- const endpoint2 = request2.endpoint.merge(route, parameters);
- const url = endpoint2.url;
+async function hook4(state, request7, route, parameters) {
+ const endpoint7 = request7.endpoint.merge(route, parameters);
+ const url = endpoint7.url;
if (/\/login\/oauth\/access_token$/.test(url)) {
- return request2(endpoint2);
+ return request7(endpoint7);
}
- if (requiresAppAuth(url.replace(request2.endpoint.DEFAULTS.baseUrl, ""))) {
+ if (requiresAppAuth(url.replace(request7.endpoint.DEFAULTS.baseUrl, ""))) {
const { token: token2 } = await getAppAuthentication(state);
- endpoint2.headers.authorization = `bearer ${token2}`;
+ endpoint7.headers.authorization = `bearer ${token2}`;
let response;
try {
- response = await request2(endpoint2);
+ response = await request7(endpoint7);
} catch (error) {
if (isNotTimeSkewError(error)) {
throw error;
@@ -42302,34 +44734,34 @@ async function hook4(state, request2, route, parameters) {
...state,
timeDifference: diff
});
- endpoint2.headers.authorization = `bearer ${token3}`;
- return request2(endpoint2);
+ endpoint7.headers.authorization = `bearer ${token3}`;
+ return request7(endpoint7);
}
return response;
}
if (requiresBasicAuth(url)) {
const authentication = await state.oauthApp({ type: "oauth-app" });
- endpoint2.headers.authorization = authentication.headers.authorization;
- return request2(endpoint2);
+ endpoint7.headers.authorization = authentication.headers.authorization;
+ return request7(endpoint7);
}
const { token, createdAt } = await getInstallationAuthentication(
state,
// @ts-expect-error TBD
{},
- request2.defaults({ baseUrl: endpoint2.baseUrl })
+ request7.defaults({ baseUrl: endpoint7.baseUrl })
);
- endpoint2.headers.authorization = `token ${token}`;
+ endpoint7.headers.authorization = `token ${token}`;
return sendRequestWithRetries(
state,
- request2,
- endpoint2,
+ request7,
+ endpoint7,
createdAt
);
}
-async function sendRequestWithRetries(state, request2, options, createdAt, retries = 0) {
+async function sendRequestWithRetries(state, request7, options, createdAt, retries = 0) {
const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
try {
- return await request2(options);
+ return await request7(options);
} catch (error) {
if (error.status !== 401) {
throw error;
@@ -42346,10 +44778,10 @@ async function sendRequestWithRetries(state, request2, options, createdAt, retri
`[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
);
await new Promise((resolve) => setTimeout(resolve, awaitTime));
- return sendRequestWithRetries(state, request2, options, createdAt, retries);
+ return sendRequestWithRetries(state, request7, options, createdAt, retries);
}
}
-var VERSION6 = "7.2.1";
+var VERSION14 = "7.2.1";
function createAppAuth(options) {
if (!options.appId) {
throw new Error("[@octokit/auth-app] appId option is required");
@@ -42368,14 +44800,14 @@ function createAppAuth(options) {
},
options.log
);
- const request2 = options.request || request.defaults({
+ const request7 = options.request || request.defaults({
headers: {
- "user-agent": `octokit-auth-app.js/${VERSION6} ${getUserAgent()}`
+ "user-agent": `octokit-auth-app.js/${VERSION14} ${getUserAgent()}`
}
});
const state = Object.assign(
{
- request: request2,
+ request: request7,
cache: getCache()
},
options,
@@ -42386,7 +44818,7 @@ function createAppAuth(options) {
clientType: "github-app",
clientId: options.clientId || "",
clientSecret: options.clientSecret || "",
- request: request2
+ request: request7
})
}
);
@@ -42523,7 +44955,7 @@ async function pRetry(input, options) {
}
// lib/main.js
-async function main(appId2, privateKey2, owner2, repositories2, permissions2, core3, createAppAuth2, request2, skipTokenRevoke2) {
+async function main(appId2, privateKey2, owner2, repositories2, permissions2, core3, createAppAuth2, request7, skipTokenRevoke2) {
let parsedOwner = "";
let parsedRepositoryNames = [];
if (!owner2 && repositories2.length === 0) {
@@ -42560,13 +44992,13 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
const auth5 = createAppAuth2({
appId: appId2,
privateKey: privateKey2,
- request: request2
+ request: request7
});
let authentication, installationId, appSlug;
if (parsedRepositoryNames.length > 0) {
({ authentication, installationId, appSlug } = await pRetry(
() => getTokenFromRepository(
- request2,
+ request7,
auth5,
parsedOwner,
parsedRepositoryNames,
@@ -42586,7 +45018,7 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
));
} else {
({ authentication, installationId, appSlug } = await pRetry(
- () => getTokenFromOwner(request2, auth5, parsedOwner, permissions2),
+ () => getTokenFromOwner(request7, auth5, parsedOwner, permissions2),
{
onFailedAttempt: (error) => {
core3.info(
@@ -42606,8 +45038,8 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
core3.saveState("expiresAt", authentication.expiresAt);
}
}
-async function getTokenFromOwner(request2, auth5, parsedOwner, permissions2) {
- const response = await request2("GET /users/{username}/installation", {
+async function getTokenFromOwner(request7, auth5, parsedOwner, permissions2) {
+ const response = await request7("GET /users/{username}/installation", {
username: parsedOwner,
request: {
hook: auth5.hook
@@ -42622,8 +45054,8 @@ async function getTokenFromOwner(request2, auth5, parsedOwner, permissions2) {
const appSlug = response.data["app_slug"];
return { authentication, installationId, appSlug };
}
-async function getTokenFromRepository(request2, auth5, parsedOwner, parsedRepositoryNames, permissions2) {
- const response = await request2("GET /repos/{owner}/{repo}/installation", {
+async function getTokenFromRepository(request7, auth5, parsedOwner, parsedRepositoryNames, permissions2) {
+ const response = await request7("GET /repos/{owner}/{repo}/installation", {
owner: parsedOwner,
repo: parsedRepositoryNames[0],
request: {
@@ -42643,6 +45075,537 @@ async function getTokenFromRepository(request2, auth5, parsedOwner, parsedReposi
// lib/request.js
var import_core = __toESM(require_core(), 1);
+
+// node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION15 = "0.0.0-development";
+var userAgent6 = `octokit-endpoint.js/${VERSION15} ${getUserAgent()}`;
+var DEFAULTS6 = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent6
+ },
+ mediaType: {
+ format: ""
+ }
+};
+function lowercaseKeys6(object) {
+ if (!object) {
+ return {};
+ }
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
+}
+function isPlainObject11(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 mergeDeep6(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject11(options[key])) {
+ if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
+ else result[key] = mergeDeep6(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
+ }
+ });
+ return result;
+}
+function removeUndefinedProperties6(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
+ }
+ return obj;
+}
+function merge6(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 = lowercaseKeys6(options.headers);
+ removeUndefinedProperties6(options);
+ removeUndefinedProperties6(options.headers);
+ const mergedOptions = mergeDeep6(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 addQueryParameters6(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 urlVariableRegex6 = /\{[^{}}]+\}/g;
+function removeNonChars6(variableName) {
+ return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+}
+function omit6(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 encodeReserved6(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 encodeUnreserved6(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
+}
+function encodeValue6(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved6(value) : encodeUnreserved6(value);
+ if (key) {
+ return encodeUnreserved6(key) + "=" + value;
+ } else {
+ return value;
+ }
+}
+function isDefined6(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator6(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues6(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined6(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(
+ encodeValue6(operator, value, isKeyOperator6(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined6).forEach(function(value2) {
+ result.push(
+ encodeValue6(operator, value2, isKeyOperator6(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined6(value[k])) {
+ result.push(encodeValue6(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined6).forEach(function(value2) {
+ tmp.push(encodeValue6(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined6(value[k])) {
+ tmp.push(encodeUnreserved6(k));
+ tmp.push(encodeValue6(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator6(operator)) {
+ result.push(encodeUnreserved6(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
+ }
+ }
+ } else {
+ if (operator === ";") {
+ if (isDefined6(value)) {
+ result.push(encodeUnreserved6(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved6(key) + "=");
+ } else if (value === "") {
+ result.push("");
+ }
+ }
+ return result;
+}
+function parseUrl6(template) {
+ return {
+ expand: expand6.bind(null, template)
+ };
+}
+function expand6(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(getValues6(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 encodeReserved6(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
+ }
+}
+function parse6(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit6(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames6(url);
+ url = parseUrl6(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 = omit6(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 = addQueryParameters6(url, remainingParameters);
+ } else {
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
+ }
+ }
+ }
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
+ }
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
+function endpointWithDefaults6(defaults, route, options) {
+ return parse6(merge6(defaults, route, options));
+}
+function withDefaults11(oldDefaults, newDefaults) {
+ const DEFAULTS22 = merge6(oldDefaults, newDefaults);
+ const endpoint22 = endpointWithDefaults6.bind(null, DEFAULTS22);
+ return Object.assign(endpoint22, {
+ DEFAULTS: DEFAULTS22,
+ defaults: withDefaults11.bind(null, DEFAULTS22),
+ merge: merge6.bind(null, DEFAULTS22),
+ parse: parse6
+ });
+}
+var endpoint6 = withDefaults11(null, DEFAULTS6);
+
+// node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse6 = __toESM(require_fast_content_type_parse6(), 1);
+
+// node_modules/@octokit/request/node_modules/@octokit/request-error/dist-src/index.js
+var RequestError2 = 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);
+ this.name = "HttpError";
+ this.status = Number.parseInt(statusCode);
+ if (Number.isNaN(this.status)) {
+ this.status = 0;
+ }
+ if ("response" in options) {
+ this.response = options.response;
+ }
+ const requestCopy = Object.assign({}, options.request);
+ if (options.request.headers.authorization) {
+ requestCopy.headers = Object.assign({}, options.request.headers, {
+ authorization: options.request.headers.authorization.replace(
+ /(? [
+ name,
+ String(value)
+ ])
+ );
+ let fetchResponse;
+ try {
+ fetchResponse = await fetch(requestOptions.url, {
+ method: requestOptions.method,
+ body,
+ 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" }
+ });
+ } catch (error) {
+ let message = "Unknown Error";
+ if (error instanceof Error) {
+ if (error.name === "AbortError") {
+ error.status = 500;
+ throw error;
+ }
+ 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;
+ }
+ }
+ }
+ const requestError = new RequestError2(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;
+ }
+ throw new RequestError2(fetchResponse.statusText, status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status === 304) {
+ octokitResponse.data = await getResponseData6(fetchResponse);
+ throw new RequestError2("Not modified", status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ if (status >= 400) {
+ octokitResponse.data = await getResponseData6(fetchResponse);
+ throw new RequestError2(toErrorMessage6(octokitResponse.data), status, {
+ response: octokitResponse,
+ request: requestOptions
+ });
+ }
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData6(fetchResponse) : fetchResponse.body;
+ return octokitResponse;
+}
+async function getResponseData6(response) {
+ const contentType = response.headers.get("content-type");
+ if (!contentType) {
+ return response.text().catch(() => "");
+ }
+ const mimetype = (0, import_fast_content_type_parse6.safeParse)(contentType);
+ if (isJSONResponse6(mimetype)) {
+ let text = "";
+ try {
+ text = await response.text();
+ return JSON.parse(text);
+ } catch (err) {
+ return text;
+ }
+ } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
+ return response.text().catch(() => "");
+ } else {
+ return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ }
+}
+function isJSONResponse6(mimetype) {
+ return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
+}
+function toErrorMessage6(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 withDefaults12(oldEndpoint, newDefaults) {
+ const endpoint22 = oldEndpoint.defaults(newDefaults);
+ const newApi = function(route, parameters) {
+ const endpointOptions = endpoint22.merge(route, parameters);
+ if (!endpointOptions.request || !endpointOptions.request.hook) {
+ return fetchWrapper6(endpoint22.parse(endpointOptions));
+ }
+ const request22 = (route2, parameters2) => {
+ return fetchWrapper6(
+ endpoint22.parse(endpoint22.merge(route2, parameters2))
+ );
+ };
+ Object.assign(request22, {
+ endpoint: endpoint22,
+ defaults: withDefaults12.bind(null, endpoint22)
+ });
+ return endpointOptions.request.hook(request22, endpointOptions);
+ };
+ return Object.assign(newApi, {
+ endpoint: endpoint22,
+ defaults: withDefaults12.bind(null, endpoint22)
+ });
+}
+var request6 = withDefaults12(endpoint6, defaults_default6);
+
+// lib/request.js
var import_undici = __toESM(require_undici2(), 1);
var baseUrl = import_core.default.getInput("github-api-url").replace(/\/$/, "");
var proxyUrl = process.env.https_proxy || process.env.HTTPS_PROXY || process.env.http_proxy || process.env.HTTP_PROXY;
@@ -42659,7 +45622,7 @@ var proxyFetch = (url, options) => {
}
return (0, import_undici.fetch)(url, options);
};
-var request_default = request.defaults({
+var request_default = request6.defaults({
headers: {
"user-agent": "actions/create-github-app-token"
},
diff --git a/dist/post.cjs b/dist/post.cjs
index 665540ad..34e8cac0 100644
--- a/dist/post.cjs
+++ b/dist/post.cjs
@@ -40674,7 +40674,7 @@ var endpoint = withDefaults(null, DEFAULTS);
// node_modules/@octokit/request/dist-bundle/index.js
var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
-// node_modules/@octokit/request-error/dist-src/index.js
+// node_modules/@octokit/request/node_modules/@octokit/request-error/dist-src/index.js
var RequestError = class extends Error {
name;
/**
@@ -40714,7 +40714,7 @@ var RequestError = class extends Error {
};
// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "0.0.0-development";
+var VERSION2 = "10.0.3";
var defaults_default = {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
diff --git a/package-lock.json b/package-lock.json
index bde93464..e7f2c57a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "create-github-app-token",
- "version": "2.1.1",
+ "version": "2.1.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-github-app-token",
- "version": "2.1.1",
+ "version": "2.1.2",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
diff --git a/package.json b/package.json
index 4fef1c00..0ca00f1f 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "create-github-app-token",
"private": true,
"type": "module",
- "version": "2.1.1",
+ "version": "2.1.2",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
"scripts": {
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0 --packages=bundle",
From f3d5ec20739b0cf6f0d52e5a051b65484c378ec9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 12 Sep 2025 17:14:02 -0700
Subject: [PATCH 08/27] fix(deps): bump undici from 7.8.0 to 7.10.0 in the
production-dependencies group (#254)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the production-dependencies group with 1 update:
[undici](https://github.com/nodejs/undici).
Updates `undici` from 7.8.0 to 7.10.0
Release notes
Sourced from undici's
releases.
v7.10.0
What's Changed
New Contributors
Full Changelog: https://github.com/nodejs/undici/compare/v7.9.0...v7.10.0
v7.9.0
What's Changed
New Contributors
Full Changelog: https://github.com/nodejs/undici/compare/v7.8.0...v7.9.0
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e7f2c57a..b172f04e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,7 +13,7 @@
"@octokit/auth-app": "^7.2.1",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
- "undici": "^7.8.0"
+ "undici": "^7.16.0"
},
"devDependencies": {
"@octokit/openapi": "^19.1.0",
@@ -3827,9 +3827,9 @@
}
},
"node_modules/undici": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.8.0.tgz",
- "integrity": "sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==",
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
+ "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
diff --git a/package.json b/package.json
index 0ca00f1f..0601ed11 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"@octokit/auth-app": "^7.2.1",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
- "undici": "^7.8.0"
+ "undici": "^7.16.0"
},
"devDependencies": {
"@octokit/openapi": "^19.1.0",
From 1526738aa46502312d4f6ba7779d432c61dc4e36 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 13 Sep 2025 00:14:39 +0000
Subject: [PATCH 09/27] build(release): 2.1.3 [skip ci]
## [2.1.3](https://github.com/actions/create-github-app-token/compare/v2.1.2...v2.1.3) (2025-09-13)
### Bug Fixes
* **deps:** bump undici from 7.8.0 to 7.10.0 in the production-dependencies group ([#254](https://github.com/actions/create-github-app-token/issues/254)) ([f3d5ec2](https://github.com/actions/create-github-app-token/commit/f3d5ec20739b0cf6f0d52e5a051b65484c378ec9))
---
dist/main.cjs | 4197 +++++++++++++++++++++++++++++++++------------
dist/post.cjs | 4197 +++++++++++++++++++++++++++++++++------------
package-lock.json | 4 +-
package.json | 2 +-
4 files changed, 6217 insertions(+), 2183 deletions(-)
diff --git a/dist/main.cjs b/dist/main.cjs
index ad2e8a8f..d6cb5782 100644
--- a/dist/main.cjs
+++ b/dist/main.cjs
@@ -4906,7 +4906,7 @@ var require_file = __commonJS({
var { parseMIMEType, serializeAMimeType } = require_dataURL();
var { kEnumerableProperty } = require_util();
var encoder = new TextEncoder();
- var File = class _File extends Blob2 {
+ var File2 = class _File extends Blob2 {
constructor(fileBits, fileName, options = {}) {
webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" });
fileBits = webidl.converters["sequence"](fileBits);
@@ -4994,7 +4994,7 @@ var require_file = __commonJS({
return "File";
}
};
- Object.defineProperties(File.prototype, {
+ Object.defineProperties(File2.prototype, {
[Symbol.toStringTag]: {
value: "File",
configurable: true
@@ -5074,9 +5074,9 @@ var require_file = __commonJS({
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";
+ return NativeFile && object instanceof NativeFile || object instanceof File2 || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
}
- module2.exports = { File, FileLike, isFileLike };
+ module2.exports = { File: File2, FileLike, isFileLike };
}
});
@@ -5089,7 +5089,7 @@ var require_formdata = __commonJS({
var { File: UndiciFile, FileLike, isFileLike } = require_file();
var { webidl } = require_webidl();
var { Blob: Blob2, File: NativeFile } = require("buffer");
- var File = NativeFile ?? UndiciFile;
+ var File2 = NativeFile ?? UndiciFile;
var FormData = class _FormData {
constructor(form) {
if (form !== void 0) {
@@ -5220,14 +5220,14 @@ var require_formdata = __commonJS({
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 });
+ value = value instanceof Blob2 ? new File2([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);
+ value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File2([value], filename, options) : new FileLike(value, filename, options);
}
}
return { name, value };
@@ -5269,7 +5269,7 @@ var require_body = __commonJS({
random = (max) => Math.floor(Math.random(max));
}
var ReadableStream2 = globalThis.ReadableStream;
- var File = NativeFile ?? UndiciFile;
+ var File2 = NativeFile ?? UndiciFile;
var textEncoder = new TextEncoder();
var textDecoder = new TextDecoder();
function extractBody(object, keepalive = false) {
@@ -5504,14 +5504,14 @@ Content-Type: ${value.type || "application/octet-stream"}\r
});
value.on("end", () => {
chunks.push(Buffer.from(base64chunk, "base64"));
- responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
+ responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));
});
} else {
value.on("data", (chunk) => {
chunks.push(chunk);
});
value.on("end", () => {
- responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
+ responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));
});
}
});
@@ -20720,14 +20720,12 @@ var require_timers2 = __commonJS({
}
}
function refreshTimeout() {
- if (fastNowTimeout) {
+ if (fastNowTimeout?.refresh) {
fastNowTimeout.refresh();
} else {
clearTimeout(fastNowTimeout);
fastNowTimeout = setTimeout(onTick, TICK_MS);
- if (fastNowTimeout.unref) {
- fastNowTimeout.unref();
- }
+ fastNowTimeout?.unref();
}
}
var FastTimer = class {
@@ -20912,13 +20910,21 @@ var require_timers2 = __commonJS({
var require_errors2 = __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, options) {
super(message, options);
this.name = "UndiciError";
this.code = "UND_ERR";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kUndiciError] === true;
+ }
+ get [kUndiciError]() {
+ return true;
+ }
};
+ var kConnectTimeoutError = Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");
var ConnectTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20926,7 +20932,14 @@ var require_errors2 = __commonJS({
this.message = message || "Connect Timeout Error";
this.code = "UND_ERR_CONNECT_TIMEOUT";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kConnectTimeoutError] === true;
+ }
+ get [kConnectTimeoutError]() {
+ return true;
+ }
};
+ var kHeadersTimeoutError = Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");
var HeadersTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20934,7 +20947,14 @@ var require_errors2 = __commonJS({
this.message = message || "Headers Timeout Error";
this.code = "UND_ERR_HEADERS_TIMEOUT";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHeadersTimeoutError] === true;
+ }
+ get [kHeadersTimeoutError]() {
+ return true;
+ }
};
+ var kHeadersOverflowError = Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");
var HeadersOverflowError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20942,7 +20962,14 @@ var require_errors2 = __commonJS({
this.message = message || "Headers Overflow Error";
this.code = "UND_ERR_HEADERS_OVERFLOW";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHeadersOverflowError] === true;
+ }
+ get [kHeadersOverflowError]() {
+ return true;
+ }
};
+ var kBodyTimeoutError = Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");
var BodyTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20950,19 +20977,14 @@ var require_errors2 = __commonJS({
this.message = message || "Body Timeout Error";
this.code = "UND_ERR_BODY_TIMEOUT";
}
- };
- var ResponseStatusCodeError = class extends UndiciError {
- constructor(message, statusCode, headers, body) {
- super(message);
- this.name = "ResponseStatusCodeError";
- this.message = message || "Response Status Code Error";
- this.code = "UND_ERR_RESPONSE_STATUS_CODE";
- this.body = body;
- this.status = statusCode;
- this.statusCode = statusCode;
- this.headers = headers;
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kBodyTimeoutError] === true;
+ }
+ get [kBodyTimeoutError]() {
+ return true;
}
};
+ var kInvalidArgumentError = Symbol.for("undici.error.UND_ERR_INVALID_ARG");
var InvalidArgumentError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20970,7 +20992,14 @@ var require_errors2 = __commonJS({
this.message = message || "Invalid Argument Error";
this.code = "UND_ERR_INVALID_ARG";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInvalidArgumentError] === true;
+ }
+ get [kInvalidArgumentError]() {
+ return true;
+ }
};
+ var kInvalidReturnValueError = Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");
var InvalidReturnValueError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20978,14 +21007,29 @@ var require_errors2 = __commonJS({
this.message = message || "Invalid Return Value Error";
this.code = "UND_ERR_INVALID_RETURN_VALUE";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInvalidReturnValueError] === true;
+ }
+ get [kInvalidReturnValueError]() {
+ return true;
+ }
};
+ var kAbortError = Symbol.for("undici.error.UND_ERR_ABORT");
var AbortError2 = 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;
+ }
+ get [kAbortError]() {
+ return true;
}
};
+ var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED");
var RequestAbortedError = class extends AbortError2 {
constructor(message) {
super(message);
@@ -20993,7 +21037,14 @@ var require_errors2 = __commonJS({
this.message = message || "Request aborted";
this.code = "UND_ERR_ABORTED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kRequestAbortedError] === true;
+ }
+ get [kRequestAbortedError]() {
+ return true;
+ }
};
+ var kInformationalError = Symbol.for("undici.error.UND_ERR_INFO");
var InformationalError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21001,7 +21052,14 @@ var require_errors2 = __commonJS({
this.message = message || "Request information";
this.code = "UND_ERR_INFO";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInformationalError] === true;
+ }
+ get [kInformationalError]() {
+ return true;
+ }
};
+ var kRequestContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");
var RequestContentLengthMismatchError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21009,7 +21067,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kRequestContentLengthMismatchError]() {
+ return true;
+ }
};
+ var kResponseContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");
var ResponseContentLengthMismatchError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21017,7 +21082,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kResponseContentLengthMismatchError]() {
+ return true;
+ }
};
+ var kClientDestroyedError = Symbol.for("undici.error.UND_ERR_DESTROYED");
var ClientDestroyedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21025,7 +21097,14 @@ var require_errors2 = __commonJS({
this.message = message || "The client is destroyed";
this.code = "UND_ERR_DESTROYED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kClientDestroyedError] === true;
+ }
+ get [kClientDestroyedError]() {
+ return true;
+ }
};
+ var kClientClosedError = Symbol.for("undici.error.UND_ERR_CLOSED");
var ClientClosedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21033,7 +21112,14 @@ var require_errors2 = __commonJS({
this.message = message || "The client is closed";
this.code = "UND_ERR_CLOSED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kClientClosedError] === true;
+ }
+ get [kClientClosedError]() {
+ return true;
+ }
};
+ var kSocketError = Symbol.for("undici.error.UND_ERR_SOCKET");
var SocketError = class extends UndiciError {
constructor(message, socket) {
super(message);
@@ -21042,7 +21128,14 @@ var require_errors2 = __commonJS({
this.code = "UND_ERR_SOCKET";
this.socket = socket;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kSocketError] === true;
+ }
+ get [kSocketError]() {
+ return true;
+ }
};
+ var kNotSupportedError = Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");
var NotSupportedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21050,7 +21143,14 @@ var require_errors2 = __commonJS({
this.message = message || "Not supported error";
this.code = "UND_ERR_NOT_SUPPORTED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kNotSupportedError] === true;
+ }
+ get [kNotSupportedError]() {
+ return true;
+ }
};
+ var kBalancedPoolMissingUpstreamError = Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");
var BalancedPoolMissingUpstreamError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21058,7 +21158,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kBalancedPoolMissingUpstreamError]() {
+ return true;
+ }
};
+ var kHTTPParserError = Symbol.for("undici.error.UND_ERR_HTTP_PARSER");
var HTTPParserError = class extends Error {
constructor(message, code, data) {
super(message);
@@ -21066,7 +21173,14 @@ var require_errors2 = __commonJS({
this.code = code ? `HPE_${code}` : void 0;
this.data = data ? data.toString() : void 0;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHTTPParserError] === true;
+ }
+ get [kHTTPParserError]() {
+ return true;
+ }
};
+ var kResponseExceededMaxSizeError = Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");
var ResponseExceededMaxSizeError = class extends UndiciError {
constructor(message) {
super(message);
@@ -21074,7 +21188,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kResponseExceededMaxSizeError]() {
+ return true;
+ }
};
+ var kRequestRetryError = Symbol.for("undici.error.UND_ERR_REQ_RETRY");
var RequestRetryError = class extends UndiciError {
constructor(message, code, { headers, data }) {
super(message);
@@ -21085,7 +21206,14 @@ var require_errors2 = __commonJS({
this.data = data;
this.headers = headers;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kRequestRetryError] === true;
+ }
+ get [kRequestRetryError]() {
+ return true;
+ }
};
+ var kResponseError = Symbol.for("undici.error.UND_ERR_RESPONSE");
var ResponseError = class extends UndiciError {
constructor(message, code, { headers, body }) {
super(message);
@@ -21096,7 +21224,14 @@ var require_errors2 = __commonJS({
this.body = body;
this.headers = headers;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kResponseError] === true;
+ }
+ get [kResponseError]() {
+ return true;
+ }
};
+ var kSecureProxyConnectionError = Symbol.for("undici.error.UND_ERR_PRX_TLS");
var SecureProxyConnectionError = class extends UndiciError {
constructor(cause, message, options = {}) {
super(message, { cause, ...options });
@@ -21105,6 +21240,27 @@ var require_errors2 = __commonJS({
this.code = "UND_ERR_PRX_TLS";
this.cause = cause;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kSecureProxyConnectionError] === true;
+ }
+ get [kSecureProxyConnectionError]() {
+ return true;
+ }
+ };
+ var kMaxOriginsReachedError = Symbol.for("undici.error.UND_ERR_MAX_ORIGINS_REACHED");
+ var MaxOriginsReachedError = class extends UndiciError {
+ constructor(message) {
+ super(message);
+ this.name = "MaxOriginsReachedError";
+ this.message = message || "Maximum allowed origins reached";
+ this.code = "UND_ERR_MAX_ORIGINS_REACHED";
+ }
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kMaxOriginsReachedError] === true;
+ }
+ get [kMaxOriginsReachedError]() {
+ return true;
+ }
};
module2.exports = {
AbortError: AbortError2,
@@ -21115,7 +21271,6 @@ var require_errors2 = __commonJS({
BodyTimeoutError,
RequestContentLengthMismatchError,
ConnectTimeoutError,
- ResponseStatusCodeError,
InvalidArgumentError,
InvalidReturnValueError,
RequestAbortedError,
@@ -21129,7 +21284,8 @@ var require_errors2 = __commonJS({
ResponseExceededMaxSizeError,
RequestRetryError,
ResponseError,
- SecureProxyConnectionError
+ SecureProxyConnectionError,
+ MaxOriginsReachedError
};
}
});
@@ -21344,7 +21500,7 @@ var require_tree = __commonJS({
}
/**
* @param {Uint8Array} key
- * @return {TstNode | null}
+ * @returns {TstNode | null}
*/
search(key) {
const keylength = key.length;
@@ -21413,8 +21569,6 @@ var require_util8 = __commonJS({
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 timers = require_timers2();
@@ -21463,7 +21617,7 @@ var require_util8 = __commonJS({
function isBlobLike(object) {
if (object === null) {
return false;
- } else if (object instanceof Blob2) {
+ } else if (object instanceof Blob) {
return true;
} else if (typeof object !== "object") {
return false;
@@ -21472,8 +21626,11 @@ var require_util8 = __commonJS({
return (sTag === "Blob" || sTag === "File") && ("stream" in object && typeof object.stream === "function" || "arrayBuffer" in object && typeof object.arrayBuffer === "function");
}
}
+ function pathHasQueryOrFragment(url) {
+ return url.includes("?") || url.includes("#");
+ }
function serializePathWithQuery(url, queryParams) {
- if (url.includes("?") || url.includes("#")) {
+ if (pathHasQueryOrFragment(url)) {
throw new Error('Query params cannot be passed when url already contains "?" or "#".');
}
const stringified = stringify(queryParams);
@@ -21729,12 +21886,11 @@ var require_util8 = __commonJS({
let iterator;
return new ReadableStream(
{
- async start() {
+ start() {
iterator = iterable[Symbol.asyncIterator]();
},
pull(controller) {
- async function pull() {
- const { done, value } = await iterator.next();
+ return iterator.next().then(({ done, value }) => {
if (done) {
queueMicrotask(() => {
controller.close();
@@ -21745,14 +21901,13 @@ var require_util8 = __commonJS({
if (buf.byteLength) {
controller.enqueue(new Uint8Array(buf));
} else {
- return await pull();
+ return this.pull(controller);
}
}
- }
- return pull();
+ });
},
- async cancel() {
- await iterator.return();
+ cancel() {
+ return iterator.return();
},
type: "bytes"
}
@@ -21769,20 +21924,6 @@ var require_util8 = __commonJS({
signal.once("abort", listener);
return () => signal.removeListener("abort", listener);
}
- var toUSVString = (() => {
- if (typeof String.prototype.toWellFormed === "function") {
- return (value) => `${value}`.toWellFormed();
- } else {
- return nodeUtil.toUSVString;
- }
- })();
- var isUSVString = (() => {
- if (typeof String.prototype.isWellFormed === "function") {
- return (value) => `${value}`.isWellFormed();
- } else {
- return (value) => toUSVString(value) === `${value}`;
- }
- })();
function isTokenCharCode(c) {
switch (c) {
case 34:
@@ -21899,6 +22040,19 @@ var require_util8 = __commonJS({
message += ` timeout: ${opts.timeout}ms)`;
destroy(socket, new ConnectTimeoutError(message));
}
+ function getProtocolFromUrlString(urlString) {
+ if (urlString[0] === "h" && urlString[1] === "t" && urlString[2] === "t" && urlString[3] === "p") {
+ switch (urlString[4]) {
+ case ":":
+ return "http:";
+ case "s":
+ if (urlString[5] === ":") {
+ return "https:";
+ }
+ }
+ }
+ return urlString.slice(0, urlString.indexOf(":") + 1);
+ }
var kEnumerableProperty = /* @__PURE__ */ Object.create(null);
kEnumerableProperty.enumerable = true;
var normalizedMethodRecordsBase = {
@@ -21925,8 +22079,6 @@ var require_util8 = __commonJS({
module2.exports = {
kEnumerableProperty,
isDisturbed,
- toUSVString,
- isUSVString,
isBlobLike,
parseOrigin,
parseURL,
@@ -21952,6 +22104,7 @@ var require_util8 = __commonJS({
assertRequestHandler,
getSocketInfo,
isFormDataLike,
+ pathHasQueryOrFragment,
serializePathWithQuery,
addAbortListener,
isValidHTTPToken,
@@ -21966,8 +22119,43 @@ var require_util8 = __commonJS({
nodeMinor,
safeHTTPMethods: Object.freeze(["GET", "HEAD", "OPTIONS", "TRACE"]),
wrapRequestBody,
- setupConnectTimeout
+ setupConnectTimeout,
+ getProtocolFromUrlString
+ };
+ }
+});
+
+// node_modules/undici/lib/util/stats.js
+var require_stats = __commonJS({
+ "node_modules/undici/lib/util/stats.js"(exports2, module2) {
+ "use strict";
+ var {
+ kConnected,
+ kPending,
+ kRunning,
+ kSize,
+ kFree,
+ kQueued
+ } = require_symbols6();
+ var ClientStats = class {
+ constructor(client) {
+ this.connected = client[kConnected];
+ this.pending = client[kPending];
+ this.running = client[kRunning];
+ this.size = client[kSize];
+ }
+ };
+ var PoolStats = class {
+ constructor(pool) {
+ this.connected = pool[kConnected];
+ this.free = pool[kFree];
+ this.pending = pool[kPending];
+ this.queued = pool[kQueued];
+ this.running = pool[kRunning];
+ this.size = pool[kSize];
+ }
};
+ module2.exports = { ClientStats, PoolStats };
}
});
@@ -21989,6 +22177,8 @@ var require_diagnostics = __commonJS({
// Request
create: diagnosticsChannel.channel("undici:request:create"),
bodySent: diagnosticsChannel.channel("undici:request:bodySent"),
+ bodyChunkSent: diagnosticsChannel.channel("undici:request:bodyChunkSent"),
+ bodyChunkReceived: diagnosticsChannel.channel("undici:request:bodyChunkReceived"),
headers: diagnosticsChannel.channel("undici:request:headers"),
trailers: diagnosticsChannel.channel("undici:request:trailers"),
error: diagnosticsChannel.channel("undici:request:error"),
@@ -22058,7 +22248,7 @@ var require_diagnostics = __commonJS({
const {
request: { method, path, origin }
} = evt;
- debugLog("sending request to %s %s/%s", method, origin, path);
+ debugLog("sending request to %s %s%s", method, origin, path);
}
);
}
@@ -22076,7 +22266,7 @@ var require_diagnostics = __commonJS({
response: { statusCode }
} = evt;
debugLog(
- "received response to %s %s/%s - HTTP %d",
+ "received response to %s %s%s - HTTP %d",
method,
origin,
path,
@@ -22090,7 +22280,7 @@ var require_diagnostics = __commonJS({
const {
request: { method, path, origin }
} = evt;
- debugLog("trailers received from %s %s/%s", method, origin, path);
+ debugLog("trailers received from %s %s%s", method, origin, path);
}
);
diagnosticsChannel.subscribe(
@@ -22101,7 +22291,7 @@ var require_diagnostics = __commonJS({
error
} = evt;
debugLog(
- "request to %s %s/%s errored - %s",
+ "request to %s %s%s errored - %s",
method,
origin,
path,
@@ -22191,7 +22381,8 @@ var require_request3 = __commonJS({
serializePathWithQuery,
assertRequestHandler,
getServerName,
- normalizedMethodRecords
+ normalizedMethodRecords,
+ getProtocolFromUrlString
} = require_util8();
var { channels } = require_diagnostics();
var { headerNameLowerCasedRecord } = require_constants6();
@@ -22212,7 +22403,8 @@ var require_request3 = __commonJS({
reset,
expectContinue,
servername,
- throwOnError
+ throwOnError,
+ maxRedirections
}, handler) {
if (typeof path !== "string") {
throw new InvalidArgumentError("path must be a string");
@@ -22244,6 +22436,9 @@ var require_request3 = __commonJS({
if (throwOnError != null) {
throw new InvalidArgumentError("invalid throwOnError");
}
+ if (maxRedirections != null && maxRedirections !== 0) {
+ throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");
+ }
this.headersTimeout = headersTimeout;
this.bodyTimeout = bodyTimeout;
this.method = method;
@@ -22285,6 +22480,7 @@ var require_request3 = __commonJS({
this.upgrade = upgrade || null;
this.path = query ? serializePathWithQuery(path, query) : path;
this.origin = origin;
+ this.protocol = getProtocolFromUrlString(origin);
this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
this.blocking = blocking ?? this.method !== "HEAD";
this.reset = reset == null ? null : reset;
@@ -22325,6 +22521,9 @@ var require_request3 = __commonJS({
}
}
onBodySent(chunk) {
+ if (channels.bodyChunkSent.hasSubscribers) {
+ channels.bodyChunkSent.publish({ request: this, chunk });
+ }
if (this[kHandler].onBodySent) {
try {
return this[kHandler].onBodySent(chunk);
@@ -22373,6 +22572,9 @@ var require_request3 = __commonJS({
onData(chunk) {
assert(!this.aborted);
assert(!this.completed);
+ if (channels.bodyChunkReceived.hasSubscribers) {
+ channels.bodyChunkReceived.publish({ request: this, chunk });
+ }
try {
return this[kHandler].onData(chunk);
} catch (err) {
@@ -22711,16 +22913,19 @@ var require_dispatcher_base2 = __commonJS({
var kOnDestroyed = Symbol("onDestroyed");
var kOnClosed = Symbol("onClosed");
var DispatcherBase = class extends Dispatcher {
- constructor() {
- super();
- this[kDestroyed] = false;
- this[kOnDestroyed] = null;
- this[kClosed] = false;
- this[kOnClosed] = [];
- }
+ /** @type {boolean} */
+ [kDestroyed] = false;
+ /** @type {Array|null} */
+ [kOnDestroyed] = null;
+ /** @type {boolean} */
+ [kClosed] = false;
+ /** @type {Array} */
+ [kOnClosed] = [];
+ /** @returns {boolean} */
get destroyed() {
return this[kDestroyed];
}
+ /** @returns {boolean} */
get closed() {
return this[kClosed];
}
@@ -22841,55 +23046,32 @@ var require_connect2 = __commonJS({
var util = require_util8();
var { InvalidArgumentError } = require_errors2();
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;
- }
- 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) {
+ var SessionCache = class WeakSessionCache {
+ constructor(maxCachedSessions) {
+ this._maxCachedSessions = maxCachedSessions;
+ this._sessionCache = /* @__PURE__ */ new Map();
+ this._sessionRegistry = new FinalizationRegistry((key) => {
+ if (this._sessionCache.size < this._maxCachedSessions) {
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;
+ const ref = this._sessionCache.get(key);
+ if (ref !== void 0 && ref.deref() === void 0) {
+ this._sessionCache.delete(key);
}
- if (this._sessionCache.size >= this._maxCachedSessions) {
- const { value: oldestKey } = this._sessionCache.keys().next();
- this._sessionCache.delete(oldestKey);
- }
- this._sessionCache.set(sessionKey, session);
+ });
+ }
+ 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 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");
@@ -22969,16 +23151,14 @@ var require_utils3 = __commonJS({
"node_modules/undici/lib/llhttp/utils.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.enumToMap = void 0;
+ exports2.enumToMap = enumToMap;
function enumToMap(obj, filter = [], exceptions = []) {
- var _a, _b;
- const emptyFilter = ((_a = filter === null || filter === void 0 ? void 0 : filter.length) !== null && _a !== void 0 ? _a : 0) === 0;
- const emptyExceptions = ((_b = exceptions === null || exceptions === void 0 ? void 0 : exceptions.length) !== null && _b !== void 0 ? _b : 0) === 0;
+ const emptyFilter = (filter?.length ?? 0) === 0;
+ const emptyExceptions = (exceptions?.length ?? 0) === 0;
return Object.fromEntries(Object.entries(obj).filter(([, value]) => {
return typeof value === "number" && (emptyFilter || filter.includes(value)) && (emptyExceptions || !exceptions.includes(value));
}));
}
- exports2.enumToMap = enumToMap;
}
});
@@ -23025,7 +23205,8 @@ var require_constants7 = __commonJS({
CB_HEADER_VALUE_COMPLETE: 29,
CB_CHUNK_EXTENSION_NAME_COMPLETE: 34,
CB_CHUNK_EXTENSION_VALUE_COMPLETE: 35,
- CB_RESET: 31
+ CB_RESET: 31,
+ CB_PROTOCOL_COMPLETE: 38
};
exports2.TYPE = {
BOTH: 0,
@@ -23568,6 +23749,39 @@ var require_constants7 = __commonJS({
"transfer-encoding": exports2.HEADER_STATE.TRANSFER_ENCODING,
"upgrade": exports2.HEADER_STATE.UPGRADE
};
+ exports2.default = {
+ ERROR: exports2.ERROR,
+ TYPE: exports2.TYPE,
+ FLAGS: exports2.FLAGS,
+ LENIENT_FLAGS: exports2.LENIENT_FLAGS,
+ METHODS: exports2.METHODS,
+ STATUSES: exports2.STATUSES,
+ FINISH: exports2.FINISH,
+ HEADER_STATE: exports2.HEADER_STATE,
+ ALPHA: exports2.ALPHA,
+ NUM_MAP: exports2.NUM_MAP,
+ HEX_MAP: exports2.HEX_MAP,
+ NUM: exports2.NUM,
+ ALPHANUM: exports2.ALPHANUM,
+ MARK: exports2.MARK,
+ USERINFO_CHARS: exports2.USERINFO_CHARS,
+ URL_CHAR: exports2.URL_CHAR,
+ HEX: exports2.HEX,
+ TOKEN: exports2.TOKEN,
+ HEADER_CHARS: exports2.HEADER_CHARS,
+ CONNECTION_TOKEN_CHARS: exports2.CONNECTION_TOKEN_CHARS,
+ QUOTED_STRING: exports2.QUOTED_STRING,
+ HTAB_SP_VCHAR_OBS_TEXT: exports2.HTAB_SP_VCHAR_OBS_TEXT,
+ MAJOR: exports2.MAJOR,
+ MINOR: exports2.MINOR,
+ SPECIAL_HEADERS: exports2.SPECIAL_HEADERS,
+ METHODS_HTTP: exports2.METHODS_HTTP,
+ METHODS_ICE: exports2.METHODS_ICE,
+ METHODS_RTSP: exports2.METHODS_RTSP,
+ METHOD_MAP: exports2.METHOD_MAP,
+ H_METHOD_MAP: exports2.H_METHOD_MAP,
+ STATUSES_HTTP: exports2.STATUSES_HTTP
+ };
}
});
@@ -23576,7 +23790,7 @@ var require_llhttp_wasm2 = __commonJS({
"node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
"use strict";
var { Buffer: Buffer2 } = require("node:buffer");
- var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzQzBQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEDAAADAAAABAUBcAESEgUDAQACBggBfwFBgNgECwfFBygGbWVtb3J5AgALX2luaXRpYWxpemUACBlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQACRhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUANgxsbGh0dHBfYWxsb2MACwZtYWxsb2MAOAtsbGh0dHBfZnJlZQAMBGZyZWUADA9sbGh0dHBfZ2V0X3R5cGUADRVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADhVsbGh0dHBfZ2V0X2h0dHBfbWlub3IADxFsbGh0dHBfZ2V0X21ldGhvZAAQFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAERJsbGh0dHBfZ2V0X3VwZ3JhZGUAEgxsbGh0dHBfcmVzZXQAEw5sbGh0dHBfZXhlY3V0ZQAUFGxsaHR0cF9zZXR0aW5nc19pbml0ABUNbGxodHRwX2ZpbmlzaAAWDGxsaHR0cF9wYXVzZQAXDWxsaHR0cF9yZXN1bWUAGBtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGRBsbGh0dHBfZ2V0X2Vycm5vABoXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AGxdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAcFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB0RbGxodHRwX2Vycm5vX25hbWUAHhJsbGh0dHBfbWV0aG9kX25hbWUAHxJsbGh0dHBfc3RhdHVzX25hbWUAIBpsbGh0dHBf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a0E+aiECCyABIAI2AhwgAUIANwIQIAJBAnRBsNYAaiEAAkBBhNQAKAIAIgNBASACdCIHcUUEQCAAIAE2AgBBhNQAIAMgB3I2AgAgASAANgIYIAEgATYCCCABIAE2AgwMAQsgBEEZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEAAkADQCAAIgMoAgRBeHEgBEYNASACQR12IQAgAkEBdCECIAMgAEEEcWpBEGoiBygCACIADQALIAcgATYCACABIAM2AhggASABNgIMIAEgATYCCAwBCyADKAIIIgAgATYCDCADIAE2AgggAUEANgIYIAEgAzYCDCABIAA2AggLQaDUAEGg1AAoAgBBAWsiAEF/IAAbNgIACwsHACAALQAoCwcAIAAtACoLBwAgAC0AKwsHACAALQApCwcAIAAvATQLBwAgAC0AMAtAAQR/IAAoAhghASAALwEuIQIgAC0AKCEDIAAoAjghBCAAEDcgACAENgI4IAAgAzoAKCAAIAI7AS4gACABNgIYC8X4AQIHfwN+IAEgAmohBAJAIAAiAygCDCIADQAgAygCBARAIAMgATYCBAsjAEEQayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDtQBAAECAwQFBgcICQoLDA0ODxARFBUWFxgZGhscHR4fICEjJCUnKCmIA4cDhQOEA/wC9QLuAusC6ALmAuMC4ALfAt0C2wLWAtUC1ALTAtICygLJAsgCxwLGAsUCxALDAr0CvAK6ArkCuAK3ArYCtQK0ArICsQKsAqoCqAKnAqYCpQKkAqMCogKhAqACnwKbApoCmQKYApcCkAKIAoQCgwKCAvkB9gH1AfQB8wHyAfEB8AHvAe0B6wHoAeMB4QHgAd8B3gHdAdwB2wHaAdkB2AHX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QEBAQEBAQEBAQEBAAEALQQAhAiADQQA2AhwgA0G3CzYCECADQQI2AgwgAyABQQFqNgIUDIEDCyADQS9qIQIDQCABIARGBEBBISECDIIDCwJAAkACQCABLQAAIgBBCWsOGAIAKioBKioqKioqKioqKioqKioqKioqAigLIAFBAWohASADQS9qLQAAQQFxRQ0LDBkLIAFBAWohAQwYCyABQQFqIQEgAi0AAEECcQ0AC0EAIQIgA0EANgIcIAMgATYCFCADQc4UNgIQIANBDDYCDAyAAwsgAUEBaiEBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADQEM0QILIANCADcDIAw8CyAAQRVGBEAgA0EkNgIcIAMgATYCFCADQYYaNgIQIANBFTYCDEEAIQIM/QILQQAhAiADQQA2AhwgAyABNgIUIANB4g02AhAgA0EUNgIMDPwCCyADKAIEIQBBACECIANBADYCBCADIAAgASAMp2oiARAxIgBFDSsgA0EHNgIcIAMgATYCFCADIAA2AgwM+wILIAMtAC5BwABxRQ0BC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAARQ0rIABBFUYEQCADQQo2AhwgAyABNgIUIANB8Rg2AhAgA0EVNgIMQQAhAgz6AgtBACECIANBADYCHCADIAE2AhQgA0GLDDYCECADQRM2AgwM+QILQQAhAiADQQA2AhwgAyABNgIUIANBsRQ2AhAgA0ECNgIMDPgCC0EAIQIgA0EANgIcIAMgATYCFCADQYwUNgIQIANBGTYCDAz3AgtBACECIANBADYCHCADIAE2AhQgA0HRHDYCECADQRk2AgwM9gILIABBFUYNPUEAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAz1AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQ0oIANBDTYCHCADIAE2AhQgAyAANgIMDPQCCyAAQRVGDTpBACECIANBADYCHCADIAE2AhQgA0GiDzYCECADQSI2AgwM8wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDIiAEUEQCABQQFqIQEMKAsgA0EONgIcIAMgADYCDCADIAFBAWo2AhQM8gILIABBFUYNN0EAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAzxAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQRAIAFBAWohAQwnCyADQQ82AhwgAyAANgIMIAMgAUEBajYCFAzwAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM7wILIABBFUYNM0EAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzuAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQ0lIANBETYCHCADIAE2AhQgAyAANgIMDO0CCyAAQRVGDTBBACECIANBADYCHCADIAE2AhQgA0HODDYCECADQSM2AgwM7AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEMJQsgA0ESNgIcIAMgADYCDCADIAFBAWo2AhQM6wILIANBL2otAABBAXFFDQELQRUhAgzPAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM6AILIABBO0cNACABQQFqIQEMDAtBACECIANBADYCHCADIAE2AhQgA0GYFzYCECADQQI2AgwM5gILIABBFUYNKEEAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzlAgsgA0EUNgIcIAMgATYCFCADIAA2AgwM5AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEM3AILIANBFTYCHCADIAA2AgwgAyABQQFqNgIUDOMCCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNoCCyADQRc2AhwgAyAANgIMIAMgAUEBajYCFAziAgsgAEEVRg0jQQAhAiADQQA2AhwgAyABNgIUIANBzgw2AhAgA0EjNgIMDOECCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDB0LIANBGTYCHCADIAA2AgwgAyABQQFqNgIUDOACCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNYCCyADQRo2AhwgAyAANgIMIAMgAUEBajYCFAzfAgsgAEEVRg0fQQAhAiADQQA2AhwgAyABNgIUIANBog82AhAgA0EiNgIMDN4CCyADKAIEIQBBACEC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DLMCCyABIARGBEBB6QEhAgyzAgsgAS0AAEHIAEYNASADQQE6ACgLQbYBIQIMlwILQcoBIQIMlgILIAEgBEcEQCADQQw2AgggAyABNgIEQckBIQIMlgILQegBIQIMrwILIAEgBEYEQEHnASECDK8CCyABLQAAQcgARw0EIAFBAWohAUHIASECDJQCCyABIARGBEBB5gEhAgyuAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQcYBIQIMlAILIAFBAWohAUHHASECDJMCC0HlASECIAEgBEYNrAIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB99MAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMrQILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgBFBEBB1AEhAgyTAgsgA0HkATYCHCADIAE2AhQgAyAANgIMQQAhAgysAgtB4wEhAiABIARGDasCIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQfXTAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADKwCCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB0B42AhAgA0EINgIMDKkCC0HFASECDI4CCyADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDKcCC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ1lIABBFUcEQCADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgynAgsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDKYCC0HhASECIAQgASIARg2lAiAEIAFrIAMoAgAiAWohBSAAIAFrQQRqIQYCQANAIAAtAAAgAUHw0wBqLQAARw0BIAFBBEYNAyABQQFqIQEgBCAAQQFqIgBHDQALIAMgBTYCAAymAgsgA0EANgIcIAMgADYCFCADQYQ3NgIQIANBCDYCDCADQQA2AgBBACECDKUCCyABIARHBEAgA0ENNgIIIAMgATYCBEHCASECDIsCC0HgASECDKQCCyADQQA2AgAgBkEBaiEBC0HDASECDIgCCyABIARGBEBB3wEhAgyiAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBwQEhAgyIAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYgCIANB3gE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAEgBEYEQEHdASECDKECCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYkCIANB3AE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILQcABIQIMhgILIAEgBEYEQEHbASECDKACC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDQIgA0HYATYCHCADIAE2AhQgAyAANgIMQQAhAgyiAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYsCIANB2QE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ2JAiADQdoBNgIcIAMgATYCFCADIAA2AgwMoAILQb8BIQIMhQILQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBnA02AhAgA0EhNgIMQQAhAgygAgtBvgEhAgyFAgsgA0HXATYCHCADIAE2AhQgA0HWGTYCECADQRU2AgxBACECDJ4CCyABIARGBEBB1wEhAgyeAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANB6xA2AhAgA0EJNgIMQQAhAgyeAgtBvQEhAgyDAgsgASAERgRAQdYBIQIM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LgsgAUEBaiEBQZcBIQIM2AELIAFBAWohAUEiDCsLIAEgBEYEQEGvASECDPEBCyABLQAAQdAARw0rIAFBAWohAUGWASECDNYBCyABIARGBEBBrgEhAgzwAQsCQAJAIAEtAABBxgBrDgsALCwsLCwsLCwsASwLIAFBAWohAUGUASECDNYBCyABQQFqIQFBlQEhAgzVAQtBrQEhAiABIARGDe4BIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazTAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO8BCyADQQA2AgAgBkEBaiEBQQ0MKAtBrAEhAiABIARGDe0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQeHTAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO4BCyADQQA2AgAgBkEBaiEBQQwMJwtBqwEhAiABIARGDewBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQarTAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO0BCyADQQA2AgAgBkEBaiEBQQMMJgtBqgEhAiABIARGDesBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQajTAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOwBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQakBIQIM6wELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBjwEhAgzRAQsgAUEBaiEBQZABIQIM0AELQagBIQIgASAERg3pASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm0wBqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzqAQsgA0EANgIAIAZBAWohAUEnDCMLQacBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk0wBqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEcDCILQaYBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGe0wBqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEGDCELQaUBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGZ0wBqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGkASECDOYBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQYQBIQIMzgELIAFBAWohAUGFASECDM0BCyABQQFqIQFBigEhAgzMAQsgAUEBaiEBQYsBIQIMywELQaMBIQIgASAERg3kASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGX0wBqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzlAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGiASECDOQBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGGASECDMoBCyABQQFqIQFBiQEhAgzJAQsgASAERgRAQaEBIQIM4wELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQYcBIQIMyQELIAFBAWohAUGIASECDMgBCyABIARGBEBBoAEhAgziAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GfASECIAEgBEYN4AEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBkdMAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4QELIANBADYCACAGQQFqIQFBHgwaC0GeASECIAEgBEYN3wEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBitMAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4AELIANBADYCACAGQQFqIQFBFQwZC0GdASECIAEgBEYN3gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBh9MAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3wELIANBADYCACAGQQFqIQFBFwwYC0GcASECIAEgBEYN3QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBgdMAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3gELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBmwEhAgzdAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYEBIQIMwwELIAFBAWohAUGCASECDMIBC0GaASECIAEgBEYN2wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5tMAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3AELIANBADYCACAGQQFqIQFBCQwVC0GZASECIAEgBEYN2gEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5NMAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2wELIANBADYCACAGQQFqIQFBHwwUC0GYASECIAEgBEYN2QEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB/tIAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2gELIANBADYCACAGQQFqIQFBAgwTC0GXASECIAEgBEYN2AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQfzSAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyABIARGBEBBlgEhAgzYAQtBASABLQAAQd8ARw0RGiABQQFqIQFB/QAhAgy9AQsgA0EANgIAIAZBAWohAUH+ACECDLwBC0GVASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBxNMAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBKQwPC0GUASECIAEgBEYN1AEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB+NIAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1QELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBkwEhAgzUAQsgAS0AAEHFAEcNDiABQQFqIQFB+gAhAgy5AQsgASAERgRAQZIBIQIM0wELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFB+AAhAgy5AQsgAUEBaiEBQfkAIQIMuAELQZEBIQIgASAERg3RASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHz0gBqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzSAQsgA0EANgIAIAZBAWohAUEjDAsLQZABIQIgASAERg3QASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHw0gBqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzRAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGPASECDNABCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQfMAIQIMtgELIAFBAWohAUH2ACECDLUBCyABIARGBEBBjgEhAgzPAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB9AAhAgy1AQsgAUEBaiEBQfUAIQIMtAELIAEgBEYEQEGNASECDM4BCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQYwBIQIgASAERg3MASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHs0gBqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzNAQsgA0EANgIAIAZBAWohAUEFDAYLQYsBIQIgASAERg3LASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHm0gBqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzMAQsgA0EANgIAIAZBAWohAUEWDAULQYoBIQIgASAERg3KASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHh0wBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzLAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGJASECDMoBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUHvACECDLABCyABQQFqIQFB8AAhAgyvAQtBiAEhAiABIARGDcgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQeDSAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMkBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGHASECDMcBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC0iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB6R42AhAgA0EGNgIMDMQBC0HuACECDKkBCyADQYYBNgIcIAMgATYCFCADIAA2AgxBACECDMIBC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgzBAQtB7QAhAgymAQsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDL8BCyABIARGBEBBhQEhAgy/AQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GGHjYCECADQQY2AgxBACECDL8BC0ECIQIMpAELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GEASECDL0BCyABIARGBEBBgwEhAgy9AQsCQCABLQAAQQlrDgRAAABAAAtB6wAhAgyiAQsgAy0AKUEFRgRAQewAIQIMogELQeoAIQIMoQELIAEgBEYEQEGCASECDLsBCyADQQ82AgggAyABNgIEDAoLIAEgBEYEQEGBASECDLoBCwJAIAEtAABBCWsOBD0AAD0AC0HpACECDJ8BCyABIARHBEAgA0EPNgIIIAMgATYCBEHnACECDJ8BC0GAASECDLgBCwJAIAEgBEcEQANAIAEtAABB4M4Aai0AACIAQQNHBEACQCAAQQFrDgI/AAQLQeYAIQIMoQELIAQgAUEBaiIBRw0AC0H+ACECDLkBC0H+ACECDLgBCyADQQA2AhwgAyABNgIUIANBxh82AhAgA0EHNgIMQQAhAgy3AQsgASAERgRAQf8AIQIMtwELAkACQAJAIAEtAABB4NAAai0AAEEBaw4DPAIAAQtB6AAhAgyeAQsgA0EANgIcIAMgATYCFCADQYYSNgIQIANBBzYCDEEAIQIMtwELQeAAIQIMnAELIAEgBEcEQCABQQFqIQFB5QAhAgycAQtB/QAhAgy1AQsgBCABIgBGBEBB/AAhAgy1AQsgAC0AACIBQS9GBEAgAEEBaiEBQeQAIQIMmwELIAFBCWsiAkEXSw0BIAAhAUEBIAJ0QZuAgARxDTcMAQsgBCABIgBGBEBB+wAhAgy0AQsgAC0AAEEvRw0AIABBAWohAQwDC0EAIQIgA0EANgIcIAMgADYCFCADQcYfNgIQIANBBzYCDAyyAQsCQAJAAkACQAJAA0AgAS0AAEHgzABqLQAAIgBBBUcEQAJAAkAgAEEBaw4IPQUGBwgABAEIC0HhACECDJ8BCyABQQFqIQFB4wAhAgyeAQsgBCABQQFqIgFHDQALQfoAIQIMtgELIAFBAWoMFAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgy0AQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyzAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyyAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMsQELIAEgBEYEQEH5ACECDLEBCwJAIAEtAABB4MwAai0AAEEBaw4INAQFBgAIAgMHCyABQQFqIQELQQMhAgyVAQsgAUEBagwNC0EAIQIgA0EANgIcIANBoxI2AhAgA0EHNgIMIAMgAUEBajYCFAytAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgysAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMqQELQeIAIQIMjgELIAEgBEYEQEH4ACECDKgBCyABQQFqDAILIAEgBEYEQEH3ACECDKcBCyABQQFqDAELIAEgBEYNASABQQFqCyEBQQQhAgyKAQtB9gAhAgyjAQsDQCABLQAAQeDKAGotAAAiAEECRwRAIABBAUcEQEHfACECDIsBCwwnCyAEIAFBAWoiAUcNAAtB9QAhAgyiAQsgASAERgRAQfQAIQIMogELAkAgAS0AAEEJaw43JQMGJQQGBgYGBgYGBgYGBgYGBgYGBgYFBgYCBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAYLIAFBAWoLIQFBBSECDIYBCyABQQFqDAYLIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMngELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMnQELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB8AA2AhwgAyABNgIUIAMgADYCDEEAIQIMnAELIANBADYCHCADIAE2AhQgA0G8EzYCECADQQc2AgxBACECDJsBCwJAAkACQAJAA0AgAS0AAEHgyABqLQAAIgBBBUcEQAJAIABBAWsOBiQDBAUGAAYLQd4AIQIMhgELIAQgAUEBaiIBRw0AC0HzACECDJ4BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQdsANgIcIAMgATYCFCADIAA2AgxBACECDJ0BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDJwBCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQfAANgIcIAMgATYCFCADIAA2AgxBACECDJsBCyADQQA2AhwgAyABNgIUIANB3Ag2AhAgA0EHNgIMQQAhAgyaAQsgASAERg0BIAFBAWoLIQFBBiECDH4LQfIAIQIMlwELAkACQAJAAkADQCABLQAAQeDGAGotAAAiAEEFRwRAIABBAWsOBB8CAwQFCyAEIAFBAWoiAUcNAAtB8QAhAgyaAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyZAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyYAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyXAQsgA0EANgIcIAMgATYCFCADQbQKNgIQIANBBzYCDEEAIQIMlgELQc4AIQIMewtB0AAhAgx6C0HdACECDHkLIAEgBEYEQEHwACECDJMBCwJAIAEtAABBCWsOBBYAABYACyABQQFqIQFB3AAhAgx4CyABIARGBEBB7wAhAgySAQsCQCABLQAAQQlrDgQVAAAVAAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUEQEHTASECDHgLIABBFUcEQCADQQA2AhwgAyABNgIUIANBwQ02AhAgA0EaNgIMQQAhAgySAQsgA0HuADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDJEBC0HtACECIAEgBEYNkAEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB18YAai0AAEcNBCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMkQELIANBADYCACAGQQFqIQEgAy0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACECIANBADYCHCADIAE2AhQgA0HlCTYCECADQQg2AgwMkAELQewAIQIgASAERg2PASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHUxgBqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyQAQsgA0EANgIAIAZBAWohASADLQApQSFGDQMgA0EANgIcIAMgATYCFCADQYkKNgIQIANBCDYCDEEAIQIMjwELQesAIQIgASAERg2OASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHQxgBqLQAARw0CIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyPAQsgA0EANgIAIAZBAWohASADLQApIgBBI0kNAiAAQS5GDQIgA0EANgIcIAMgATYCFCADQcEJNgIQIANBCDYCDEEAIQIMjgELIANBADYCAAtBACECIANBADYCHCADIAE2AhQgA0GENzYCECADQQg2AgwMjAELQdgAIQIMcQsgASAERwRAIANBDTYCCCADIAE2AgRB1wAhAgxxC0HqACECDIoBCyABIARGBEBB6QAhAgyKAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1gAhAgxwCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdCADQegANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyABIARGBEBB5wAhAgyJAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ11IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMiQELQdUAIQIMbgsgASAERgRAQeUAIQIMiAELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDIoBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdyADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdSADQeQANgIcIAMgATYCFCADIAA2AgwMiAELQdMAIQIMbQsgAy0AKUEiRg2AAUHSACECDGwLQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALIABFBEBB1AAhAgxsCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQZwNNgIQIANBITYCDEEAIQIMhgELIANB4QA2AhwgAyABNgIUIANB1hk2AhAgA0EVNgIMQQAhAgyFAQsgASAERgRAQeAAIQIMhQELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HRACECDGwLIANBADYCHCADIAE2AhQgA0GIETYCECADQQk2AgxBACECDIUBCyADQQA2AhwgAyABNgIUIANBiBE2AhAgA0EJNgIMQQAhAgyEAQsgASAERgRAQd8AIQIMhAELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBiBE2AhAgA0ECNgIMQQAhAgyDAQsgASAERgRAQd0AIQIMgwELIAEtAAAiAkENRgRAIAFBAWohAUHPACECDGkLIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyCAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0G1LDYCECADQQc2AgwMgAELIAEgBEYEQEHbACECDIABCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc0AIQIMZAsgASAERgRAQdoAIQIMfgsgAS0AAEEJaw4EAAEBAAELQQAhAiADQQA2AhwgA0HsETYCECADQQc2AgwgAyABQQFqNgIUDHwLIANBgBI7ASpBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNACAAQRVHDQEgA0HZADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDHsLQcwAIQIMYAsgA0EANgIcIAMgATYCFCADQcENNgIQIANBGjYCDEEAIQIMeQsgASAERgRAQdkAIQIMeQsgAS0AAEEgRw06IAFBAWohASADLQAuQQFxDTogA0EANgIcIAMgATYCFCADQa0bNgIQIANBHjYCDEEAIQIMeAsgASAERgRAQdgAIQIMeAsCQAJAAkACQAJAIAEtAAAiAEEKaw4EAgMD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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQTBrDjcVFAABAgMEBQYHFhYWFhYWFggJCgsMDRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QERITFgtCAiEKDBQLQgMhCgwTC0IEIQoMEgtCBSEKDBELQgYhCgwQC0IHIQoMDwtCCCEKDA4LQgkhCgwNC0IKIQoMDAtCCyEKDAsLQgwhCgwKC0INIQoMCQtCDiEKDAgLQg8hCgwHC0IKIQoMBgtCCyEKDAULQgwhCgwEC0INIQoMAwtCDiEKDAILQg8hCgwBC0IBIQoLIAFBAWohASADKQMgIgtC//////////8PWARAIAMgC0IEhiAKhDcDIAwCC0EAIQIgA0EANgIcIAMgATYCFCADQa0JNgIQIANBDDYCDAwfC0ElIQIMBAtBJiECDAMLIAMgAToALCADQQA2AgAgB0EBaiEBQQwhAgwCCyADQQA2AgAgBkEBaiEBQQohAgwBCyABQQFqIQFBCCECDAALAAtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMGAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMFwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMFgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMFQtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMFAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMEwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMEgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMEQtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMEAtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMDwtBACECIANBADYCHCADIAE2AhQgA0HIEjYCECADQQs2AgwMDgtBACECIANBADYCHCADIAE2AhQgA0GVCTYCECADQQs2AgwMDQtBACECIANBADYCHCADIAE2AhQgA0HpDzYCECADQQo2AgwMDAtBACECIANBADYCHCADIAE2AhQgA0GDEDYCECADQQo2AgwMCwtBACECIANBADYCHCADIAE2AhQgA0GmHDYCECADQQI2AgwMCgtBACECIANBADYCHCADIAE2AhQgA0HFFTYCECADQQI2AgwMCQtBACECIANBADYCHCADIAE2AhQgA0H/FzYCECADQQI2AgwMCAtBACECIANBADYCHCADIAE2AhQgA0HKFzYCECADQQI2AgwMBwsgA0ECNgIcIAMgATYCFCADQZQdNgIQIANBFjYCDEEAIQIMBgtB3gAhAiABIARGDQUgCUEIaiEHIAMoAgAhBQJAAkAgASAERwRAIAVBxsYAaiEIIAQgBWogAWshBiAFQX9zQQpqIgUgAWohAANAIAEtAAAgCC0AAEcEQEECIQgMAwsgBUUEQEEAIQggACEBDAMLIAVBAWshBSAIQQFqIQggBCABQQFqIgFHDQALIAYhBSAEIQELIAdBATYCACADIAU2AgAMAQsgA0EANgIAIAcgCDYCAAsgByABNgIEIAkoAgwhACAJKAIIDgMBBQIACwALIANBADYCHCADQa0dNgIQIANBFzYCDCADIABBAWo2AhRBACECDAMLIANBADYCHCADIAA2AhQgA0HCHTYCECADQQk2AgxBACECDAILIAEgBEYEQEEoIQIMAgsgA0EJNgIIIAMgATYCBEEnIQIMAQsgASAERgRAQQEhAgwBCwNAAkACQAJAIAEtAABBCmsOBAABAQABCyABQQFqIQEMAQsgAUEBaiEBIAMtAC5BIHENAEEAIQIgA0EANgIcIAMgATYCFCADQYwgNgIQIANBBTYCDAwCC0EBIQIgASAERw0ACwsgCUEQaiQAIAJFBEAgAygCDCEADAELIAMgAjYCHEEAIQAgAygCBCIBRQ0AIAMgASAEIAMoAggRAQAiAUUNACADIAQ2AhQgAyABNgIMIAEhAAsgAAu+AgECfyAAQQA6AAAgAEHcAGoiAUEBa0EAOgAAIABBADoAAiAAQQA6AAEgAUEDa0EAOgAAIAFBAmtBADoAACAAQQA6AAMgAUEEa0EAOgAAQQAgAGtBA3EiASAAaiIAQQA2AgBB3AAgAWtBfHEiAiAAaiIBQQRrQQA2AgACQCACQQlJDQAgAEEANgIIIABBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIAJBGUkNACAAQQA2AhggAEEANgIUIABBADYC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YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABUcmFuc2Zlci1FbmNvZGluZyBjYW4ndCBiZSBwcmVzZW50IHdpdGggQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBzaXplAEV4cGVjdGVkIExGIGFmdGVyIGNodW5rIHNpemUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAUhUAABoVAAAPEgAA5BkAAJEVAAAJFAAALRkAAOQUAADpEQAAaRQAAKEUAAB2FQAAQxYAAF4SAACUFwAAFxYAAH0UAAB/FgAAQRcAALMTAADDFgAABBoAAL0YAADQGAAAoBMAANQZAACvFgAAaBYAAHAXAADZFgAA/BgAAP4RAABZFwAAlxYAABwXAAD2FgAAjRcAAAsSAAB/GwAALhEAALMQAABJEgAArRIAAPYYAABoEAAAYhUAABAVAABaFgAAShkAALUVAADBFQAAYBUAAFwZAABaGQAAUxkAABYVAACtEQAAQhAAALcQAABXGAAAvxUAAIkQAAAcGQAAGhkAALkVAABRGAAA3BMAAFsVAABZFQAA5hgAAGcVAAARGQAA7RgAAOcTAACuEAAAwhcAAAAUAACSEwAAhBMAAEASAAAmGQAArxUAAGIQAEHpOQsBAQBBgDoL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB6jsLBAEAAAIAQYE8C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEHqPQsEAQAAAgBBgT4LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQeA/Cw1sb3NlZWVwLWFsaXZlAEH5PwsBAQBBkMAAC+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnBAAsBAQBBkMIAC+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGhxAALXgEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAQYDGAAshZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAEGwxgALK3JhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KU00NCg0KVFRQL0NFL1RTUC8AQenGAAsFAQIAAQMAQYDHAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQenIAAsFAQIAAQMAQYDJAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQenKAAsEAQAAAQBBgcsAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEHpzAALBQECAAEDAEGAzQALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEHpzgALBQEBAAEBAEGAzwALAQEAQZrPAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQenQAAsFAQEAAQEAQYDRAAsBAQBBitEACwYCAAAAAAIAQaHRAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB4NIAC5oBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==";
+ var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
var wasmBuffer;
Object.defineProperty(module2, "exports", {
get: () => {
@@ -23591,7 +23805,7 @@ var require_llhttp_simd_wasm2 = __commonJS({
"node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
"use strict";
var { Buffer: Buffer2 } = require("node:buffer");
- var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzQzBQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEDAAADAAAABAUBcAESEgUDAQACBggBfwFBgNgECwfFBygGbWVtb3J5AgALX2luaXRpYWxpemUACBlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQACRhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUANgxsbGh0dHBfYWxsb2MACwZtYWxsb2MAOAtsbGh0dHBfZnJlZQAMBGZyZWUADA9sbGh0dHBfZ2V0X3R5cGUADRVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADhVsbGh0dHBfZ2V0X2h0dHBfbWlub3IADxFsbGh0dHBfZ2V0X21ldGhvZAAQFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAERJsbGh0dHBfZ2V0X3VwZ3JhZGUAEgxsbGh0dHBfcmVzZXQAEw5sbGh0dHBfZXhlY3V0ZQAUFGxsaHR0cF9zZXR0aW5nc19pbml0ABUNbGxodHRwX2ZpbmlzaAAWDGxsaHR0cF9wYXVzZQAXDWxsaHR0cF9yZXN1bWUAGBtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGRBsbGh0dHBfZ2V0X2Vycm5vABoXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AGxdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAcFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB0RbGxodHRwX2Vycm5vX25hbWUAHhJsbGh0dHBfbWV0aG9kX25hbWUAHxJsbGh0dHBfc3RhdHVzX25hbWUAIBpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAhIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAiHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACMkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACQabGxodHRwX3NldF9sZW5pZW50X3ZlcnNpb24AJSNsbGh0dHBfc2V0X2xlbmllbnRfZGF0YV9hZnRlcl9jbG9zZQAmJ2xsaHR0cF9zZXRfbGVuaWVudF9vcHRpb25hbF9sZl9hZnRlcl9jcgAnLGxsaHR0cF9zZXRfbGVuaWVudF9vcHRpb25hbF9jcmxmX2FmdGVyX2NodW5rACgobGxodHRwX3NldF9sZW5pZW50X29wdGlvbmFsX2NyX2JlZm9yZV9sZgApKmxsaHR0cF9zZXRfbGVuaWVudF9zcGFjZXNfYWZ0ZXJfY2h1bmtfc2l6ZQAqGGxsaHR0cF9tZXNzYWdlX25lZWRzX2VvZgA1CRcBAEEBCxEBAgMEBQoGBzEzMi0uLCsvMArYywIzFgBB/NMAKAIABEAAC0H80wBBATYCAAsUACAAEDcgACACNgI4IAAgAToAKAsUACAAIAAvATQgAC0AMCAAEDYQAAseAQF/QcAAEDkiARA3IAFBgAg2AjggASAAOgAoIAELjwwBB38CQCAARQ0AIABBCGsiASAAQQRrKAIAIgBBeHEiBGohBQJAIABBAXENACAAQQNxRQ0BIAEgASgCACIAayIBQZDUACgCAEkNASAAIARqIQQCQAJAQZTUACgCACABRwRAIABB/wFNBEAgAEEDdiEDIAEoAggiACABKAIMIgJGBEBBgNQAQYDUACgCAEF+IAN3cTYCAAwFCyACIAA2AgggACACNgIMDAQLIAEoAhghBiABIAEoAgwiAEcEQCAAIAEoAggiAjYCCCACIAA2AgwMAwsgAUEUaiIDKAIAIgJFBEAgASgCECICRQ0CIAFBEGohAwsDQCADIQcgAiIAQRRqIgMoAgAiAg0AIABBEGohAyAAKAIQIgINAAsgB0EANgIADAILIAUoAgQiAEEDcUEDRw0CIAUgAEF+cTYCBEGI1AAgBDYCACAFIAQ2AgAgASAEQQFyNgIEDAMLQQAhAAsgBkUNAAJAIAEoAhwiAkECdEGw1gBqIgMoAgAgAUYEQCADIAA2AgAgAA0BQYTUAEGE1AAoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECABRhtqIAA2AgAgAEUNAQsgACAGNgIYIAEoAhAiAgRAIAAgAjYCECACIAA2AhgLIAFBFGooAgAiAkUNACAAQRRqIAI2AgAgAiAANgIYCyABIAVPDQAgBSgCBCIAQQFxRQ0AAkACQAJAAkAgAEECcUUEQEGY1AAoAgAgBUYEQEGY1AAgATYCAEGM1ABBjNQAKAIAIARqIgA2AgAgASAAQQFyNgIEIAFBlNQAKAIARw0GQYjUAEEANgIAQZTUAEEANgIADAYLQZTUACgCACAFRgRAQZTUACABNgIAQYjUAEGI1AAoAgAgBGoiADYCACABIABBAXI2AgQgACABaiAANgIADAYLIABBeHEgBGohBCAAQf8BTQRAIABBA3YhAyAFKAIIIgAgBSgCDCICRgRAQYDUAEGA1AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyAFKAIYIQYgBSAFKAIMIgBHBEBBkNQAKAIAGiAAIAUoAggiAjYCCCACIAA2AgwMAwsgBUEUaiIDKAIAIgJFBEAgBSgCECICRQ0CIAVBEGohAwsDQCADIQcgAiIAQRRqIgMoAgAiAg0AIABBEGohAyAAKAIQIgINAAsgB0EANgIADAILIAUgAEF+cTYCBCABIARqIAQ2AgAgASAEQQFyNgIEDAMLQQAhAAsgBkUNAAJAIAUoAhwiAkECdEGw1gBqIgMoAgAgBUYEQCADIAA2AgAgAA0BQYTUAEGE1AAoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAA2AgAgAEUNAQsgACAGNgIYIAUoAhAiAgRAIAAgAjYCECACIAA2AhgLIAVBFGooAgAiAkUNACAAQRRqIAI2AgAgAiAANgIYCyABIARqIAQ2AgAgASAEQQFyNgIEIAFBlNQAKAIARw0AQYjUACAENgIADAELIARB/wFNBEAgBEF4cUGo1ABqIQACf0GA1AAoAgAiAkEBIARBA3Z0IgNxRQRAQYDUACACIANyNgIAIAAMAQsgACgCCAsiAiABNgIMIAAgATYCCCABIAA2AgwgASACNgIIDAELQR8hAiAEQf///wdNBEAgBEEmIARBCHZnIgBrdkEBcSAAQQF0a0E+aiECCyABIAI2AhwgAUIANwIQIAJBAnRBsNYAaiEAAkBBhNQAKAIAIgNBASACdCIHcUUEQCAAIAE2AgBBhNQAIAMgB3I2AgAgASAANgIYIAEgATYCCCABIAE2AgwMAQsgBEEZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEAAkADQCAAIgMoAgRBeHEgBEYNASACQR12IQAgAkEBdCECIAMgAEEEcWpBEGoiBygCACIADQALIAcgATYCACABIAM2AhggASABNgIMIAEgATYCCAwBCyADKAIIIgAgATYCDCADIAE2AgggAUEANgIYIAEgAzYCDCABIAA2AggLQaDUAEGg1AAoAgBBAWsiAEF/IAAbNgIACwsHACAALQAoCwcAIAAtACoLBwAgAC0AKwsHACAALQApCwcAIAAvATQLBwAgAC0AMAtAAQR/IAAoAhghASAALwEuIQIgAC0AKCEDIAAoAjghBCAAEDcgACAENgI4IAAgAzoAKCAAIAI7AS4gACABNgIYC8X4AQIHfwN+IAEgAmohBAJAIAAiAygCDCIADQAgAygCBARAIAMgATYCBAsjAEEQayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDtQBAAECAwQFBgcICQoLDA0ODxARFBUWFxgZGhscHR4fICEjJCUnKCmIA4cDhQOEA/wC9QLuAusC6ALmAuMC4ALfAt0C2wLWAtUC1ALTAtICygLJAsgCxwLGAsUCxALDAr0CvAK6ArkCuAK3ArYCtQK0ArICsQKsAqoCqAKnAqYCpQKkAqMCogKhAqACnwKbApoCmQKYApcCkAKIAoQCgwKCAvkB9gH1AfQB8wHyAfEB8AHvAe0B6wHoAeMB4QHgAd8B3gHdAdwB2wHaAdkB2AHX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QEBAQEBAQEBAQEBAAEALQQAhAiADQQA2AhwgA0G3CzYCECADQQI2AgwgAyABQQFqNgIUDIEDCyADQS9qIQIDQCABIARGBEBBISECDIIDCwJAAkACQCABLQAAIgBBCWsOGAIAKioBKioqKioqKioqKioqKioqKioqAigLIAFBAWohASADQS9qLQAAQQFxRQ0LDBkLIAFBAWohAQwYCyABQQFqIQEgAi0AAEECcQ0AC0EAIQIgA0EANgIcIAMgATYCFCADQc4UNgIQIANBDDYCDAyAAwsgAUEBaiEBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADQEM0QILIANCADcDIAw8CyAAQRVGBEAgA0EkNgIcIAMgATYCFCADQYYaNgIQIANBFTYCDEEAIQIM/QILQQAhAiADQQA2AhwgAyABNgIUIANB4g02AhAgA0EUNgIMDPwCCyADKAIEIQBBACECIANBADYCBCADIAAgASAMp2oiARAxIgBFDSsgA0EHNgIcIAMgATYCFCADIAA2AgwM+wILIAMtAC5BwABxRQ0BC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAARQ0rIABBFUYEQCADQQo2AhwgAyABNgIUIANB8Rg2AhAgA0EVNgIMQQAhAgz6AgtBACECIANBADYCHCADIAE2AhQgA0GLDDYCECADQRM2AgwM+QILQQAhAiADQQA2AhwgAyABNgIUIANBsRQ2AhAgA0ECNgIMDPgCC0EAIQIgA0EANgIcIAMgATYCFCADQYwUNgIQIANBGTYCDAz3AgtBACECIANBADYCHCADIAE2AhQgA0HRHDYCECADQRk2AgwM9gILIABBFUYNPUEAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAz1AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQ0oIANBDTYCHCADIAE2AhQgAyAANgIMDPQCCyAAQRVGDTpBACECIANBADYCHCADIAE2AhQgA0GiDzYCECADQSI2AgwM8wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDIiAEUEQCABQQFqIQEMKAsgA0EONgIcIAMgADYCDCADIAFBAWo2AhQM8gILIABBFUYNN0EAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAzxAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQRAIAFBAWohAQwnCyADQQ82AhwgAyAANgIMIAMgAUEBajYCFAzwAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM7wILIABBFUYNM0EAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzuAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQ0lIANBETYCHCADIAE2AhQgAyAANgIMDO0CCyAAQRVGDTBBACECIANBADYCHCADIAE2AhQgA0HODDYCECADQSM2AgwM7AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEMJQsgA0ESNgIcIAMgADYCDCADIAFBAWo2AhQM6wILIANBL2otAABBAXFFDQELQRUhAgzPAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM6AILIABBO0cNACABQQFqIQEMDAtBACECIANBADYCHCADIAE2AhQgA0GYFzYCECADQQI2AgwM5gILIABBFUYNKEEAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzlAgsgA0EUNgIcIAMgATYCFCADIAA2AgwM5AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEM3AILIANBFTYCHCADIAA2AgwgAyABQQFqNgIUDOMCCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNoCCyADQRc2AhwgAyAANgIMIAMgAUEBajYCFAziAgsgAEEVRg0jQQAhAiADQQA2AhwgAyABNgIUIANBzgw2AhAgA0EjNgIMDOECCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDB0LIANBGTYCHCADIAA2AgwgAyABQQFqNgIUDOACCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNYCCyADQRo2AhwgAyAANgIMIAMgAUEBajYCFAzfAgsgAEEVRg0fQQAhAiADQQA2AhwgAyABNgIUIANBog82AhAgA0EiNgIMDN4CCyADKAIEIQBBACEC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DLMCCyABIARGBEBB6QEhAgyzAgsgAS0AAEHIAEYNASADQQE6ACgLQbYBIQIMlwILQcoBIQIMlgILIAEgBEcEQCADQQw2AgggAyABNgIEQckBIQIMlgILQegBIQIMrwILIAEgBEYEQEHnASECDK8CCyABLQAAQcgARw0EIAFBAWohAUHIASECDJQCCyABIARGBEBB5gEhAgyuAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQcYBIQIMlAILIAFBAWohAUHHASECDJMCC0HlASECIAEgBEYNrAIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB99MAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMrQILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgBFBEBB1AEhAgyTAgsgA0HkATYCHCADIAE2AhQgAyAANgIMQQAhAgysAgtB4wEhAiABIARGDasCIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQfXTAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADKwCCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB0B42AhAgA0EINgIMDKkCC0HFASECDI4CCyADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDKcCC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ1lIABBFUcEQCADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgynAgsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDKYCC0HhASECIAQgASIARg2lAiAEIAFrIAMoAgAiAWohBSAAIAFrQQRqIQYCQANAIAAtAAAgAUHw0wBqLQAARw0BIAFBBEYNAyABQQFqIQEgBCAAQQFqIgBHDQALIAMgBTYCAAymAgsgA0EANgIcIAMgADYCFCADQYQ3NgIQIANBCDYCDCADQQA2AgBBACECDKUCCyABIARHBEAgA0ENNgIIIAMgATYCBEHCASECDIsCC0HgASECDKQCCyADQQA2AgAgBkEBaiEBC0HDASECDIgCCyABIARGBEBB3wEhAgyiAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBwQEhAgyIAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYgCIANB3gE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAEgBEYEQEHdASECDKECCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYkCIANB3AE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILQcABIQIMhgILIAEgBEYEQEHbASECDKACC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDQIgA0HYATYCHCADIAE2AhQgAyAANgIMQQAhAgyiAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYsCIANB2QE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ2JAiADQdoBNgIcIAMgATYCFCADIAA2AgwMoAILQb8BIQIMhQILQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBnA02AhAgA0EhNgIMQQAhAgygAgtBvgEhAgyFAgsgA0HXATYCHCADIAE2AhQgA0HWGTYCECADQRU2AgxBACECDJ4CCyABIARGBEBB1wEhAgyeAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANB6xA2AhAgA0EJNgIMQQAhAgyeAgtBvQEhAgyDAgsgASAERgRAQdYBIQIM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LgsgAUEBaiEBQZcBIQIM2AELIAFBAWohAUEiDCsLIAEgBEYEQEGvASECDPEBCyABLQAAQdAARw0rIAFBAWohAUGWASECDNYBCyABIARGBEBBrgEhAgzwAQsCQAJAIAEtAABBxgBrDgsALCwsLCwsLCwsASwLIAFBAWohAUGUASECDNYBCyABQQFqIQFBlQEhAgzVAQtBrQEhAiABIARGDe4BIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazTAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO8BCyADQQA2AgAgBkEBaiEBQQ0MKAtBrAEhAiABIARGDe0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQeHTAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO4BCyADQQA2AgAgBkEBaiEBQQwMJwtBqwEhAiABIARGDewBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQarTAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO0BCyADQQA2AgAgBkEBaiEBQQMMJgtBqgEhAiABIARGDesBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQajTAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOwBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQakBIQIM6wELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBjwEhAgzRAQsgAUEBaiEBQZABIQIM0AELQagBIQIgASAERg3pASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm0wBqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzqAQsgA0EANgIAIAZBAWohAUEnDCMLQacBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk0wBqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEcDCILQaYBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGe0wBqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEGDCELQaUBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGZ0wBqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGkASECDOYBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQYQBIQIMzgELIAFBAWohAUGFASECDM0BCyABQQFqIQFBigEhAgzMAQsgAUEBaiEBQYsBIQIMywELQaMBIQIgASAERg3kASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGX0wBqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzlAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGiASECDOQBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGGASECDMoBCyABQQFqIQFBiQEhAgzJAQsgASAERgRAQaEBIQIM4wELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQYcBIQIMyQELIAFBAWohAUGIASECDMgBCyABIARGBEBBoAEhAgziAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GfASECIAEgBEYN4AEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBkdMAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4QELIANBADYCACAGQQFqIQFBHgwaC0GeASECIAEgBEYN3wEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBitMAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4AELIANBADYCACAGQQFqIQFBFQwZC0GdASECIAEgBEYN3gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBh9MAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3wELIANBADYCACAGQQFqIQFBFwwYC0GcASECIAEgBEYN3QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBgdMAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3gELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBmwEhAgzdAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYEBIQIMwwELIAFBAWohAUGCASECDMIBC0GaASECIAEgBEYN2wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5tMAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3AELIANBADYCACAGQQFqIQFBCQwVC0GZASECIAEgBEYN2gEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5NMAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2wELIANBADYCACAGQQFqIQFBHwwUC0GYASECIAEgBEYN2QEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB/tIAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2gELIANBADYCACAGQQFqIQFBAgwTC0GXASECIAEgBEYN2AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQfzSAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyABIARGBEBBlgEhAgzYAQtBASABLQAAQd8ARw0RGiABQQFqIQFB/QAhAgy9AQsgA0EANgIAIAZBAWohAUH+ACECDLwBC0GVASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBxNMAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBKQwPC0GUASECIAEgBEYN1AEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB+NIAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1QELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBkwEhAgzUAQsgAS0AAEHFAEcNDiABQQFqIQFB+gAhAgy5AQsgASAERgRAQZIBIQIM0wELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFB+AAhAgy5AQsgAUEBaiEBQfkAIQIMuAELQZEBIQIgASAERg3RASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHz0gBqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzSAQsgA0EANgIAIAZBAWohAUEjDAsLQZABIQIgASAERg3QASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHw0gBqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzRAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGPASECDNABCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQfMAIQIMtgELIAFBAWohAUH2ACECDLUBCyABIARGBEBBjgEhAgzPAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB9AAhAgy1AQsgAUEBaiEBQfUAIQIMtAELIAEgBEYEQEGNASECDM4BCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQYwBIQIgASAERg3MASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHs0gBqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzNAQsgA0EANgIAIAZBAWohAUEFDAYLQYsBIQIgASAERg3LASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHm0gBqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzMAQsgA0EANgIAIAZBAWohAUEWDAULQYoBIQIgASAERg3KASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHh0wBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzLAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGJASECDMoBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUHvACECDLABCyABQQFqIQFB8AAhAgyvAQtBiAEhAiABIARGDcgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQeDSAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMkBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGHASECDMcBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC0iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB6R42AhAgA0EGNgIMDMQBC0HuACECDKkBCyADQYYBNgIcIAMgATYCFCADIAA2AgxBACECDMIBC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgzBAQtB7QAhAgymAQsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDL8BCyABIARGBEBBhQEhAgy/AQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GGHjYCECADQQY2AgxBACECDL8BC0ECIQIMpAELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GEASECDL0BCyABIARGBEBBgwEhAgy9AQsCQCABLQAAQQlrDgRAAABAAAtB6wAhAgyiAQsgAy0AKUEFRgRAQewAIQIMogELQeoAIQIMoQELIAEgBEYEQEGCASECDLsBCyADQQ82AgggAyABNgIEDAoLIAEgBEYEQEGBASECDLoBCwJAIAEtAABBCWsOBD0AAD0AC0HpACECDJ8BCyABIARHBEAgA0EPNgIIIAMgATYCBEHnACECDJ8BC0GAASECDLgBCwJAIAEgBEcEQANAIAEtAABB4M4Aai0AACIAQQNHBEACQCAAQQFrDgI/AAQLQeYAIQIMoQELIAQgAUEBaiIBRw0AC0H+ACECDLkBC0H+ACECDLgBCyADQQA2AhwgAyABNgIUIANBxh82AhAgA0EHNgIMQQAhAgy3AQsgASAERgRAQf8AIQIMtwELAkACQAJAIAEtAABB4NAAai0AAEEBaw4DPAIAAQtB6AAhAgyeAQsgA0EANgIcIAMgATYCFCADQYYSNgIQIANBBzYCDEEAIQIMtwELQeAAIQIMnAELIAEgBEcEQCABQQFqIQFB5QAhAgycAQtB/QAhAgy1AQsgBCABIgBGBEBB/AAhAgy1AQsgAC0AACIBQS9GBEAgAEEBaiEBQeQAIQIMmwELIAFBCWsiAkEXSw0BIAAhAUEBIAJ0QZuAgARxDTcMAQsgBCABIgBGBEBB+wAhAgy0AQsgAC0AAEEvRw0AIABBAWohAQwDC0EAIQIgA0EANgIcIAMgADYCFCADQcYfNgIQIANBBzYCDAyyAQsCQAJAAkACQAJAA0AgAS0AAEHgzABqLQAAIgBBBUcEQAJAAkAgAEEBaw4IPQUGBwgABAEIC0HhACECDJ8BCyABQQFqIQFB4wAhAgyeAQsgBCABQQFqIgFHDQALQfoAIQIMtgELIAFBAWoMFAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgy0AQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyzAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyyAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMsQELIAEgBEYEQEH5ACECDLEBCwJAIAEtAABB4MwAai0AAEEBaw4INAQFBgAIAgMHCyABQQFqIQELQQMhAgyVAQsgAUEBagwNC0EAIQIgA0EANgIcIANBoxI2AhAgA0EHNgIMIAMgAUEBajYCFAytAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgysAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMqQELQeIAIQIMjgELIAEgBEYEQEH4ACECDKgBCyABQQFqDAILIAEgBEYEQEH3ACECDKcBCyABQQFqDAELIAEgBEYNASABQQFqCyEBQQQhAgyKAQtB9gAhAgyjAQsDQCABLQAAQeDKAGotAAAiAEECRwRAIABBAUcEQEHfACECDIsBCwwnCyAEIAFBAWoiAUcNAAtB9QAhAgyiAQsgASAERgRAQfQAIQIMogELAkAgAS0AAEEJaw43JQMGJQQGBgYGBgYGBgYGBgYGBgYGBgYFBgYCBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAYLIAFBAWoLIQFBBSECDIYBCyABQQFqDAYLIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMngELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMnQELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB8AA2AhwgAyABNgIUIAMgADYCDEEAIQIMnAELIANBADYCHCADIAE2AhQgA0G8EzYCECADQQc2AgxBACECDJsBCwJAAkACQAJAA0AgAS0AAEHgyABqLQAAIgBBBUcEQAJAIABBAWsOBiQDBAUGAAYLQd4AIQIMhgELIAQgAUEBaiIBRw0AC0HzACECDJ4BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQdsANgIcIAMgATYCFCADIAA2AgxBACECDJ0BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDJwBCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQfAANgIcIAMgATYCFCADIAA2AgxBACECDJsBCyADQQA2AhwgAyABNgIUIANB3Ag2AhAgA0EHNgIMQQAhAgyaAQsgASAERg0BIAFBAWoLIQFBBiECDH4LQfIAIQIMlwELAkACQAJAAkADQCABLQAAQeDGAGotAAAiAEEFRwRAIABBAWsOBB8CAwQFCyAEIAFBAWoiAUcNAAtB8QAhAgyaAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyZAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyYAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyXAQsgA0EANgIcIAMgATYCFCADQbQKNgIQIANBBzYCDEEAIQIMlgELQc4AIQIMewtB0AAhAgx6C0HdACECDHkLIAEgBEYEQEHwACECDJMBCwJAIAEtAABBCWsOBBYAABYACyABQQFqIQFB3AAhAgx4CyABIARGBEBB7wAhAgySAQsCQCABLQAAQQlrDgQVAAAVAAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUEQEHTASECDHgLIABBFUcEQCADQQA2AhwgAyABNgIUIANBwQ02AhAgA0EaNgIMQQAhAgySAQsgA0HuADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDJEBC0HtACECIAEgBEYNkAEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB18YAai0AAEcNBCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMkQELIANBADYCACAGQQFqIQEgAy0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACECIANBADYCHCADIAE2AhQgA0HlCTYCECADQQg2AgwMkAELQewAIQIgASAERg2PASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHUxgBqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyQAQsgA0EANgIAIAZBAWohASADLQApQSFGDQMgA0EANgIcIAMgATYCFCADQYkKNgIQIANBCDYCDEEAIQIMjwELQesAIQIgASAERg2OASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHQxgBqLQAARw0CIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyPAQsgA0EANgIAIAZBAWohASADLQApIgBBI0kNAiAAQS5GDQIgA0EANgIcIAMgATYCFCADQcEJNgIQIANBCDYCDEEAIQIMjgELIANBADYCAAtBACECIANBADYCHCADIAE2AhQgA0GENzYCECADQQg2AgwMjAELQdgAIQIMcQsgASAERwRAIANBDTYCCCADIAE2AgRB1wAhAgxxC0HqACECDIoBCyABIARGBEBB6QAhAgyKAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1gAhAgxwCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdCADQegANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyABIARGBEBB5wAhAgyJAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ11IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMiQELQdUAIQIMbgsgASAERgRAQeUAIQIMiAELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDIoBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdyADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdSADQeQANgIcIAMgATYCFCADIAA2AgwMiAELQdMAIQIMbQsgAy0AKUEiRg2AAUHSACECDGwLQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALIABFBEBB1AAhAgxsCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQZwNNgIQIANBITYCDEEAIQIMhgELIANB4QA2AhwgAyABNgIUIANB1hk2AhAgA0EVNgIMQQAhAgyFAQsgASAERgRAQeAAIQIMhQELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HRACECDGwLIANBADYCHCADIAE2AhQgA0GIETYCECADQQk2AgxBACECDIUBCyADQQA2AhwgAyABNgIUIANBiBE2AhAgA0EJNgIMQQAhAgyEAQsgASAERgRAQd8AIQIMhAELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBiBE2AhAgA0ECNgIMQQAhAgyDAQsgASAERgRAQd0AIQIMgwELIAEtAAAiAkENRgRAIAFBAWohAUHPACECDGkLIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyCAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0G1LDYCECADQQc2AgwMgAELIAEgBEYEQEHbACECDIABCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc0AIQIMZAsgASAERgRAQdoAIQIMfgsgAS0AAEEJaw4EAAEBAAELQQAhAiADQQA2AhwgA0HsETYCECADQQc2AgwgAyABQQFqNgIUDHwLIANBgBI7ASpBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNACAAQRVHDQEgA0HZADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDHsLQcwAIQIMYAsgA0EANgIcIAMgATYCFCADQcENNgIQIANBGjYCDEEAIQIMeQsgASAERgRAQdkAIQIMeQsgAS0AAEEgRw06IAFBAWohASADLQAuQQFxDTogA0EANgIcIAMgATYCFCADQa0bNgIQIANBHjYCDEEAIQIMeAsgASAERgRAQdgAIQIMeAsCQAJAAkACQAJAIAEtAAAiAEEKaw4EAgMD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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQTBrDjcVFAABAgMEBQYHFhYWFhYWFggJCgsMDRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QERITFgtCAiEKDBQLQgMhCgwTC0IEIQoMEgtCBSEKDBELQgYhCgwQC0IHIQoMDwtCCCEKDA4LQgkhCgwNC0IKIQoMDAtCCyEKDAsLQgwhCgwKC0INIQoMCQtCDiEKDAgLQg8hCgwHC0IKIQoMBgtCCyEKDAULQgwhCgwEC0INIQoMAwtCDiEKDAILQg8hCgwBC0IBIQoLIAFBAWohASADKQMgIgtC//////////8PWARAIAMgC0IEhiAKhDcDIAwCC0EAIQIgA0EANgIcIAMgATYCFCADQa0JNgIQIANBDDYCDAwfC0ElIQIMBAtBJiECDAMLIAMgAToALCADQQA2AgAgB0EBaiEBQQwhAgwCCyADQQA2AgAgBkEBaiEBQQohAgwBCyABQQFqIQFBCCECDAALAAtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMGAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMFwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMFgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMFQtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMFAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMEwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMEgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMEQtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMEAtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMDwtBACECIANBADYCHCADIAE2AhQgA0HIEjYCECADQQs2AgwMDgtBACECIANBADYCHCADIAE2AhQgA0GVCTYCECADQQs2AgwMDQtBACECIANBADYCHCADIAE2AhQgA0HpDzYCECADQQo2AgwMDAtBACECIANBADYCHCADIAE2AhQgA0GDEDYCECADQQo2AgwMCwtBACECIANBADYCHCADIAE2AhQgA0GmHDYCECADQQI2AgwMCgtBACECIANBADYCHCADIAE2AhQgA0HFFTYCECADQQI2AgwMCQtBACECIANBADYCHCADIAE2AhQgA0H/FzYCECADQQI2AgwMCAtBACECIANBADYCHCADIAE2AhQgA0HKFzYCECADQQI2AgwMBwsgA0ECNgIcIAMgATYCFCADQZQdNgIQIANBFjYCDEEAIQIMBgtB3gAhAiABIARGDQUgCUEIaiEHIAMoAgAhBQJAAkAgASAERwRAIAVBxsYAaiEIIAQgBWogAWshBiAFQX9zQQpqIgUgAWohAANAIAEtAAAgCC0AAEcEQEECIQgMAwsgBUUEQEEAIQggACEBDAMLIAVBAWshBSAIQQFqIQggBCABQQFqIgFHDQALIAYhBSAEIQELIAdBATYCACADIAU2AgAMAQsgA0EANgIAIAcgCDYCAAsgByABNgIEIAkoAgwhACAJKAIIDgMBBQIACwALIANBADYCHCADQa0dNgIQIANBFzYCDCADIABBAWo2AhRBACECDAMLIANBADYCHCADIAA2AhQgA0HCHTYCECADQQk2AgxBACECDAILIAEgBEYEQEEoIQIMAgsgA0EJNgIIIAMgATYCBEEnIQIMAQsgASAERgRAQQEhAgwBCwNAAkACQAJAIAEtAABBCmsOBAABAQABCyABQQFqIQEMAQsgAUEBaiEBIAMtAC5BIHENAEEAIQIgA0EANgIcIAMgATYCFCADQYwgNgIQIANBBTYCDAwCC0EBIQIgASAERw0ACwsgCUEQaiQAIAJFBEAgAygCDCEADAELIAMgAjYCHEEAIQAgAygCBCIBRQ0AIAMgASAEIAMoAggRAQAiAUUNACADIAQ2AhQgAyABNgIMIAEhAAsgAAu+AgECfyAAQQA6AAAgAEHcAGoiAUEBa0EAOgAAIABBADoAAiAAQQA6AAEgAUEDa0EAOgAAIAFBAmtBADoAACAAQQA6AAMgAUEEa0EAOgAAQQAgAGtBA3EiASAAaiIAQQA2AgBB3AAgAWtBfHEiAiAAaiIBQQRrQQA2AgACQCACQQlJDQAgAEEANgIIIABBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIAJBGUkNACAAQQA2AhggAEEANgIUIABBADYCECAAQQA2AgwgAUEQa0EANgIAIAFBFGtBADYCACABQRhrQQA2AgAgAUEca0EANgIAIAIgAEEEcUEYciICayIBQSBJDQAgACACaiEAA0AgAEIANwMYIABCADcDECAAQgA3AwggAEIANwMAIABBIGohACABQSBrIgFBH0sNAAsLC1YBAX8CQCAAKAIMDQACQAJAAkACQCAALQAxDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgAREAACIBDQMLQQAPCwALIABB0Bg2AhBBDiEBCyABCxoAIAAoAgxFBEAgAEHJHjYCECAAQRU2AgwLCxQAIAAoAgxBFUYEQCAAQQA2AgwLCxQAIAAoAgxBFkYEQCAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsXACAAQSRPBEAACyAAQQJ0QZQ3aigCAAsXACAAQS9PBEAACyAAQQJ0QaQ4aigCAAu/CQEBf0HfLCEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHkAGsO9ANjYgABYWFhYWFhAgMEBWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEGBwgJCgsMDQ4PYWFhYWEQYWFhYWFhYWFhYWERYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhEhMUFRYXGBkaG2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEcHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTZhNzg5OmFhYWFhYWFhO2FhYTxhYWFhPT4/YWFhYWFhYWFAYWFBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhQkNERUZHSElKS0xNTk9QUVJTYWFhYWFhYWFUVVZXWFlaW2FcXWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYV5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFfYGELQdUrDwtBgyUPC0G/MA8LQfI1DwtBtCgPC0GfKA8LQYEsDwtB1ioPC0H0Mw8LQa0zDwtByygPC0HOIw8LQcAjDwtB2SMPC0HRJA8LQZwzDwtBojYPC0H8Mw8LQeArDwtB4SUPC0HtIA8LQcQyDwtBqScPC0G5Ng8LQbggDwtBqyAPC0GjJA8LQbYkDwtBgSMPC0HhMg8LQZ80DwtByCkPC0HAMg8LQe4yDwtB8C8PC0HGNA8LQdAhDwtBmiQPC0HrLw8LQYQ1DwtByzUPC0GWMQ8LQcgrDwtB1C8PC0GTMA8LQd81DwtBtCMPC0G+NQ8LQdIpDwtBsyIPC0HNIA8LQZs2DwtBkCEPC0H/IA8LQa01DwtBsDQPC0HxJA8LQacqDwtB3TAPC0GLIg8LQcgvDwtB6yoPC0H0KQ8LQY8lDwtB3SIPC0HsJg8LQf0wDwtB1iYPC0GUNQ8LQY0jDwtBuikPC0HHIg8LQfIlDwtBtjMPC0GiIQ8LQf8vDwtBwCEPC0GBMw8LQcklDwtBqDEPC0HGMw8LQdM2DwtBxjYPC0HkNA8LQYgmDwtB7ScPC0H4IQ8LQakwDwtBjzQPC0GGNg8LQaovDwtBoSYPC0HsNg8LQZIpDwtBryYPC0GZIg8LQeAhDwsAC0G1JSEBCyABCxcAIAAgAC8BLkH+/wNxIAFBAEdyOwEuCxoAIAAgAC8BLkH9/wNxIAFBAEdBAXRyOwEuCxoAIAAgAC8BLkH7/wNxIAFBAEdBAnRyOwEuCxoAIAAgAC8BLkH3/wNxIAFBAEdBA3RyOwEuCxoAIAAgAC8BLkHv/wNxIAFBAEdBBHRyOwEuCxoAIAAgAC8BLkHf/wNxIAFBAEdBBXRyOwEuCxoAIAAgAC8BLkG//wNxIAFBAEdBBnRyOwEuCxoAIAAgAC8BLkH//gNxIAFBAEdBB3RyOwEuCxoAIAAgAC8BLkH//QNxIAFBAEdBCHRyOwEuCxoAIAAgAC8BLkH/+wNxIAFBAEdBCXRyOwEuCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBzhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB5Ao2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB5R02AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBnRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBoh42AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7hQ2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9xs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRU2AhBBGCEECyAECzgAIAACfyAALwEyQRRxQRRGBEBBASAALQAoQQFGDQEaIAAvATRB5QBGDAELIAAtAClBBUYLOgAwC1kBAn8CQCAALQAoQQFGDQAgAC8BNCIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMiIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEyIgFBAnFFDQEMAgsgAC8BMiIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATQiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtzACAAQRBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQTBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQSBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQewBNgIcCwYAIAAQOQuaLQELfyMAQRBrIgokAEGY1AAoAgAiCUUEQEHY1wAoAgAiBUUEQEHk1wBCfzcCAEHc1wBCgICEgICAwAA3AgBB2NcAIApBCGpBcHFB2KrVqgVzIgU2AgBB7NcAQQA2AgBBvNcAQQA2AgALQcDXAEGA2AQ2AgBBkNQAQYDYBDYCAEGk1AAgBTYCAEGg1ABBfzYCAEHE1wBBgKgDNgIAA0AgAUG81ABqIAFBsNQAaiICNgIAIAIgAUGo1ABqIgM2AgAgAUG01ABqIAM2AgAgAUHE1ABqIAFBuNQAaiIDNgIAIAMgAjYCACABQczUAGogAUHA1ABqIgI2AgAgAiADNgIAIAFByNQAaiACNgIAIAFBIGoiAUGAAkcNAAtBjNgEQcGnAzYCAEGc1ABB6NcAKAIANgIAQYzUAEHApwM2AgBBmNQAQYjYBDYCAEHM/wdBODYCAEGI2AQhCQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBTQRAQYDUACgCACIGQRAgAEETakFwcSAAQQtJGyIEQQN2IgB2IgFBA3EEQAJAIAFBAXEgAHJBAXMiAkEDdCIAQajUAGoiASAAQbDUAGooAgAiACgCCCIDRgRAQYDUACAGQX4gAndxNgIADAELIAEgAzYCCCADIAE2AgwLIABBCGohASAAIAJBA3QiAkEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwRC0GI1AAoAgAiCCAETw0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAEEDdCICQajUAGoiASACQbDUAGooAgAiAigCCCIDRgRAQYDUACAGQX4gAHdxIgY2AgAMAQsgASADNgIIIAMgATYCDAsgAiAEQQNyNgIEIABBA3QiACAEayEFIAAgAmogBTYCACACIARqIgQgBUEBcjYCBCAIBEAgCEF4cUGo1ABqIQBBlNQAKAIAIQMCf0EBIAhBA3Z0IgEgBnFFBEBBgNQAIAEgBnI2AgAgAAwBCyAAKAIICyIBIAM2AgwgACADNgIIIAMgADYCDCADIAE2AggLIAJBCGohAUGU1AAgBDYCAEGI1AAgBTYCAAwRC0GE1AAoAgAiC0UNASALaEECdEGw1gBqKAIAIgAoAgRBeHEgBGshBSAAIQIDQAJAIAIoAhAiAUUEQCACQRRqKAIAIgFFDQELIAEoAgRBeHEgBGsiAyAFSSECIAMgBSACGyEFIAEgACACGyEAIAEhAgwBCwsgACgCGCEJIAAoAgwiAyAARwRAQZDUACgCABogAyAAKAIIIgE2AgggASADNgIMDBALIABBFGoiAigCACIBRQRAIAAoAhAiAUUNAyAAQRBqIQILA0AgAiEHIAEiA0EUaiICKAIAIgENACADQRBqIQIgAygCECIBDQALIAdBADYCAAwPC0F/IQQgAEG/f0sNACAAQRNqIgFBcHEhBEGE1AAoAgAiCEUNAEEAIARrIQUCQAJAAkACf0EAIARBgAJJDQAaQR8gBEH///8HSw0AGiAEQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qCyIGQQJ0QbDWAGooAgAiAkUEQEEAIQFBACEDDAELQQAhASAEQRkgBkEBdmtBACAGQR9HG3QhAEEAIQMDQAJAIAIoAgRBeHEgBGsiByAFTw0AIAIhAyAHIgUNAEEAIQUgAiEBDAMLIAEgAkEUaigCACIHIAcgAiAAQR12QQRxakEQaigCACICRhsgASAHGyEBIABBAXQhACACDQALCyABIANyRQRAQQAhA0ECIAZ0IgBBACAAa3IgCHEiAEUNAyAAaEECdEGw1gBqKAIAIQELIAFFDQELA0AgASgCBEF4cSAEayICIAVJIQAgAiAFIAAbIQUgASADIAAbIQMgASgCECIABH8gAAUgAUEUaigCAAsiAQ0ACwsgA0UNACAFQYjUACgCACAEa08NACADKAIYIQcgAyADKAIMIgBHBEBBkNQAKAIAGiAAIAMoAggiATYCCCABIAA2AgwMDgsgA0EUaiICKAIAIgFFBEAgAygCECIBRQ0DIANBEGohAgsDQCACIQYgASIAQRRqIgIoAgAiAQ0AIABBEGohAiAAKAIQIgENAAsgBkEANgIADA0LQYjUACgCACIDIARPBEBBlNQAKAIAIQECQCADIARrIgJBEE8EQCABIARqIgAgAkEBcjYCBCABIANqIAI2AgAgASAEQQNyNgIEDAELIAEgA0EDcjYCBCABIANqIgAgACgCBEEBcjYCBEEAIQBBACECC0GI1AAgAjYCAEGU1AAgADYCACABQQhqIQEMDwtBjNQAKAIAIgMgBEsEQCAEIAlqIgAgAyAEayIBQQFyNgIEQZjUACAANgIAQYzUACABNgIAIAkgBEEDcjYCBCAJQQhqIQEMDwtBACEBIAQCf0HY1wAoAgAEQEHg1wAoAgAMAQtB5NcAQn83AgBB3NcAQoCAhICAgMAANwIAQdjXACAKQQxqQXBxQdiq1aoFczYCAEHs1wBBADYCAEG81wBBADYCAEGAgAQLIgAgBEHHAGoiBWoiBkEAIABrIgdxIgJPBEBB8NcAQTA2AgAMDwsCQEG41wAoAgAiAUUNAEGw1wAoAgAiCCACaiEAIAAgAU0gACAIS3ENAEEAIQFB8NcAQTA2AgAMDwtBvNcALQAAQQRxDQQCQAJAIAkEQEHA1wAhAQNAIAEoAgAiACAJTQRAIAAgASgCBGogCUsNAwsgASgCCCIBDQALC0EAEDoiAEF/Rg0FIAIhBkHc1wAoAgAiAUEBayIDIABxBEAgAiAAayAAIANqQQAgAWtxaiEGCyAEIAZPDQUgBkH+////B0sNBUG41wAoAgAiAwRAQbDXACgCACIHIAZqIQEgASAHTQ0GIAEgA0sNBgsgBhA6IgEgAEcNAQwHCyAGIANrIAdxIgZB/v///wdLDQQgBhA6IQAgACABKAIAIAEoAgRqRg0DIAAhAQsCQCAGIARByABqTw0AIAFBf0YNAEHg1wAoAgAiACAFIAZrakEAIABrcSIAQf7///8HSwRAIAEhAAwHCyAAEDpBf0cEQCAAIAZqIQYgASEADAcLQQAgBmsQOhoMBAsgASIAQX9HDQUMAwtBACEDDAwLQQAhAAwKCyAAQX9HDQILQbzXAEG81wAoAgBBBHI2AgALIAJB/v///wdLDQEgAhA6IQBBABA6IQEgAEF/Rg0BIAFBf0YNASAAIAFPDQEgASAAayIGIARBOGpNDQELQbDXAEGw1wAoAgAgBmoiATYCAEG01wAoAgAgAUkEQEG01wAgATYCAAsCQAJAAkBBmNQAKAIAIgIEQEHA1wAhAQNAIAAgASgCACIDIAEoAgQiBWpGDQIgASgCCCIBDQALDAILQZDUACgCACIBQQBHIAAgAU9xRQRAQZDUACAANgIAC0EAIQFBxNcAIAY2AgBBwNcAIAA2AgBBoNQAQX82AgBBpNQAQdjXACgCADYCAEHM1wBBADYCAANAIAFBvNQAaiABQbDUAGoiAjYCACACIAFBqNQAaiIDNgIAIAFBtNQAaiADNgIAIAFBxNQAaiABQbjUAGoiAzYCACADIAI2AgAgAUHM1ABqIAFBwNQAaiICNgIAIAIgAzYCACABQcjUAGogAjYCACABQSBqIgFBgAJHDQALQXggAGtBD3EiASAAaiICIAZBOGsiAyABayIBQQFyNgIEQZzUAEHo1wAoAgA2AgBBjNQAIAE2AgBBmNQAIAI2AgAgACADakE4NgIEDAILIAAgAk0NACACIANJDQAgASgCDEEIcQ0AQXggAmtBD3EiACACaiIDQYzUACgCACAGaiIHIABrIgBBAXI2AgQgASAFIAZqNgIEQZzUAEHo1wAoAgA2AgBBjNQAIAA2AgBBmNQAIAM2AgAgAiAHakE4NgIEDAELIABBkNQAKAIASQRAQZDUACAANgIACyAAIAZqIQNBwNcAIQECQAJAAkADQCADIAEoAgBHBEAgASgCCCIBDQEMAgsLIAEtAAxBCHFFDQELQcDXACEBA0AgASgCACIDIAJNBEAgAyABKAIEaiIFIAJLDQMLIAEoAgghAQwACwALIAEgADYCACABIAEoAgQgBmo2AgQgAEF4IABrQQ9xaiIJIARBA3I2AgQgA0F4IANrQQ9xaiIGIAQgCWoiBGshASACIAZGBEBBmNQAIAQ2AgBBjNQAQYzUACgCACABaiIANgIAIAQgAEEBcjYCBAwIC0GU1AAoAgAgBkYEQEGU1AAgBDYCAEGI1ABBiNQAKAIAIAFqIgA2AgAgBCAAQQFyNgIEIAAgBGogADYCAAwICyAGKAIEIgVBA3FBAUcNBiAFQXhxIQggBUH/AU0EQCAFQQN2IQMgBigCCCIAIAYoAgwiAkYEQEGA1ABBgNQAKAIAQX4gA3dxNgIADAcLIAIgADYCCCAAIAI2AgwMBgsgBigCGCEHIAYgBigCDCIARwRAIAAgBigCCCICNgIIIAIgADYCDAwFCyAGQRRqIgIoAgAiBUUEQCAGKAIQIgVFDQQgBkEQaiECCwNAIAIhAyAFIgBBFGoiAigCACIFDQAgAEEQaiECIAAoAhAiBQ0ACyADQQA2AgAMBAtBeCAAa0EPcSIBIABqIgcgBkE4ayIDIAFrIgFBAXI2AgQgACADakE4NgIEIAIgBUE3IAVrQQ9xakE/ayIDIAMgAkEQakkbIgNBIzYCBEGc1ABB6NcAKAIANgIAQYzUACABNgIAQZjUACAHNgIAIANBEGpByNcAKQIANwIAIANBwNcAKQIANwIIQcjXACADQQhqNgIAQcTXACAGNgIAQcDXACAANgIAQczXAEEANgIAIANBJGohAQNAIAFBBzYCACAFIAFBBGoiAUsNAAsgAiADRg0AIAMgAygCBEF+cTYCBCADIAMgAmsiBTYCACACIAVBAXI2AgQgBUH/AU0EQCAFQXhxQajUAGohAAJ/QYDUACgCACIBQQEgBUEDdnQiA3FFBEBBgNQAIAEgA3I2AgAgAAwBCyAAKAIICyIBIAI2AgwgACACNgIIIAIgADYCDCACIAE2AggMAQtBHyEBIAVB////B00EQCAFQSYgBUEIdmciAGt2QQFxIABBAXRrQT5qIQELIAIgATYCHCACQgA3AhAgAUECdEGw1gBqIQBBhNQAKAIAIgNBASABdCIGcUUEQCAAIAI2AgBBhNQAIAMgBnI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEDAkADQCADIgAoAgRBeHEgBUYNASABQR12IQMgAUEBdCEBIAAgA0EEcWpBEGoiBigCACIDDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLQYzUACgCACIBIARNDQBBmNQAKAIAIgAgBGoiAiABIARrIgFBAXI2AgRBjNQAIAE2AgBBmNQAIAI2AgAgACAEQQNyNgIEIABBCGohAQwIC0EAIQFB8NcAQTA2AgAMBwtBACEACyAHRQ0AAkAgBigCHCICQQJ0QbDWAGoiAygCACAGRgRAIAMgADYCACAADQFBhNQAQYTUACgCAEF+IAJ3cTYCAAwCCyAHQRBBFCAHKAIQIAZGG2ogADYCACAARQ0BCyAAIAc2AhggBigCECICBEAgACACNgIQIAIgADYCGAsgBkEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgCGohASAGIAhqIgYoAgQhBQsgBiAFQX5xNgIEIAEgBGogATYCACAEIAFBAXI2AgQgAUH/AU0EQCABQXhxQajUAGohAAJ/QYDUACgCACICQQEgAUEDdnQiAXFFBEBBgNQAIAEgAnI2AgAgAAwBCyAAKAIICyIBIAQ2AgwgACAENgIIIAQgADYCDCAEIAE2AggMAQtBHyEFIAFB////B00EQCABQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQULIAQgBTYCHCAEQgA3AhAgBUECdEGw1gBqIQBBhNQAKAIAIgJBASAFdCIDcUUEQCAAIAQ2AgBBhNQAIAIgA3I2AgAgBCAANgIYIAQgBDYCCCAEIAQ2AgwMAQsgAUEZIAVBAXZrQQAgBUEfRxt0IQUgACgCACEAAkADQCAAIgIoAgRBeHEgAUYNASAFQR12IQAgBUEBdCEFIAIgAEEEcWpBEGoiAygCACIADQALIAMgBDYCACAEIAI2AhggBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAlBCGohAQwCCwJAIAdFDQACQCADKAIcIgFBAnRBsNYAaiICKAIAIANGBEAgAiAANgIAIAANAUGE1AAgCEF+IAF3cSIINgIADAILIAdBEEEUIAcoAhAgA0YbaiAANgIAIABFDQELIAAgBzYCGCADKAIQIgEEQCAAIAE2AhAgASAANgIYCyADQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsCQCAFQQ9NBEAgAyAEIAVqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQMAQsgAyAEaiICIAVBAXI2AgQgAyAEQQNyNgIEIAIgBWogBTYCACAFQf8BTQRAIAVBeHFBqNQAaiEAAn9BgNQAKAIAIgFBASAFQQN2dCIFcUUEQEGA1AAgASAFcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbDWAGohAEEBIAF0IgQgCHFFBEAgACACNgIAQYTUACAEIAhyNgIAIAIgADYCGCACIAI2AgggAiACNgIMDAELIAVBGSABQQF2a0EAIAFBH0cbdCEBIAAoAgAhBAJAA0AgBCIAKAIEQXhxIAVGDQEgAUEddiEEIAFBAXQhASAAIARBBHFqQRBqIgYoAgAiBA0ACyAGIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAQsgACgCCCIBIAI2AgwgACACNgIIIAJBADYCGCACIAA2AgwgAiABNgIICyADQQhqIQEMAQsCQCAJRQ0AAkAgACgCHCIBQQJ0QbDWAGoiAigCACAARgRAIAIgAzYCACADDQFBhNQAIAtBfiABd3E2AgAMAgsgCUEQQRQgCSgCECAARhtqIAM2AgAgA0UNAQsgAyAJNgIYIAAoAhAiAQRAIAMgATYCECABIAM2AhgLIABBFGooAgAiAUUNACADQRRqIAE2AgAgASADNgIYCwJAIAVBD00EQCAAIAQgBWoiAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBCyAAIARqIgcgBUEBcjYCBCAAIARBA3I2AgQgBSAHaiAFNgIAIAgEQCAIQXhxQajUAGohAUGU1AAoAgAhAwJ/QQEgCEEDdnQiAiAGcUUEQEGA1AAgAiAGcjYCACABDAELIAEoAggLIgIgAzYCDCABIAM2AgggAyABNgIMIAMgAjYCCAtBlNQAIAc2AgBBiNQAIAU2AgALIABBCGohAQsgCkEQaiQAIAELQwAgAEUEQD8AQRB0DwsCQCAAQf//A3ENACAAQQBIDQAgAEEQdkAAIgBBf0YEQEHw1wBBMDYCAEF/DwsgAEEQdA8LAAsL20AiAEGACAsJAQAAAAIAAAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4IxSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMARXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVycwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGhlYWRlciB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBxdW90ZWQtcGFpciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgcmVzcG9uc2UgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGV4dGVuc2lvbiBuYW1lAEludmFsaWQgc3RhdHVzIGNvZGUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBkYXRhAEV4cGVjdGVkIExGIGFmdGVyIGNodW5rIGRhdGEAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAERhdGEgYWZ0ZXIgYENvbm5lY3Rpb246IGNsb3NlYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAUVVFUlkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBFeHBlY3RlZCBMRiBhZnRlciBDUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAFIVAAAaFQAADxIAAOQZAACRFQAACRQAAC0ZAADkFAAA6REAAGkUAAChFAAAdhUAAEMWAABeEgAAlBcAABcWAAB9FAAAfxYAAEEXAACzEwAAwxYAAAQaAAC9GAAA0BgAAKATAADUGQAArxYAAGgWAABwFwAA2RYAAPwYAAD+EQAAWRcAAJcWAAAcFwAA9hYAAI0XAAALEgAAfxsAAC4RAACzEAAASRIAAK0SAAD2GAAAaBAAAGIVAAAQFQAAWhYAAEoZAAC1FQAAwRUAAGAVAABcGQAAWhkAAFMZAAAWFQAArREAAEIQAAC3EAAAVxgAAL8VAACJEAAAHBkAABoZAAC5FQAAURgAANwTAABbFQAAWRUAAOYYAABnFQAAERkAAO0YAADnEwAArhAAAMIXAAAAFAAAkhMAAIQTAABAEgAAJhkAAK8VAABiEABB6TkLAQEAQYA6C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQeo7CwQBAAACAEGBPAteAwQDAwMDAwAAAwMAAwMAAwMDAwMDAwMDAwAFAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMAAwBB6j0LBAEAAAIAQYE+C14DAAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAQABQAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEHgPwsNbG9zZWVlcC1hbGl2ZQBB+T8LAQEAQZDAAAvgAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5wQALAQEAQZDCAAvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBocQAC14BAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGAxgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBsMYACytyYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNClNNDQoNClRUUC9DRS9UU1AvAEHpxgALBQECAAEDAEGAxwALXwQFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAEHpyAALBQECAAEDAEGAyQALXwQFBQYFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAEHpygALBAEAAAEAQYHLAAteAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgBB6cwACwUBAgABAwBBgM0AC18EBQAABQUFBQUFBQUFBQUGBQUFBQUFBQUFBQUFAAUABwgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUABQAFAAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAAAABQBB6c4ACwUBAQABAQBBgM8ACwEBAEGazwALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEHp0AALBQEBAAEBAEGA0QALAQEAQYrRAAsGAgAAAAACAEGh0QALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQeDSAAuaAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VVRVJZT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=";
+ var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
var wasmBuffer;
Object.defineProperty(module2, "exports", {
get: () => {
@@ -24213,13 +24427,12 @@ var require_data_url = __commonJS({
}
});
-// node_modules/undici/lib/web/fetch/webidl.js
+// node_modules/undici/lib/web/webidl/index.js
var require_webidl2 = __commonJS({
- "node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
+ "node_modules/undici/lib/web/webidl/index.js"(exports2, module2) {
"use strict";
var { types, inspect } = require("node:util");
var { markAsUncloneable } = require("node:worker_threads");
- var { toUSVString } = require_util8();
var UNDEFINED = 1;
var BOOLEAN = 2;
var STRING = 3;
@@ -24238,11 +24451,11 @@ var require_webidl2 = __commonJS({
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(", ")}.`;
+ webidl.errors.conversionFailed = function(opts) {
+ const plural = opts.types.length === 1 ? "" : " one of";
+ const message = `${opts.argument} could not be converted to${plural}: ${opts.types.join(", ")}.`;
return webidl.errors.exception({
- header: context.prefix,
+ header: opts.prefix,
message
});
};
@@ -24341,7 +24554,7 @@ var require_webidl2 = __commonJS({
};
webidl.util.markAsUncloneable = markAsUncloneable || (() => {
});
- webidl.util.ConvertToInt = function(V, bitLength, signedness, opts) {
+ webidl.util.ConvertToInt = function(V, bitLength, signedness, flags) {
let upperBound;
let lowerBound;
if (bitLength === 64) {
@@ -24362,7 +24575,7 @@ var require_webidl2 = __commonJS({
if (x === 0) {
x = 0;
}
- if (opts?.enforceRange === true) {
+ if (webidl.util.HasFlag(flags, webidl.attributes.EnforceRange)) {
if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
throw webidl.errors.exception({
header: "Integer conversion",
@@ -24378,7 +24591,7 @@ var require_webidl2 = __commonJS({
}
return x;
}
- if (!Number.isNaN(x) && opts?.clamp === true) {
+ if (!Number.isNaN(x) && webidl.util.HasFlag(flags, webidl.attributes.Clamp)) {
x = Math.min(Math.max(x, lowerBound), upperBound);
if (Math.floor(x) % 2 === 0) {
x = Math.floor(x);
@@ -24413,10 +24626,27 @@ var require_webidl2 = __commonJS({
return inspect(V);
case STRING:
return `"${V}"`;
+ case BIGINT:
+ return `${V}n`;
default:
return `${V}`;
}
};
+ webidl.util.IsResizableArrayBuffer = function(V) {
+ if (types.isArrayBuffer(V)) {
+ return V.resizable;
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ return V.growable;
+ }
+ throw webidl.errors.exception({
+ header: "IsResizableArrayBuffer",
+ message: `"${webidl.util.Stringify(V)}" is not an array buffer.`
+ });
+ };
+ webidl.util.HasFlag = function(flags, attributes) {
+ return typeof flags === "number" && (flags & attributes) === attributes;
+ };
webidl.sequenceConverter = function(converter) {
return (V, prefix, argument, Iterable) => {
if (webidl.util.Type(V) !== OBJECT) {
@@ -24532,15 +24762,21 @@ var require_webidl2 = __commonJS({
return converter(V, prefix, argument);
};
};
+ webidl.is.USVString = function(value) {
+ return typeof value === "string" && value.isWellFormed();
+ };
webidl.is.ReadableStream = webidl.util.MakeTypeAssertion(ReadableStream);
webidl.is.Blob = webidl.util.MakeTypeAssertion(Blob);
webidl.is.URLSearchParams = webidl.util.MakeTypeAssertion(URLSearchParams);
- webidl.is.File = webidl.util.MakeTypeAssertion(globalThis.File ?? require("node:buffer").File);
+ webidl.is.File = webidl.util.MakeTypeAssertion(File);
webidl.is.URL = webidl.util.MakeTypeAssertion(URL);
webidl.is.AbortSignal = webidl.util.MakeTypeAssertion(AbortSignal);
webidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort);
- webidl.converters.DOMString = function(V, prefix, argument, opts) {
- if (V === null && opts?.legacyNullToEmptyString) {
+ webidl.is.BufferSource = function(V) {
+ return types.isArrayBuffer(V) || ArrayBuffer.isView(V) && types.isArrayBuffer(V.buffer);
+ };
+ webidl.converters.DOMString = function(V, prefix, argument, flags) {
+ if (V === null && webidl.util.HasFlag(flags, webidl.attributes.LegacyNullToEmptyString)) {
return "";
}
if (typeof V === "symbol") {
@@ -24568,7 +24804,12 @@ var require_webidl2 = __commonJS({
}
return x;
};
- webidl.converters.USVString = toUSVString;
+ webidl.converters.USVString = function(value) {
+ if (typeof value === "string") {
+ return value.toWellFormed();
+ }
+ return `${value}`.toWellFormed();
+ };
webidl.converters.boolean = function(V) {
const x = Boolean(V);
return x;
@@ -24577,86 +24818,156 @@ var require_webidl2 = __commonJS({
return V;
};
webidl.converters["long long"] = function(V, prefix, argument) {
- const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument);
+ const x = webidl.util.ConvertToInt(V, 64, "signed", 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);
+ const x = webidl.util.ConvertToInt(V, 64, "unsigned", 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);
+ const x = webidl.util.ConvertToInt(V, 32, "unsigned", 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);
+ webidl.converters["unsigned short"] = function(V, prefix, argument, flags) {
+ const x = webidl.util.ConvertToInt(V, 16, "unsigned", flags, prefix, argument);
return x;
};
- webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) {
- if (webidl.util.Type(V) !== OBJECT || !types.isAnyArrayBuffer(V)) {
+ webidl.converters.ArrayBuffer = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isArrayBuffer(V)) {
throw webidl.errors.conversionFailed({
prefix,
argument: `${argument} ("${webidl.util.Stringify(V)}")`,
types: ["ArrayBuffer"]
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a resizable ArrayBuffer.`
});
}
- if (V.resizable || V.growable) {
+ return V;
+ };
+ webidl.converters.SharedArrayBuffer = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isSharedArrayBuffer(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["SharedArrayBuffer"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a resizable SharedArrayBuffer.`
});
}
return V;
};
- webidl.converters.TypedArray = function(V, T, prefix, name, opts) {
+ webidl.converters.TypedArray = function(V, T, prefix, argument, flags) {
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)}")`,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
types: [T.name]
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a view on a shared array buffer.`
});
}
- if (V.buffer.resizable || V.buffer.growable) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
return V;
};
- webidl.converters.DataView = function(V, prefix, name, opts) {
+ webidl.converters.DataView = function(V, prefix, argument, flags) {
if (webidl.util.Type(V) !== OBJECT || !types.isDataView(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["DataView"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
header: prefix,
- message: `${name} is not a DataView.`
+ message: `${argument} cannot be a view on a shared array buffer.`
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
- if (V.buffer.resizable || V.buffer.growable) {
+ return V;
+ };
+ webidl.converters.ArrayBufferView = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isArrayBufferView(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBufferView"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a view on a shared array buffer.`
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
+ throw webidl.errors.exception({
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
return V;
};
+ webidl.converters.BufferSource = function(V, prefix, argument, flags) {
+ if (types.isArrayBuffer(V)) {
+ return webidl.converters.ArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isArrayBufferView(V)) {
+ flags &= ~webidl.attributes.AllowShared;
+ return webidl.converters.ArrayBufferView(V, prefix, argument, flags);
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ throw webidl.errors.exception({
+ header: prefix,
+ message: `${argument} cannot be a SharedArrayBuffer.`
+ });
+ }
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBuffer", "ArrayBufferView"]
+ });
+ };
+ webidl.converters.AllowSharedBufferSource = function(V, prefix, argument, flags) {
+ if (types.isArrayBuffer(V)) {
+ return webidl.converters.ArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ return webidl.converters.SharedArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isArrayBufferView(V)) {
+ flags |= webidl.attributes.AllowShared;
+ return webidl.converters.ArrayBufferView(V, prefix, argument, flags);
+ }
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBuffer", "SharedArrayBuffer", "ArrayBufferView"]
+ });
+ };
webidl.converters["sequence"] = webidl.sequenceConverter(
webidl.converters.ByteString
);
@@ -24672,6 +24983,23 @@ var require_webidl2 = __commonJS({
webidl.is.AbortSignal,
"AbortSignal"
);
+ webidl.converters.EventHandlerNonNull = function(V) {
+ if (webidl.util.Type(V) !== OBJECT) {
+ return null;
+ }
+ if (typeof V === "function") {
+ return V;
+ }
+ return () => {
+ };
+ };
+ webidl.attributes = {
+ Clamp: 1 << 0,
+ EnforceRange: 1 << 1,
+ AllowShared: 1 << 2,
+ AllowResizable: 1 << 3,
+ LegacyNullToEmptyString: 1 << 4
+ };
module2.exports = {
webidl
};
@@ -24692,14 +25020,6 @@ var require_util9 = __commonJS({
var assert = require("node:assert");
var { isUint8Array } = require("node:util/types");
var { webidl } = require_webidl2();
- var supportedHashes = [];
- var crypto;
- try {
- 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;
@@ -24936,7 +25256,7 @@ var require_util9 = __commonJS({
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
- return referrerOrigin;
+ return referrerURL;
}
}
}
@@ -24955,16 +25275,16 @@ var require_util9 = __commonJS({
}
return url;
}
- var potentialleTrustworthyIPv4RegExp = new RegExp("^(?:(?:127\\.)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){2}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]))$");
- var potentialleTrustworthyIPv6RegExp = new RegExp("^(?:(?:(?:0{1,4}):){7}(?:(?:0{0,3}1))|(?:(?:0{1,4}):){1,6}(?::(?:0{0,3}1))|(?:::(?:0{0,3}1))|)$");
+ var isPotentialleTrustworthyIPv4 = RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/);
+ var isPotentiallyTrustworthyIPv6 = RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);
function isOriginIPPotentiallyTrustworthy(origin) {
if (origin.includes(":")) {
if (origin[0] === "[" && origin[origin.length - 1] === "]") {
origin = origin.slice(1, -1);
}
- return potentialleTrustworthyIPv6RegExp.test(origin);
+ return isPotentiallyTrustworthyIPv6(origin);
}
- return potentialleTrustworthyIPv4RegExp.test(origin);
+ return isPotentialleTrustworthyIPv4(origin);
}
function isOriginPotentiallyTrustworthy(origin) {
if (origin == null || origin === "null") {
@@ -24999,101 +25319,6 @@ var require_util9 = __commonJS({
if (url.protocol === "blob:") return true;
return isOriginPotentiallyTrustworthy(url.origin);
}
- 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 {
- 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 token of metadata.split(" ")) {
- empty = false;
- const parsedToken = parseHashWithOptions.exec(token);
- 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(request7) {
}
function sameOrigin(A, B) {
@@ -25105,15 +25330,6 @@ var require_util9 = __commonJS({
}
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";
}
@@ -25261,14 +25477,12 @@ var require_util9 = __commonJS({
function fullyReadBody(body, processBody, processBodyError) {
const successSteps = processBody;
const errorSteps = processBodyError;
- let reader;
try {
- reader = body.stream.getReader();
+ const reader = body.stream.getReader();
+ readAllBytes(reader, successSteps, errorSteps);
} catch (e) {
errorSteps(e);
- return;
}
- readAllBytes(reader, successSteps, errorSteps);
}
function readableStreamClose(controller) {
try {
@@ -25286,9 +25500,9 @@ var require_util9 = __commonJS({
return input;
}
async function readAllBytes(reader, successSteps, failureSteps) {
- const bytes = [];
- let byteLength = 0;
try {
+ const bytes = [];
+ let byteLength = 0;
do {
const { done, value: chunk } = await reader.read();
if (done) {
@@ -25296,7 +25510,7 @@ var require_util9 = __commonJS({
return;
}
if (!isUint8Array(chunk)) {
- failureSteps(TypeError("Received non-Uint8Array chunk"));
+ failureSteps(new TypeError("Received non-Uint8Array chunk"));
return;
}
bytes.push(chunk);
@@ -25525,7 +25739,6 @@ var require_util9 = __commonJS({
isAborted,
isCancelled,
isValidEncodedURL,
- createDeferredPromise,
ReadableStreamFrom,
tryUpgradeRequestToAPotentiallyTrustworthyURL,
clampAndCoarsenConnectionTimingInfo,
@@ -25556,7 +25769,6 @@ var require_util9 = __commonJS({
isValidHeaderValue,
isErrorLike,
fullyReadBody,
- bytesMatch,
readableStreamClose,
isomorphicEncode,
urlIsLocal,
@@ -25565,7 +25777,6 @@ var require_util9 = __commonJS({
readAllBytes,
simpleRangeHeaderValue,
buildContentRange,
- parseMetadata,
createInflate,
extractMimeType,
getDecodeSplit,
@@ -25583,12 +25794,10 @@ var require_formdata2 = __commonJS({
var { iteratorMixin } = require_util9();
var { kEnumerableProperty } = require_util8();
var { webidl } = require_webidl2();
- var { File: NativeFile } = require("node:buffer");
var nodeUtil = require("node:util");
- var File = globalThis.File ?? NativeFile;
var FormData = class _FormData {
#state = [];
- constructor(form) {
+ constructor(form = void 0) {
webidl.util.markAsUncloneable(this);
if (form !== void 0) {
throw webidl.errors.conversionFailed({
@@ -25744,14 +25953,12 @@ var require_formdata2 = __commonJS({
var require_formdata_parser = __commonJS({
"node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) {
"use strict";
- var { isUSVString, bufferToLowerCasedHeaderName } = require_util8();
+ var { bufferToLowerCasedHeaderName } = require_util8();
var { utf8DecodeBytes } = require_util9();
var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
var { makeEntry } = require_formdata2();
var { webidl } = require_webidl2();
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("--");
@@ -25839,8 +26046,8 @@ var require_formdata_parser = __commonJS({
} else {
value = utf8DecodeBytes(Buffer.from(body));
}
- assert(isUSVString(name));
- assert(typeof value === "string" && isUSVString(value) || webidl.is.File(value));
+ assert(webidl.is.USVString(name));
+ assert(typeof value === "string" && webidl.is.USVString(value) || webidl.is.File(value));
entryList.push(makeEntry(name, value, filename));
}
}
@@ -26010,6 +26217,25 @@ var require_formdata_parser = __commonJS({
}
});
+// node_modules/undici/lib/util/promise.js
+var require_promise = __commonJS({
+ "node_modules/undici/lib/util/promise.js"(exports2, module2) {
+ "use strict";
+ function createDeferredPromise() {
+ let res;
+ let rej;
+ const promise = new Promise((resolve, reject) => {
+ res = resolve;
+ rej = reject;
+ });
+ return { promise, resolve: res, reject: rej };
+ }
+ module2.exports = {
+ createDeferredPromise
+ };
+ }
+});
+
// node_modules/undici/lib/web/fetch/body.js
var require_body2 = __commonJS({
"node_modules/undici/lib/web/fetch/body.js"(exports2, module2) {
@@ -26018,19 +26244,18 @@ var require_body2 = __commonJS({
var {
ReadableStreamFrom,
readableStreamClose,
- createDeferredPromise,
fullyReadBody,
extractMimeType,
utf8DecodeBytes
} = require_util9();
var { FormData, setFormDataState } = require_formdata2();
var { webidl } = require_webidl2();
- 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 { createDeferredPromise } = require_promise();
var random;
try {
const crypto = require("node:crypto");
@@ -26041,16 +26266,12 @@ var require_body2 = __commonJS({
var textEncoder = new TextEncoder();
function noop() {
}
- 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(noop);
- }
- });
- }
+ var 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(noop);
+ }
+ });
function extractBody(object, keepalive = false) {
let stream = null;
if (webidl.is.ReadableStream(object)) {
@@ -26059,7 +26280,7 @@ var require_body2 = __commonJS({
stream = object.stream();
} else {
stream = new ReadableStream({
- async pull(controller) {
+ pull(controller) {
const buffer = typeof source === "string" ? textEncoder.encode(source) : source;
if (buffer.byteLength) {
controller.enqueue(buffer);
@@ -26082,15 +26303,13 @@ var require_body2 = __commonJS({
} else if (webidl.is.URLSearchParams(object)) {
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 (webidl.is.BufferSource(object)) {
+ source = isArrayBuffer(object) ? new Uint8Array(object.slice()) : new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength));
} else if (webidl.is.FormData(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 formdataEscape = (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]);
@@ -26098,14 +26317,14 @@ Content-Disposition: form-data`;
let hasUnknownSizeValue = false;
for (const [name, value] of object) {
if (typeof value === "string") {
- const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
+ const chunk2 = textEncoder.encode(prefix + `; name="${formdataEscape(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
+ const chunk2 = textEncoder.encode(`${prefix}; name="${formdataEscape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${formdataEscape(value.name)}"` : "") + `\r
Content-Type: ${value.type || "application/octet-stream"}\r
\r
`);
@@ -26194,11 +26413,8 @@ Content-Type: ${value.type || "application/octet-stream"}\r
}
return extractBody(object, keepalive);
}
- function cloneBody(instance, body) {
- const [out1, out2] = body.stream.tee();
- if (hasFinalizationRegistry) {
- streamRegistry.register(instance, new WeakRef(out1));
- }
+ function cloneBody(body) {
+ const { 0: out1, 1: out2 } = body.stream.tee();
body.stream = out1;
return {
stream: out2,
@@ -26206,11 +26422,6 @@ Content-Type: ${value.type || "application/octet-stream"}\r
source: body.source
};
}
- function throwIfAborted(state) {
- if (state.aborted) {
- throw new DOMException("The operation was aborted.", "AbortError");
- }
- }
function bodyMixinMethods(instance, getInternalState) {
const methods = {
blob() {
@@ -26221,7 +26432,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
} else if (mimeType) {
mimeType = serializeAMimeType(mimeType);
}
- return new Blob2([bytes], { type: mimeType });
+ return new Blob([bytes], { type: mimeType });
}, instance, getInternalState);
},
arrayBuffer() {
@@ -26272,15 +26483,21 @@ Content-Type: ${value.type || "application/octet-stream"}\r
function mixinBody(prototype, getInternalState) {
Object.assign(prototype.prototype, bodyMixinMethods(prototype, getInternalState));
}
- async function consumeBody(object, convertBytesToJSValue, instance, getInternalState) {
- webidl.brandCheck(object, instance);
+ function consumeBody(object, convertBytesToJSValue, instance, getInternalState) {
+ try {
+ webidl.brandCheck(object, instance);
+ } catch (e) {
+ return Promise.reject(e);
+ }
const state = getInternalState(object);
if (bodyUnusable(state)) {
- throw new TypeError("Body is unusable: Body has already been read");
+ return Promise.reject(new TypeError("Body is unusable: Body has already been read"));
+ }
+ if (state.aborted) {
+ return Promise.reject(new DOMException("The operation was aborted.", "AbortError"));
}
- throwIfAborted(state);
const promise = createDeferredPromise();
- const errorSteps = (error) => promise.reject(error);
+ const errorSteps = promise.reject;
const successSteps = (data) => {
try {
promise.resolve(convertBytesToJSValue(data));
@@ -26316,7 +26533,6 @@ Content-Type: ${value.type || "application/octet-stream"}\r
cloneBody,
mixinBody,
streamRegistry,
- hasFinalizationRegistry,
bodyUnusable
};
}
@@ -26381,15 +26597,25 @@ var require_client_h1 = __commonJS({
var FastBuffer = Buffer[Symbol.species];
var removeAllListeners = util.removeAllListeners;
var extractBody;
- async function lazyllhttp() {
+ function lazyllhttp() {
const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm2() : void 0;
let mod;
- try {
- mod = await WebAssembly.compile(require_llhttp_simd_wasm2());
- } catch (e) {
- mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm2());
+ let useWasmSIMD = process.arch !== "ppc64";
+ if (process.env.UNDICI_NO_WASM_SIMD === "1") {
+ useWasmSIMD = true;
+ } else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
+ useWasmSIMD = false;
}
- return await WebAssembly.instantiate(mod, {
+ if (useWasmSIMD) {
+ try {
+ mod = new WebAssembly.Module(require_llhttp_simd_wasm2());
+ } catch {
+ }
+ }
+ if (!mod) {
+ mod = new WebAssembly.Module(llhttpWasmData || require_llhttp_wasm2());
+ }
+ return new WebAssembly.Instance(mod, {
env: {
/**
* @param {number} p
@@ -26475,8 +26701,6 @@ var require_client_h1 = __commonJS({
});
}
var llhttpInstance = null;
- var llhttpPromise = lazyllhttp();
- llhttpPromise.catch();
var currentParser = null;
var currentBufferRef = null;
var currentBufferSize = 0;
@@ -26526,7 +26750,7 @@ var require_client_h1 = __commonJS({
this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this));
} else {
this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this));
- this.timeout.unref();
+ this.timeout?.unref();
}
}
this.timeoutValue = delay;
@@ -26585,8 +26809,6 @@ var require_client_h1 = __commonJS({
currentBufferRef = chunk;
currentParser = this;
ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, chunk.length);
- } catch (err) {
- throw err;
} finally {
currentParser = null;
currentBufferRef = null;
@@ -26885,7 +27107,7 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new InformationalError("reset"));
return constants.ERROR.PAUSED;
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
- setImmediate(() => client[kResume]());
+ setImmediate(client[kResume]);
} else {
client[kResume]();
}
@@ -26908,15 +27130,10 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new InformationalError("socket idle timeout"));
}
}
- async function connectH1(client, socket) {
+ function connectH1(client, socket) {
client[kSocket] = socket;
if (!llhttpInstance) {
- const noop = () => {
- };
- socket.on("error", noop);
- llhttpInstance = await llhttpPromise;
- llhttpPromise = null;
- socket.off("error", noop);
+ llhttpInstance = lazyllhttp();
}
if (socket.errored) {
throw socket.errored;
@@ -27249,9 +27466,9 @@ upgrade: ${upgrade}\r
}
socket.on("drain", onDrain).on("error", onFinished);
if (body.errorEmitted ?? body.errored) {
- setImmediate(() => onFinished(body.errored));
+ setImmediate(onFinished, body.errored);
} else if (body.endEmitted ?? body.readableEnded) {
- setImmediate(() => onFinished(null));
+ setImmediate(onFinished, null);
}
if (body.closeEmitted ?? body.closed) {
setImmediate(onClose);
@@ -27547,7 +27764,7 @@ var require_client_h2 = __commonJS({
}
return result;
}
- async function connectH2(client, socket) {
+ function connectH2(client, socket) {
client[kSocket] = socket;
const session = http2.connect(client[kUrl], {
createConnection: () => socket,
@@ -27691,7 +27908,7 @@ var require_client_h2 = __commonJS({
function writeH2(client, request7) {
const requestTimeout = request7.bodyTimeout ?? client[kBodyTimeout];
const session = client[kHTTP2Session];
- const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request7;
+ const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request7;
let { body } = request7;
if (upgrade) {
util.errorRequest(client, request7, new Error("Upgrade not supported for H2"));
@@ -27701,14 +27918,24 @@ var require_client_h2 = __commonJS({
for (let n = 0; n < reqHeaders.length; n += 2) {
const key = reqHeaders[n + 0];
const val = reqHeaders[n + 1];
+ if (key === "cookie") {
+ if (headers[key] != null) {
+ headers[key] = Array.isArray(headers[key]) ? (headers[key].push(val), headers[key]) : [headers[key], val];
+ } else {
+ headers[key] = val;
+ }
+ continue;
+ }
if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) {
if (headers[key]) {
- headers[key] += `,${val[i]}`;
+ headers[key] += `, ${val[i]}`;
} else {
headers[key] = val[i];
}
}
+ } else if (headers[key]) {
+ headers[key] += `, ${val}`;
} else {
headers[key] = val;
}
@@ -27761,7 +27988,7 @@ var require_client_h2 = __commonJS({
return true;
}
headers[HTTP2_HEADER_PATH] = path;
- headers[HTTP2_HEADER_SCHEME] = "https";
+ headers[HTTP2_HEADER_SCHEME] = protocol === "http:" ? "http" : "https";
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
if (body && typeof body.read === "function") {
body.read(0);
@@ -28075,6 +28302,7 @@ var require_client2 = __commonJS({
var net = require("node:net");
var http = require("node:http");
var util = require_util8();
+ var { ClientStats } = require_stats();
var { channels } = require_diagnostics();
var Request = require_request3();
var DispatcherBase = require_dispatcher_base2();
@@ -28280,6 +28508,9 @@ var require_client2 = __commonJS({
this[kPipelining] = value;
this[kResume](true);
}
+ get stats() {
+ return new ClientStats(this);
+ }
get [kPending]() {
return this[kQueue].length - this[kPendingIdx];
}
@@ -28303,8 +28534,7 @@ var require_client2 = __commonJS({
this.once("connect", cb);
}
[kDispatch](opts, handler) {
- const origin = opts.origin || this[kUrl].origin;
- const request7 = new Request(origin, opts, handler);
+ const request7 = new Request(this[kUrl].origin, opts, handler);
this[kQueue].push(request7);
if (this[kResuming]) {
} else if (util.bodyLength(request7.body) == null && util.isIterable(request7.body)) {
@@ -28318,7 +28548,7 @@ var require_client2 = __commonJS({
}
return this[kNeedDrain] < 2;
}
- async [kClose]() {
+ [kClose]() {
return new Promise((resolve) => {
if (this[kSize]) {
this[kClosedResolve] = resolve;
@@ -28327,7 +28557,7 @@ var require_client2 = __commonJS({
}
});
}
- async [kDestroy](err) {
+ [kDestroy](err) {
return new Promise((resolve) => {
const requests = this[kQueue].splice(this[kPendingIdx]);
for (let i = 0; i < requests.length; i++) {
@@ -28362,7 +28592,7 @@ var require_client2 = __commonJS({
assert(client[kSize] === 0);
}
}
- async function connect(client) {
+ function connect(client) {
assert(!client[kConnecting]);
assert(!client[kHTTPContext]);
let { host, hostname, protocol, port } = client[kUrl];
@@ -28388,33 +28618,32 @@ var require_client2 = __commonJS({
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);
- }
- });
- });
+ client[kConnector]({
+ host,
+ hostname,
+ protocol,
+ port,
+ servername: client[kServerName],
+ localAddress: client[kLocalAddress]
+ }, (err, socket) => {
+ if (err) {
+ handleConnectError(client, err, { host, hostname, protocol, port });
+ client[kResume]();
+ return;
+ }
if (client.destroyed) {
util.destroy(socket.on("error", noop), new ClientDestroyedError());
+ client[kResume]();
return;
}
assert(socket);
try {
- client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket);
- } catch (err) {
+ client[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client, socket) : connectH1(client, socket);
+ } catch (err2) {
socket.destroy().on("error", noop);
- throw err;
+ handleConnectError(client, err2, { host, hostname, protocol, port });
+ client[kResume]();
+ return;
}
client[kConnecting] = false;
socket[kCounter] = 0;
@@ -28437,38 +28666,39 @@ var require_client2 = __commonJS({
});
}
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,
- 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 request7 = client[kQueue][client[kPendingIdx]++];
- util.errorRequest(client, request7, err);
- }
- } else {
- onError(client, err);
+ client[kResume]();
+ });
+ }
+ function handleConnectError(client, err, { host, hostname, protocol, port }) {
+ 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 request7 = client[kQueue][client[kPendingIdx]++];
+ util.errorRequest(client, request7, err);
}
- client.emit("connectionError", client[kUrl], [client], err);
+ } else {
+ onError(client, err);
}
- client[kResume]();
+ client.emit("connectionError", client[kUrl], [client], err);
}
function emitDrain(client) {
client[kNeedDrain] = 0;
@@ -28560,21 +28790,19 @@ var require_fixed_queue2 = __commonJS({
var kSize = 2048;
var kMask = kSize - 1;
var FixedCircularBuffer = class {
- constructor() {
- this.bottom = 0;
- this.top = 0;
- this.list = new Array(kSize).fill(void 0);
- this.next = null;
- }
- /**
- * @returns {boolean}
- */
+ /** @type {number} */
+ bottom = 0;
+ /** @type {number} */
+ top = 0;
+ /** @type {Array} */
+ list = new Array(kSize).fill(void 0);
+ /** @type {T|null} */
+ next = null;
+ /** @returns {boolean} */
isEmpty() {
return this.top === this.bottom;
}
- /**
- * @returns {boolean}
- */
+ /** @returns {boolean} */
isFull() {
return (this.top + 1 & kMask) === this.bottom;
}
@@ -28586,9 +28814,7 @@ var require_fixed_queue2 = __commonJS({
this.list[this.top] = data;
this.top = this.top + 1 & kMask;
}
- /**
- * @returns {T|null}
- */
+ /** @returns {T|null} */
shift() {
const nextItem = this.list[this.bottom];
if (nextItem === void 0) {
@@ -28603,24 +28829,18 @@ var require_fixed_queue2 = __commonJS({
constructor() {
this.head = this.tail = new FixedCircularBuffer();
}
- /**
- * @returns {boolean}
- */
+ /** @returns {boolean} */
isEmpty() {
return this.head.isEmpty();
}
- /**
- * @param {T} data
- */
+ /** @param {T} data */
push(data) {
if (this.head.isFull()) {
this.head = this.head.next = new FixedCircularBuffer();
}
this.head.push(data);
}
- /**
- * @returns {T|null}
- */
+ /** @returns {T|null} */
shift() {
const tail = this.tail;
const next = tail.shift();
@@ -28634,47 +28854,14 @@ var require_fixed_queue2 = __commonJS({
}
});
-// node_modules/undici/lib/dispatcher/pool-stats.js
-var require_pool_stats2 = __commonJS({
- "node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) {
- "use strict";
- var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols6();
- 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_base2 = __commonJS({
"node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) {
"use strict";
+ var { PoolStats } = require_stats();
var DispatcherBase = require_dispatcher_base2();
var FixedQueue = require_fixed_queue2();
var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols6();
- var PoolStats = require_pool_stats2();
var kClients = Symbol("clients");
var kNeedDrain = Symbol("needDrain");
var kQueue = Symbol("queue");
@@ -28686,53 +28873,60 @@ var require_pool_base2 = __commonJS({
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]);
+ [kQueue] = new FixedQueue();
+ [kQueued] = 0;
+ [kClients] = [];
+ [kNeedDrain] = false;
+ [kOnDrain](client, origin, targets) {
+ const queue = this[kQueue];
+ let needDrain = false;
+ while (!needDrain) {
+ const item = queue.shift();
+ if (!item) {
+ break;
}
- if (pool[kClosedResolve] && queue.isEmpty()) {
- Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]);
+ this[kQueued]--;
+ needDrain = !client.dispatch(item.opts, item.handler);
+ }
+ client[kNeedDrain] = needDrain;
+ if (!needDrain && this[kNeedDrain]) {
+ this[kNeedDrain] = false;
+ this.emit("drain", origin, [this, ...targets]);
+ }
+ if (this[kClosedResolve] && queue.isEmpty()) {
+ const closeAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ closeAll[i] = this[kClients][i].close();
}
- };
- 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);
+ Promise.all(closeAll).then(this[kClosedResolve]);
+ }
}
+ [kOnConnect] = (origin, targets) => {
+ this.emit("connect", origin, [this, ...targets]);
+ };
+ [kOnDisconnect] = (origin, targets, err) => {
+ this.emit("disconnect", origin, [this, ...targets], err);
+ };
+ [kOnConnectionError] = (origin, targets, err) => {
+ this.emit("connectionError", origin, [this, ...targets], err);
+ };
get [kBusy]() {
return this[kNeedDrain];
}
get [kConnected]() {
- return this[kClients].filter((client) => client[kConnected]).length;
+ let ret = 0;
+ for (const { [kConnected]: connected } of this[kClients]) {
+ ret += connected;
+ }
+ return ret;
}
get [kFree]() {
- return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length;
+ let ret = 0;
+ for (const { [kConnected]: connected, [kNeedDrain]: needDrain } of this[kClients]) {
+ ret += connected && !needDrain;
+ }
+ return ret;
}
get [kPending]() {
let ret = this[kQueued];
@@ -28756,18 +28950,22 @@ var require_pool_base2 = __commonJS({
return ret;
}
get stats() {
- return this[kStats];
+ return new PoolStats(this);
}
- async [kClose]() {
+ [kClose]() {
if (this[kQueue].isEmpty()) {
- await Promise.all(this[kClients].map((c) => c.close()));
+ const closeAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ closeAll[i] = this[kClients][i].close();
+ }
+ return Promise.all(closeAll);
} else {
- await new Promise((resolve) => {
+ return new Promise((resolve) => {
this[kClosedResolve] = resolve;
});
}
}
- async [kDestroy](err) {
+ [kDestroy](err) {
while (true) {
const item = this[kQueue].shift();
if (!item) {
@@ -28775,7 +28973,11 @@ var require_pool_base2 = __commonJS({
}
item.handler.onError(err);
}
- await Promise.all(this[kClients].map((c) => c.destroy(err)));
+ const destroyAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ destroyAll[i] = this[kClients][i].destroy(err);
+ }
+ return Promise.all(destroyAll);
}
[kDispatch](opts, handler) {
const dispatcher = this[kGetDispatcher]();
@@ -28790,12 +28992,12 @@ var require_pool_base2 = __commonJS({
return !this[kNeedDrain];
}
[kAddClient](client) {
- client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);
+ client.on("drain", this[kOnDrain].bind(this, client)).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]);
+ this[kOnDrain](client, client[kUrl], [client, this]);
}
});
}
@@ -28831,7 +29033,8 @@ var require_pool2 = __commonJS({
kClients,
kNeedDrain,
kAddClient,
- kGetDispatcher
+ kGetDispatcher,
+ kRemoveClient
} = require_pool_base2();
var Client = require_client2();
var {
@@ -28858,6 +29061,7 @@ var require_pool2 = __commonJS({
autoSelectFamily,
autoSelectFamilyAttemptTimeout,
allowH2,
+ clientTtl,
...options
} = {}) {
if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
@@ -28869,7 +29073,6 @@ var require_pool2 = __commonJS({
if (connect != null && typeof connect !== "function" && typeof connect !== "object") {
throw new InvalidArgumentError("connect must be a function or an object");
}
- super();
if (typeof connect !== "function") {
connect = buildConnector({
...tls,
@@ -28881,11 +29084,19 @@ var require_pool2 = __commonJS({
...connect
});
}
+ super();
this[kConnections] = connections || null;
this[kUrl] = util.parseOrigin(origin);
- this[kOptions] = { ...util.deepClone(options), connect, allowH2 };
+ this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl };
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
this[kFactory] = factory;
+ this.on("connect", (origin2, targets) => {
+ if (clientTtl != null && clientTtl > 0) {
+ for (const target of targets) {
+ Object.assign(target, { ttl: Date.now() });
+ }
+ }
+ });
this.on("connectionError", (origin2, targets, error) => {
for (const target of targets) {
const idx = this[kClients].indexOf(target);
@@ -28896,8 +29107,11 @@ var require_pool2 = __commonJS({
});
}
[kGetDispatcher]() {
+ const clientTtlOption = this[kOptions].clientTtl;
for (const client of this[kClients]) {
- if (!client[kNeedDrain]) {
+ if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) {
+ this[kRemoveClient](client);
+ } else if (!client[kNeedDrain]) {
return client;
}
}
@@ -29059,8 +29273,8 @@ var require_balanced_pool2 = __commonJS({
var require_agent2 = __commonJS({
"node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) {
"use strict";
- var { InvalidArgumentError } = require_errors2();
- var { kClients, kRunning, kClose, kDestroy, kDispatch } = require_symbols6();
+ var { InvalidArgumentError, MaxOriginsReachedError } = require_errors2();
+ var { kClients, kRunning, kClose, kDestroy, kDispatch, kUrl } = require_symbols6();
var DispatcherBase = require_dispatcher_base2();
var Pool = require_pool2();
var Client = require_client2();
@@ -29071,24 +29285,29 @@ var require_agent2 = __commonJS({
var kOnDrain = Symbol("onDrain");
var kFactory = Symbol("factory");
var kOptions = Symbol("options");
+ var kOrigins = Symbol("origins");
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, connect, ...options } = {}) {
+ constructor({ factory = defaultFactory, maxOrigins = Infinity, connect, ...options } = {}) {
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 maxOrigins !== "number" || Number.isNaN(maxOrigins) || maxOrigins <= 0) {
+ throw new InvalidArgumentError("maxOrigins must be a number greater than 0");
+ }
super();
if (connect && typeof connect !== "function") {
connect = { ...connect };
}
- this[kOptions] = { ...util.deepClone(options), connect };
+ this[kOptions] = { ...util.deepClone(options), maxOrigins, connect };
this[kFactory] = factory;
this[kClients] = /* @__PURE__ */ new Map();
+ this[kOrigins] = /* @__PURE__ */ new Set();
this[kOnDrain] = (origin, targets) => {
this.emit("drain", origin, [this, ...targets]);
};
@@ -29104,8 +29323,8 @@ var require_agent2 = __commonJS({
}
get [kRunning]() {
let ret = 0;
- for (const client of this[kClients].values()) {
- ret += client[kRunning];
+ for (const { dispatcher } of this[kClients].values()) {
+ ret += dispatcher[kRunning];
}
return ret;
}
@@ -29116,28 +29335,65 @@ var require_agent2 = __commonJS({
} else {
throw new InvalidArgumentError("opts.origin must be a non-empty string or URL.");
}
- let dispatcher = this[kClients].get(key);
+ if (this[kOrigins].size >= this[kOptions].maxOrigins && !this[kOrigins].has(key)) {
+ throw new MaxOriginsReachedError();
+ }
+ const result = this[kClients].get(key);
+ let dispatcher = result && result.dispatcher;
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);
+ const closeClientIfUnused = (connected) => {
+ const result2 = this[kClients].get(key);
+ if (result2) {
+ if (connected) result2.count -= 1;
+ if (result2.count <= 0) {
+ this[kClients].delete(key);
+ result2.dispatcher.close();
+ }
+ this[kOrigins].delete(key);
+ }
+ };
+ dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", (origin, targets) => {
+ const result2 = this[kClients].get(key);
+ if (result2) {
+ result2.count += 1;
+ }
+ this[kOnConnect](origin, targets);
+ }).on("disconnect", (origin, targets, err) => {
+ closeClientIfUnused(true);
+ this[kOnDisconnect](origin, targets, err);
+ }).on("connectionError", (origin, targets, err) => {
+ closeClientIfUnused(false);
+ this[kOnConnectionError](origin, targets, err);
+ });
+ this[kClients].set(key, { count: 0, dispatcher });
+ this[kOrigins].add(key);
}
return dispatcher.dispatch(opts, handler);
}
- async [kClose]() {
+ [kClose]() {
const closePromises = [];
- for (const client of this[kClients].values()) {
- closePromises.push(client.close());
+ for (const { dispatcher } of this[kClients].values()) {
+ closePromises.push(dispatcher.close());
}
this[kClients].clear();
- await Promise.all(closePromises);
+ return Promise.all(closePromises);
}
- async [kDestroy](err) {
+ [kDestroy](err) {
const destroyPromises = [];
- for (const client of this[kClients].values()) {
- destroyPromises.push(client.destroy(err));
+ for (const { dispatcher } of this[kClients].values()) {
+ destroyPromises.push(dispatcher.destroy(err));
}
this[kClients].clear();
- await Promise.all(destroyPromises);
+ return Promise.all(destroyPromises);
+ }
+ get stats() {
+ const allClientStats = {};
+ for (const { dispatcher } of this[kClients].values()) {
+ if (dispatcher.stats) {
+ allClientStats[dispatcher[kUrl].origin] = dispatcher.stats;
+ }
+ }
+ return allClientStats;
}
};
module2.exports = Agent;
@@ -29148,19 +29404,20 @@ var require_agent2 = __commonJS({
var require_proxy_agent2 = __commonJS({
"node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) {
"use strict";
- var { kProxy, kClose, kDestroy } = require_symbols6();
- var { URL: URL2 } = require("node:url");
+ var { kProxy, kClose, kDestroy, kDispatch } = require_symbols6();
var Agent = require_agent2();
var Pool = require_pool2();
var DispatcherBase = require_dispatcher_base2();
var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors2();
var buildConnector = require_connect2();
+ var Client = require_client2();
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;
}
@@ -29169,15 +29426,67 @@ var require_proxy_agent2 = __commonJS({
}
var noop = () => {
};
+ 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(proxyUrl2, { headers = {}, connect, factory }) {
+ if (!proxyUrl2) {
+ throw new InvalidArgumentError("Proxy URL is mandatory");
+ }
+ super();
+ this[kProxyHeaders] = headers;
+ if (factory) {
+ this.#client = factory(proxyUrl2, { connect });
+ } else {
+ this.#client = new Client(proxyUrl2, { connect });
+ }
+ }
+ [kDispatch](opts, handler) {
+ const onHeaders = handler.onHeaders;
+ handler.onHeaders = function(statusCode, data, resume) {
+ if (statusCode === 407) {
+ if (typeof handler.onError === "function") {
+ handler.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 URL(origin);
+ headers.host = host;
+ }
+ opts.headers = { ...this[kProxyHeaders], ...headers };
+ return this.#client[kDispatch](opts, handler);
+ }
+ [kClose]() {
+ return this.#client.close();
+ }
+ [kDestroy](err) {
+ return this.#client.destroy(err);
+ }
+ };
var ProxyAgent2 = class extends DispatcherBase {
constructor(opts) {
- if (!opts || typeof opts === "object" && !(opts instanceof URL2) && !opts.uri) {
+ if (!opts || typeof opts === "object" && !(opts instanceof URL) && !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;
super();
const url = this.#getUrl(opts);
const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url;
@@ -29185,6 +29494,7 @@ var require_proxy_agent2 = __commonJS({
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) {
@@ -29196,9 +29506,22 @@ var require_proxy_agent2 = __commonJS({
}
const connect = buildConnector({ ...opts.proxyTls });
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls });
+ const agentFactory = opts.factory || defaultAgentFactory;
+ const factory = (origin2, options) => {
+ const { protocol: protocol2 } = new URL(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) {
@@ -29212,7 +29535,8 @@ var require_proxy_agent2 = __commonJS({
signal: opts2.signal,
headers: {
...this[kProxyHeaders],
- host: opts2.host
+ host: opts2.host,
+ ...opts2.connections == null || opts2.connections > 0 ? { "proxy-connection": "keep-alive" } : {}
},
servername: this[kProxyTls]?.servername || proxyHostname
});
@@ -29245,7 +29569,7 @@ var require_proxy_agent2 = __commonJS({
const headers = buildHeaders(opts.headers);
throwIfProxyAuthIsSent(headers);
if (headers && !("host" in headers) && !("Host" in headers)) {
- const { host } = new URL2(opts.origin);
+ const { host } = new URL(opts.origin);
headers.host = host;
}
return this[kAgent].dispatch(
@@ -29257,25 +29581,29 @@ var require_proxy_agent2 = __commonJS({
);
}
/**
- * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts
+ * @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 new URL(opts);
+ } else if (opts instanceof URL) {
return opts;
} else {
- return new URL2(opts.uri);
+ return new URL(opts.uri);
}
}
- async [kClose]() {
- await this[kAgent].close();
- await this[kClient].close();
+ [kClose]() {
+ return Promise.all([
+ this[kAgent].close(),
+ this[kClient].close()
+ ]);
}
- async [kDestroy]() {
- await this[kAgent].destroy();
- await this[kClient].destroy();
+ [kDestroy]() {
+ return Promise.all([
+ this[kAgent].destroy(),
+ this[kClient].destroy()
+ ]);
}
};
function buildHeaders(headers) {
@@ -29338,23 +29666,19 @@ var require_env_http_proxy_agent = __commonJS({
const agent = this.#getProxyAgentForUrl(url);
return agent.dispatch(opts, handler);
}
- async [kClose]() {
- await this[kNoProxyAgent].close();
- if (!this[kHttpProxyAgent][kClosed]) {
- await this[kHttpProxyAgent].close();
- }
- if (!this[kHttpsProxyAgent][kClosed]) {
- await this[kHttpsProxyAgent].close();
- }
+ [kClose]() {
+ return Promise.all([
+ this[kNoProxyAgent].close(),
+ !this[kHttpProxyAgent][kClosed] && this[kHttpProxyAgent].close(),
+ !this[kHttpsProxyAgent][kClosed] && this[kHttpsProxyAgent].close()
+ ]);
}
- 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);
- }
+ [kDestroy](err) {
+ return Promise.all([
+ this[kNoProxyAgent].destroy(err),
+ !this[kHttpProxyAgent][kDestroyed] && this[kHttpProxyAgent].destroy(err),
+ !this[kHttpsProxyAgent][kDestroyed] && this[kHttpsProxyAgent].destroy(err)
+ ]);
}
#getProxyAgentForUrl(url) {
let { protocol, host: hostname, port } = url;
@@ -29458,12 +29782,15 @@ var require_retry_handler = __commonJS({
methods,
errorCodes,
retryAfter,
- statusCodes
+ statusCodes,
+ throwOnError
} = retryOptions ?? {};
+ this.error = null;
this.dispatch = dispatch;
this.handler = WrapHandler.wrap(handler);
this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) };
this.retryOpts = {
+ throwOnError: throwOnError ?? true,
retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry],
retryAfter: retryAfter ?? true,
maxTimeout: maxTimeout ?? 30 * 1e3,
@@ -29496,6 +29823,42 @@ var require_retry_handler = __commonJS({
this.end = null;
this.etag = null;
}
+ onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err) {
+ if (this.retryOpts.throwOnError) {
+ if (this.retryOpts.statusCodes.includes(statusCode) === false) {
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ } else {
+ this.error = err;
+ }
+ return;
+ }
+ if (isDisturbed(this.opts.body)) {
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ return;
+ }
+ function shouldRetry(passedErr) {
+ if (passedErr) {
+ this.headersSent = true;
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ controller.resume();
+ return;
+ }
+ this.error = err;
+ controller.resume();
+ }
+ controller.pause();
+ this.retryOpts.retry(
+ err,
+ {
+ state: { counter: this.retryCount },
+ opts: { retryOptions: this.retryOpts, ...this.opts }
+ },
+ shouldRetry.bind(this)
+ );
+ }
onRequestStart(controller, context) {
if (!this.headersSent) {
this.handler.onRequestStart?.(controller, context);
@@ -29542,25 +29905,17 @@ var require_retry_handler = __commonJS({
setTimeout(() => cb(null), retryTimeout);
}
onResponseStart(controller, statusCode, headers, statusMessage) {
+ this.error = null;
this.retryCount += 1;
if (statusCode >= 300) {
- if (this.retryOpts.statusCodes.includes(statusCode) === false) {
- this.headersSent = true;
- this.handler.onResponseStart?.(
- controller,
- statusCode,
- headers,
- statusMessage
- );
- return;
- } else {
- throw new RequestRetryError("Request failed", statusCode, {
- headers,
- data: {
- count: this.retryCount
- }
- });
- }
+ const err = new RequestRetryError("Request failed", statusCode, {
+ headers,
+ data: {
+ count: this.retryCount
+ }
+ });
+ this.onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err);
+ return;
}
if (this.headersSent) {
if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) {
@@ -29638,18 +29993,55 @@ var require_retry_handler = __commonJS({
}
}
onResponseData(controller, chunk) {
+ if (this.error) {
+ return;
+ }
this.start += chunk.length;
this.handler.onResponseData?.(controller, chunk);
}
onResponseEnd(controller, trailers) {
- this.retryCount = 0;
- return this.handler.onResponseEnd?.(controller, trailers);
+ if (this.error && this.retryOpts.throwOnError) {
+ throw this.error;
+ }
+ if (!this.error) {
+ this.retryCount = 0;
+ return this.handler.onResponseEnd?.(controller, trailers);
+ }
+ this.retry(controller);
+ }
+ retry(controller) {
+ 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 (err) {
+ this.handler.onResponseError?.(controller, err);
+ }
}
onResponseError(controller, err) {
if (controller?.aborted || isDisturbed(this.opts.body)) {
this.handler.onResponseError?.(controller, err);
return;
}
+ function shouldRetry(returnedErr) {
+ if (!returnedErr) {
+ this.retry(controller);
+ return;
+ }
+ this.handler?.onResponseError?.(controller, returnedErr);
+ }
if (this.retryCount - this.retryCountCheckpoint > 0) {
this.retryCount = this.retryCountCheckpoint + (this.retryCount - this.retryCountCheckpoint);
} else {
@@ -29661,32 +30053,8 @@ var require_retry_handler = __commonJS({
state: { counter: this.retryCount },
opts: { retryOptions: this.retryOpts, ...this.opts }
},
- onRetry.bind(this)
+ shouldRetry.bind(this)
);
- function onRetry(err2) {
- if (err2 != null || controller?.aborted || isDisturbed(this.opts.body)) {
- return this.handler.onResponseError?.(controller, 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.onResponseError?.(controller, err3);
- }
- }
}
};
module2.exports = RetryHandler;
@@ -29741,7 +30109,6 @@ var require_h2c_client = __commonJS({
var H2CClient = class extends DispatcherBase {
#client = null;
constructor(origin, clientOpts) {
- super();
if (typeof origin === "string") {
origin = new URL(origin);
}
@@ -29764,6 +30131,7 @@ var require_h2c_client = __commonJS({
"h2c-client: pipelining cannot be greater than maxConcurrentStreams"
);
}
+ super();
this.#client = new Client(origin, {
...opts,
connect: this.#buildConnector(connect2),
@@ -29812,11 +30180,11 @@ var require_h2c_client = __commonJS({
dispatch(opts, handler) {
return this.#client.dispatch(opts, handler);
}
- async [kClose]() {
- await this.#client.close();
+ [kClose]() {
+ return this.#client.close();
}
- async [kDestroy]() {
- await this.#client.destroy();
+ [kDestroy]() {
+ return this.#client.destroy();
}
};
module2.exports = H2CClient;
@@ -29887,15 +30255,13 @@ var require_readable2 = __commonJS({
this[kAbort]();
}
if (!this[kUsed]) {
- setImmediate(() => {
- callback(err);
- });
+ setImmediate(callback, err);
} else {
callback(err);
}
}
/**
- * @param {string} event
+ * @param {string|symbol} event
* @param {(...args: any[]) => void} listener
* @returns {this}
*/
@@ -29907,7 +30273,7 @@ var require_readable2 = __commonJS({
return super.on(event, listener);
}
/**
- * @param {string} event
+ * @param {string|symbol} event
* @param {(...args: any[]) => void} listener
* @returns {this}
*/
@@ -29939,10 +30305,12 @@ var require_readable2 = __commonJS({
* @returns {boolean}
*/
push(chunk) {
- this[kBytesRead] += chunk ? chunk.length : 0;
- if (this[kConsume] && chunk !== null) {
- consumePush(this[kConsume], chunk);
- return this[kReading] ? super.push(chunk) : true;
+ if (chunk) {
+ this[kBytesRead] += chunk.length;
+ if (this[kConsume]) {
+ consumePush(this[kConsume], chunk);
+ return this[kReading] ? super.push(chunk) : true;
+ }
}
return super.push(chunk);
}
@@ -30033,17 +30401,19 @@ var require_readable2 = __commonJS({
* @param {AbortSignal} [opts.signal] An AbortSignal to cancel the dump.
* @returns {Promise}
*/
- async dump(opts) {
+ dump(opts) {
const signal = opts?.signal;
if (signal != null && (typeof signal !== "object" || !("aborted" in signal))) {
- throw new InvalidArgumentError("signal must be an AbortSignal");
+ return Promise.reject(new InvalidArgumentError("signal must be an AbortSignal"));
}
const limit = opts?.limit && Number.isFinite(opts.limit) ? opts.limit : 128 * 1024;
- signal?.throwIfAborted();
+ if (signal?.aborted) {
+ return Promise.reject(signal.reason ?? new AbortError2());
+ }
if (this._readableState.closeEmitted) {
- return null;
+ return Promise.resolve(null);
}
- return await new Promise((resolve, reject) => {
+ return new Promise((resolve, reject) => {
if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
this.destroy(new AbortError2());
}
@@ -30093,9 +30463,7 @@ var require_readable2 = __commonJS({
if (isUnusable(stream)) {
const rState = stream._readableState;
if (rState.destroyed && rState.closeEmitted === false) {
- stream.on("error", (err) => {
- reject(err);
- }).on("close", () => {
+ stream.on("error", reject).on("close", () => {
reject(new TypeError("unusable"));
});
} else {
@@ -30326,14 +30694,22 @@ var require_api_request2 = __commonJS({
this.callback = null;
this.res = res;
if (callback !== null) {
- this.runInAsyncScope(callback, null, null, {
- statusCode,
- headers,
- trailers: this.trailers,
- opaque,
- body: res,
- context
- });
+ try {
+ this.runInAsyncScope(callback, null, null, {
+ statusCode,
+ headers,
+ trailers: this.trailers,
+ opaque,
+ body: res,
+ context
+ });
+ } catch (err) {
+ this.res = null;
+ util.destroy(res.on("error", noop), err);
+ queueMicrotask(() => {
+ throw err;
+ });
+ }
}
}
onData(chunk) {
@@ -30538,7 +30914,7 @@ var require_api_stream2 = __commonJS({
finished(res, { readable: false }, (err) => {
const { callback, res: res2, opaque: opaque2, trailers, abort } = this;
this.res = null;
- if (err || !res2.readable) {
+ if (err || !res2?.readable) {
util.destroy(res2, err);
}
this.callback = null;
@@ -31009,6 +31385,7 @@ var require_mock_errors2 = __commonJS({
"node_modules/undici/lib/mock/mock-errors.js"(exports2, module2) {
"use strict";
var { UndiciError } = require_errors2();
+ var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");
var MockNotMatchedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -31016,6 +31393,12 @@ var require_mock_errors2 = __commonJS({
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;
+ }
+ get [kMockNotMatchedError]() {
+ return true;
+ }
};
module2.exports = {
MockNotMatchedError
@@ -31053,6 +31436,7 @@ var require_mock_symbols2 = __commonJS({
kMockAgentRegisterCallHistory: Symbol("mock agent register mock call history"),
kMockAgentAddCallHistoryLog: Symbol("mock agent add call history log"),
kMockAgentIsCallHistoryEnabled: Symbol("mock agent is call history enabled"),
+ kMockAgentAcceptsNonStandardSearchParameters: Symbol("mock agent accepts non standard search parameters"),
kMockCallHistoryAddLog: Symbol("mock call history add log")
};
}
@@ -31140,6 +31524,30 @@ var require_mock_utils2 = __commonJS({
}
return true;
}
+ function normalizeSearchParams(query) {
+ if (typeof query !== "string") {
+ return query;
+ }
+ const originalQp = new URLSearchParams(query);
+ const normalizedQp = new URLSearchParams();
+ for (let [key, value] of originalQp.entries()) {
+ key = key.replace("[]", "");
+ const valueRepresentsString = /^(['"]).*\1$/.test(value);
+ if (valueRepresentsString) {
+ normalizedQp.append(key, value);
+ continue;
+ }
+ if (value.includes(",")) {
+ const values = value.split(",");
+ for (const v of values) {
+ normalizedQp.append(key, v);
+ }
+ continue;
+ }
+ normalizedQp.append(key, value);
+ }
+ return normalizedQp;
+ }
function safeUrl(path) {
if (typeof path !== "string") {
return path;
@@ -31315,7 +31723,7 @@ var require_mock_utils2 = __commonJS({
try {
mockDispatch.call(this, opts, handler);
} catch (error) {
- if (error instanceof MockNotMatchedError) {
+ if (error.code === "UND_MOCK_ERR_MOCK_NOT_MATCHED") {
const netConnect = agent[kGetNetConnect]();
if (netConnect === false) {
throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`);
@@ -31344,13 +31752,17 @@ var require_mock_utils2 = __commonJS({
return false;
}
function buildAndValidateMockOptions(opts) {
- if (opts) {
- const { agent, ...mockOptions } = opts;
- if ("enableCallHistory" in mockOptions && typeof mockOptions.enableCallHistory !== "boolean") {
- throw new InvalidArgumentError("options.enableCallHistory must to be a boolean");
- }
- return mockOptions;
+ const { agent, ...mockOptions } = opts;
+ if ("enableCallHistory" in mockOptions && typeof mockOptions.enableCallHistory !== "boolean") {
+ throw new InvalidArgumentError("options.enableCallHistory must to be a boolean");
+ }
+ if ("acceptNonStandardSearchParameters" in mockOptions && typeof mockOptions.acceptNonStandardSearchParameters !== "boolean") {
+ throw new InvalidArgumentError("options.acceptNonStandardSearchParameters must to be a boolean");
+ }
+ if ("ignoreTrailingSlash" in mockOptions && typeof mockOptions.ignoreTrailingSlash !== "boolean") {
+ throw new InvalidArgumentError("options.ignoreTrailingSlash must to be a boolean");
}
+ return mockOptions;
}
module2.exports = {
getResponseData: getResponseData7,
@@ -31367,7 +31779,8 @@ var require_mock_utils2 = __commonJS({
checkNetConnect,
buildAndValidateMockOptions,
getHeaderByName,
- buildHeadersFromArray
+ buildHeadersFromArray,
+ normalizeSearchParams
};
}
});
@@ -31584,6 +31997,9 @@ var require_mock_client2 = __commonJS({
this[kDispatches]
);
}
+ cleanMocks() {
+ this[kDispatches] = [];
+ }
async [kClose]() {
await promisify(this[kOriginalClose])();
this[kConnected] = 0;
@@ -31842,6 +32258,9 @@ var require_mock_pool2 = __commonJS({
this[kDispatches]
);
}
+ cleanMocks() {
+ this[kDispatches] = [];
+ }
async [kClose]() {
await promisify(this[kOriginalClose])();
this[kConnected] = 0;
@@ -31913,22 +32332,26 @@ var require_mock_agent2 = __commonJS({
kMockAgentIsCallHistoryEnabled,
kMockAgentAddCallHistoryLog,
kMockAgentMockCallHistoryInstance,
- kMockCallHistoryAddLog
+ kMockAgentAcceptsNonStandardSearchParameters,
+ kMockCallHistoryAddLog,
+ kIgnoreTrailingSlash
} = require_mock_symbols2();
var MockClient = require_mock_client2();
var MockPool = require_mock_pool2();
- var { matchValue, buildAndValidateMockOptions } = require_mock_utils2();
+ var { matchValue, normalizeSearchParams, buildAndValidateMockOptions } = require_mock_utils2();
var { InvalidArgumentError, UndiciError } = require_errors2();
var Dispatcher = require_dispatcher2();
var PendingInterceptorsFormatter = require_pending_interceptors_formatter2();
var { MockCallHistory } = require_mock_call_history();
var MockAgent = class extends Dispatcher {
- constructor(opts) {
+ constructor(opts = {}) {
super(opts);
const mockOptions = buildAndValidateMockOptions(opts);
this[kNetConnect] = true;
this[kIsMockActive] = true;
- this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false;
+ this[kMockAgentIsCallHistoryEnabled] = mockOptions.enableCallHistory ?? false;
+ this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions.acceptNonStandardSearchParameters ?? false;
+ this[kIgnoreTrailingSlash] = mockOptions.ignoreTrailingSlash ?? false;
if (opts?.agent && typeof opts.agent.dispatch !== "function") {
throw new InvalidArgumentError("Argument opts.agent must implement Agent");
}
@@ -31941,17 +32364,25 @@ var require_mock_agent2 = __commonJS({
}
}
get(origin) {
- let dispatcher = this[kMockAgentGet](origin);
+ const originKey = this[kIgnoreTrailingSlash] ? origin.replace(/\/$/, "") : origin;
+ let dispatcher = this[kMockAgentGet](originKey);
if (!dispatcher) {
- dispatcher = this[kFactory](origin);
- this[kMockAgentSet](origin, dispatcher);
+ dispatcher = this[kFactory](originKey);
+ this[kMockAgentSet](originKey, dispatcher);
}
return dispatcher;
}
dispatch(opts, handler) {
this.get(opts.origin);
this[kMockAgentAddCallHistoryLog](opts);
- return this[kAgent].dispatch(opts, handler);
+ const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters];
+ const dispatchOpts = { ...opts };
+ if (acceptNonStandardSearchParameters && dispatchOpts.path) {
+ const [path, searchParams] = dispatchOpts.path.split("?");
+ const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters);
+ dispatchOpts.path = `${path}?${normalizedSearchParams}`;
+ }
+ return this[kAgent].dispatch(dispatchOpts, handler);
}
async close() {
this.clearCallHistory();
@@ -32013,27 +32444,27 @@ var require_mock_agent2 = __commonJS({
}
}
[kMockAgentSet](origin, dispatcher) {
- this[kClients].set(origin, dispatcher);
+ this[kClients].set(origin, { count: 0, 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 client = this[kClients].get(origin);
- if (client) {
- return client;
+ const result = this[kClients].get(origin);
+ if (result?.dispatcher) {
+ return result.dispatcher;
}
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)) {
+ for (const [keyMatcher, result2] of Array.from(this[kClients])) {
+ if (result2 && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) {
const dispatcher = this[kFactory](origin);
this[kMockAgentSet](origin, dispatcher);
- dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches];
+ dispatcher[kDispatches] = result2.dispatcher[kDispatches];
return dispatcher;
}
}
@@ -32043,7 +32474,7 @@ var require_mock_agent2 = __commonJS({
}
pendingInterceptors() {
const mockAgentClients = this[kClients];
- return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending);
+ return Array.from(mockAgentClients.entries()).flatMap(([origin, result]) => result.dispatcher[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending);
}
assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {
const pending = this.pendingInterceptors();
@@ -32063,6 +32494,752 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim()
}
});
+// node_modules/undici/lib/mock/snapshot-utils.js
+var require_snapshot_utils = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-utils.js"(exports2, module2) {
+ "use strict";
+ var { InvalidArgumentError } = require_errors2();
+ function createHeaderFilters(matchOptions = {}) {
+ const { ignoreHeaders = [], excludeHeaders = [], matchHeaders = [], caseSensitive = false } = matchOptions;
+ return {
+ ignore: new Set(ignoreHeaders.map((header) => caseSensitive ? header : header.toLowerCase())),
+ exclude: new Set(excludeHeaders.map((header) => caseSensitive ? header : header.toLowerCase())),
+ match: new Set(matchHeaders.map((header) => caseSensitive ? header : header.toLowerCase()))
+ };
+ }
+ var crypto;
+ try {
+ crypto = require("node:crypto");
+ } catch {
+ }
+ var hashId = crypto?.hash ? (value) => crypto.hash("sha256", value, "base64url") : (value) => Buffer.from(value).toString("base64url");
+ function isUndiciHeaders(headers) {
+ return Array.isArray(headers) && (headers.length & 1) === 0;
+ }
+ function isUrlExcludedFactory(excludePatterns = []) {
+ if (excludePatterns.length === 0) {
+ return () => false;
+ }
+ return function isUrlExcluded(url) {
+ let urlLowerCased;
+ for (const pattern of excludePatterns) {
+ if (typeof pattern === "string") {
+ if (!urlLowerCased) {
+ urlLowerCased = url.toLowerCase();
+ }
+ if (urlLowerCased.includes(pattern.toLowerCase())) {
+ return true;
+ }
+ } else if (pattern instanceof RegExp) {
+ if (pattern.test(url)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+ }
+ function normalizeHeaders(headers) {
+ const normalizedHeaders = {};
+ if (!headers) return normalizedHeaders;
+ if (isUndiciHeaders(headers)) {
+ for (let i = 0; i < headers.length; i += 2) {
+ const key = headers[i];
+ const value = headers[i + 1];
+ if (key && value !== void 0) {
+ const keyStr = Buffer.isBuffer(key) ? key.toString() : key;
+ const valueStr = Buffer.isBuffer(value) ? value.toString() : value;
+ normalizedHeaders[keyStr.toLowerCase()] = valueStr;
+ }
+ }
+ return normalizedHeaders;
+ }
+ if (headers && typeof headers === "object") {
+ for (const [key, value] of Object.entries(headers)) {
+ if (key && typeof key === "string") {
+ normalizedHeaders[key.toLowerCase()] = Array.isArray(value) ? value.join(", ") : String(value);
+ }
+ }
+ }
+ return normalizedHeaders;
+ }
+ var validSnapshotModes = (
+ /** @type {const} */
+ ["record", "playback", "update"]
+ );
+ function validateSnapshotMode(mode) {
+ if (!validSnapshotModes.includes(mode)) {
+ throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be one of: ${validSnapshotModes.join(", ")}`);
+ }
+ }
+ module2.exports = {
+ createHeaderFilters,
+ hashId,
+ isUndiciHeaders,
+ normalizeHeaders,
+ isUrlExcludedFactory,
+ validateSnapshotMode
+ };
+ }
+});
+
+// node_modules/undici/lib/mock/snapshot-recorder.js
+var require_snapshot_recorder = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-recorder.js"(exports2, module2) {
+ "use strict";
+ var { writeFile, readFile, mkdir } = require("node:fs/promises");
+ var { dirname, resolve } = require("node:path");
+ var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = require("node:timers");
+ var { InvalidArgumentError, UndiciError } = require_errors2();
+ var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
+ function formatRequestKey(opts, headerFilters, matchOptions = {}) {
+ const url = new URL(opts.path, opts.origin);
+ const normalized = opts._normalizedHeaders || normalizeHeaders(opts.headers);
+ if (!opts._normalizedHeaders) {
+ opts._normalizedHeaders = normalized;
+ }
+ return {
+ method: opts.method || "GET",
+ url: matchOptions.matchQuery !== false ? url.toString() : `${url.origin}${url.pathname}`,
+ headers: filterHeadersForMatching(normalized, headerFilters, matchOptions),
+ body: matchOptions.matchBody !== false && opts.body ? String(opts.body) : ""
+ };
+ }
+ function filterHeadersForMatching(headers, headerFilters, matchOptions = {}) {
+ if (!headers || typeof headers !== "object") return {};
+ const {
+ caseSensitive = false
+ } = matchOptions;
+ const filtered = {};
+ const { ignore, exclude, match } = headerFilters;
+ for (const [key, value] of Object.entries(headers)) {
+ const headerKey = caseSensitive ? key : key.toLowerCase();
+ if (exclude.has(headerKey)) continue;
+ if (ignore.has(headerKey)) continue;
+ if (match.size !== 0) {
+ if (!match.has(headerKey)) continue;
+ }
+ filtered[headerKey] = value;
+ }
+ return filtered;
+ }
+ function filterHeadersForStorage(headers, headerFilters, matchOptions = {}) {
+ if (!headers || typeof headers !== "object") return {};
+ const {
+ caseSensitive = false
+ } = matchOptions;
+ const filtered = {};
+ const { exclude: excludeSet } = headerFilters;
+ for (const [key, value] of Object.entries(headers)) {
+ const headerKey = caseSensitive ? key : key.toLowerCase();
+ if (excludeSet.has(headerKey)) continue;
+ filtered[headerKey] = value;
+ }
+ return filtered;
+ }
+ function createRequestHash(formattedRequest) {
+ const parts = [
+ formattedRequest.method,
+ formattedRequest.url
+ ];
+ if (formattedRequest.headers && typeof formattedRequest.headers === "object") {
+ const headerKeys = Object.keys(formattedRequest.headers).sort();
+ for (const key of headerKeys) {
+ const values = Array.isArray(formattedRequest.headers[key]) ? formattedRequest.headers[key] : [formattedRequest.headers[key]];
+ parts.push(key);
+ for (const value of values.sort()) {
+ parts.push(String(value));
+ }
+ }
+ }
+ parts.push(formattedRequest.body);
+ const content = parts.join("|");
+ return hashId(content);
+ }
+ var SnapshotRecorder = class {
+ /** @type {NodeJS.Timeout | null} */
+ #flushTimeout;
+ /** @type {import('./snapshot-utils').IsUrlExcluded} */
+ #isUrlExcluded;
+ /** @type {Map} */
+ #snapshots = /* @__PURE__ */ new Map();
+ /** @type {string|undefined} */
+ #snapshotPath;
+ /** @type {number} */
+ #maxSnapshots = Infinity;
+ /** @type {boolean} */
+ #autoFlush = false;
+ /** @type {import('./snapshot-utils').HeaderFilters} */
+ #headerFilters;
+ /**
+ * Creates a new SnapshotRecorder instance
+ * @param {SnapshotRecorderOptions&SnapshotRecorderMatchOptions} [options={}] - Configuration options for the recorder
+ */
+ constructor(options = {}) {
+ this.#snapshotPath = options.snapshotPath;
+ this.#maxSnapshots = options.maxSnapshots || Infinity;
+ this.#autoFlush = options.autoFlush || false;
+ this.flushInterval = options.flushInterval || 3e4;
+ this._flushTimer = null;
+ this.matchOptions = {
+ matchHeaders: options.matchHeaders || [],
+ // empty means match all headers
+ ignoreHeaders: options.ignoreHeaders || [],
+ excludeHeaders: options.excludeHeaders || [],
+ matchBody: options.matchBody !== false,
+ // default: true
+ matchQuery: options.matchQuery !== false,
+ // default: true
+ caseSensitive: options.caseSensitive || false
+ };
+ this.#headerFilters = createHeaderFilters(this.matchOptions);
+ this.shouldRecord = options.shouldRecord || (() => true);
+ this.shouldPlayback = options.shouldPlayback || (() => true);
+ this.#isUrlExcluded = isUrlExcludedFactory(options.excludeUrls);
+ if (this.#autoFlush && this.#snapshotPath) {
+ this.#startAutoFlush();
+ }
+ }
+ /**
+ * Records a request-response interaction
+ * @param {SnapshotRequestOptions} requestOpts - Request options
+ * @param {SnapshotEntryResponse} response - Response data to record
+ * @return {Promise} - Resolves when the recording is complete
+ */
+ async record(requestOpts, response) {
+ if (!this.shouldRecord(requestOpts)) {
+ return;
+ }
+ const url = new URL(requestOpts.path, requestOpts.origin).toString();
+ if (this.#isUrlExcluded(url)) {
+ return;
+ }
+ const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request7);
+ const normalizedHeaders = normalizeHeaders(response.headers);
+ const responseData = {
+ statusCode: response.statusCode,
+ headers: filterHeadersForStorage(normalizedHeaders, this.#headerFilters, this.matchOptions),
+ body: Buffer.isBuffer(response.body) ? response.body.toString("base64") : Buffer.from(String(response.body || "")).toString("base64"),
+ trailers: response.trailers
+ };
+ if (this.#snapshots.size >= this.#maxSnapshots && !this.#snapshots.has(hash)) {
+ const oldestKey = this.#snapshots.keys().next().value;
+ this.#snapshots.delete(oldestKey);
+ }
+ const existingSnapshot = this.#snapshots.get(hash);
+ if (existingSnapshot && existingSnapshot.responses) {
+ existingSnapshot.responses.push(responseData);
+ existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString();
+ } else {
+ this.#snapshots.set(hash, {
+ request: request7,
+ responses: [responseData],
+ // Always store as array for consistency
+ callCount: 0,
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
+ });
+ }
+ if (this.#autoFlush && this.#snapshotPath) {
+ this.#scheduleFlush();
+ }
+ }
+ /**
+ * Finds a matching snapshot for the given request
+ * Returns the appropriate response based on call count for sequential responses
+ *
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {SnapshotEntry&Record<'response', SnapshotEntryResponse>|undefined} - Matching snapshot response or undefined if not found
+ */
+ findSnapshot(requestOpts) {
+ if (!this.shouldPlayback(requestOpts)) {
+ return void 0;
+ }
+ const url = new URL(requestOpts.path, requestOpts.origin).toString();
+ if (this.#isUrlExcluded(url)) {
+ return void 0;
+ }
+ const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request7);
+ const snapshot = this.#snapshots.get(hash);
+ if (!snapshot) return void 0;
+ const currentCallCount = snapshot.callCount || 0;
+ const responseIndex = Math.min(currentCallCount, snapshot.responses.length - 1);
+ snapshot.callCount = currentCallCount + 1;
+ return {
+ ...snapshot,
+ response: snapshot.responses[responseIndex]
+ };
+ }
+ /**
+ * Loads snapshots from file
+ * @param {string} [filePath] - Optional file path to load snapshots from
+ * @return {Promise} - Resolves when snapshots are loaded
+ */
+ async loadSnapshots(filePath) {
+ const path = filePath || this.#snapshotPath;
+ if (!path) {
+ throw new InvalidArgumentError("Snapshot path is required");
+ }
+ try {
+ const data = await readFile(resolve(path), "utf8");
+ const parsed = JSON.parse(data);
+ if (Array.isArray(parsed)) {
+ this.#snapshots.clear();
+ for (const { hash, snapshot } of parsed) {
+ this.#snapshots.set(hash, snapshot);
+ }
+ } else {
+ this.#snapshots = new Map(Object.entries(parsed));
+ }
+ } catch (error) {
+ if (error.code === "ENOENT") {
+ this.#snapshots.clear();
+ } else {
+ throw new UndiciError(`Failed to load snapshots from ${path}`, { cause: error });
+ }
+ }
+ }
+ /**
+ * Saves snapshots to file
+ *
+ * @param {string} [filePath] - Optional file path to save snapshots
+ * @returns {Promise} - Resolves when snapshots are saved
+ */
+ async saveSnapshots(filePath) {
+ const path = filePath || this.#snapshotPath;
+ if (!path) {
+ throw new InvalidArgumentError("Snapshot path is required");
+ }
+ const resolvedPath = resolve(path);
+ await mkdir(dirname(resolvedPath), { recursive: true });
+ const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
+ hash,
+ snapshot
+ }));
+ await writeFile(resolvedPath, JSON.stringify(data, null, 2), { flush: true });
+ }
+ /**
+ * Clears all recorded snapshots
+ * @returns {void}
+ */
+ clear() {
+ this.#snapshots.clear();
+ }
+ /**
+ * Gets all recorded snapshots
+ * @return {Array} - Array of all recorded snapshots
+ */
+ getSnapshots() {
+ return Array.from(this.#snapshots.values());
+ }
+ /**
+ * Gets snapshot count
+ * @return {number} - Number of recorded snapshots
+ */
+ size() {
+ return this.#snapshots.size;
+ }
+ /**
+ * Resets call counts for all snapshots (useful for test cleanup)
+ * @returns {void}
+ */
+ resetCallCounts() {
+ for (const snapshot of this.#snapshots.values()) {
+ snapshot.callCount = 0;
+ }
+ }
+ /**
+ * Deletes a specific snapshot by request options
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {boolean} - True if snapshot was deleted, false if not found
+ */
+ deleteSnapshot(requestOpts) {
+ const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request7);
+ return this.#snapshots.delete(hash);
+ }
+ /**
+ * Gets information about a specific snapshot
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {SnapshotInfo|null} - Snapshot information or null if not found
+ */
+ getSnapshotInfo(requestOpts) {
+ const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request7);
+ const snapshot = this.#snapshots.get(hash);
+ if (!snapshot) return null;
+ return {
+ hash,
+ request: snapshot.request,
+ responseCount: snapshot.responses ? snapshot.responses.length : snapshot.response ? 1 : 0,
+ // .response for legacy snapshots
+ callCount: snapshot.callCount || 0,
+ timestamp: snapshot.timestamp
+ };
+ }
+ /**
+ * Replaces all snapshots with new data (full replacement)
+ * @param {Array<{hash: string; snapshot: SnapshotEntry}>|Record} snapshotData - New snapshot data to replace existing ones
+ * @returns {void}
+ */
+ replaceSnapshots(snapshotData) {
+ this.#snapshots.clear();
+ if (Array.isArray(snapshotData)) {
+ for (const { hash, snapshot } of snapshotData) {
+ this.#snapshots.set(hash, snapshot);
+ }
+ } else if (snapshotData && typeof snapshotData === "object") {
+ this.#snapshots = new Map(Object.entries(snapshotData));
+ }
+ }
+ /**
+ * Starts the auto-flush timer
+ * @returns {void}
+ */
+ #startAutoFlush() {
+ return this.#scheduleFlush();
+ }
+ /**
+ * Stops the auto-flush timer
+ * @returns {void}
+ */
+ #stopAutoFlush() {
+ if (this.#flushTimeout) {
+ clearTimeout2(this.#flushTimeout);
+ this.saveSnapshots().catch(() => {
+ });
+ this.#flushTimeout = null;
+ }
+ }
+ /**
+ * Schedules a flush (debounced to avoid excessive writes)
+ */
+ #scheduleFlush() {
+ this.#flushTimeout = setTimeout2(() => {
+ this.saveSnapshots().catch(() => {
+ });
+ if (this.#autoFlush) {
+ this.#flushTimeout?.refresh();
+ } else {
+ this.#flushTimeout = null;
+ }
+ }, 1e3);
+ }
+ /**
+ * Cleanup method to stop timers
+ * @returns {void}
+ */
+ destroy() {
+ this.#stopAutoFlush();
+ if (this.#flushTimeout) {
+ clearTimeout2(this.#flushTimeout);
+ this.#flushTimeout = null;
+ }
+ }
+ /**
+ * Async close method that saves all recordings and performs cleanup
+ * @returns {Promise}
+ */
+ async close() {
+ if (this.#snapshotPath && this.#snapshots.size !== 0) {
+ await this.saveSnapshots();
+ }
+ this.destroy();
+ }
+ };
+ module2.exports = { SnapshotRecorder, formatRequestKey, createRequestHash, filterHeadersForMatching, filterHeadersForStorage, createHeaderFilters };
+ }
+});
+
+// node_modules/undici/lib/mock/snapshot-agent.js
+var require_snapshot_agent = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-agent.js"(exports2, module2) {
+ "use strict";
+ var Agent = require_agent2();
+ var MockAgent = require_mock_agent2();
+ var { SnapshotRecorder } = require_snapshot_recorder();
+ var WrapHandler = require_wrap_handler();
+ var { InvalidArgumentError, UndiciError } = require_errors2();
+ var { validateSnapshotMode } = require_snapshot_utils();
+ var kSnapshotRecorder = Symbol("kSnapshotRecorder");
+ var kSnapshotMode = Symbol("kSnapshotMode");
+ var kSnapshotPath = Symbol("kSnapshotPath");
+ var kSnapshotLoaded = Symbol("kSnapshotLoaded");
+ var kRealAgent = Symbol("kRealAgent");
+ var warningEmitted = false;
+ var SnapshotAgent = class extends MockAgent {
+ constructor(opts = {}) {
+ if (!warningEmitted) {
+ process.emitWarning(
+ "SnapshotAgent is experimental and subject to change",
+ "ExperimentalWarning"
+ );
+ warningEmitted = true;
+ }
+ const {
+ mode = "record",
+ snapshotPath = null,
+ ...mockAgentOpts
+ } = opts;
+ super(mockAgentOpts);
+ validateSnapshotMode(mode);
+ if ((mode === "playback" || mode === "update") && !snapshotPath) {
+ throw new InvalidArgumentError(`snapshotPath is required when mode is '${mode}'`);
+ }
+ this[kSnapshotMode] = mode;
+ this[kSnapshotPath] = snapshotPath;
+ this[kSnapshotRecorder] = new SnapshotRecorder({
+ snapshotPath: this[kSnapshotPath],
+ mode: this[kSnapshotMode],
+ maxSnapshots: opts.maxSnapshots,
+ autoFlush: opts.autoFlush,
+ flushInterval: opts.flushInterval,
+ matchHeaders: opts.matchHeaders,
+ ignoreHeaders: opts.ignoreHeaders,
+ excludeHeaders: opts.excludeHeaders,
+ matchBody: opts.matchBody,
+ matchQuery: opts.matchQuery,
+ caseSensitive: opts.caseSensitive,
+ shouldRecord: opts.shouldRecord,
+ shouldPlayback: opts.shouldPlayback,
+ excludeUrls: opts.excludeUrls
+ });
+ this[kSnapshotLoaded] = false;
+ if (this[kSnapshotMode] === "record" || this[kSnapshotMode] === "update") {
+ this[kRealAgent] = new Agent(opts);
+ }
+ if ((this[kSnapshotMode] === "playback" || this[kSnapshotMode] === "update") && this[kSnapshotPath]) {
+ this.loadSnapshots().catch(() => {
+ });
+ }
+ }
+ dispatch(opts, handler) {
+ handler = WrapHandler.wrap(handler);
+ const mode = this[kSnapshotMode];
+ if (mode === "playback" || mode === "update") {
+ if (!this[kSnapshotLoaded]) {
+ return this.#asyncDispatch(opts, handler);
+ }
+ const snapshot = this[kSnapshotRecorder].findSnapshot(opts);
+ if (snapshot) {
+ return this.#replaySnapshot(snapshot, handler);
+ } else if (mode === "update") {
+ return this.#recordAndReplay(opts, handler);
+ } else {
+ const error = new UndiciError(`No snapshot found for ${opts.method || "GET"} ${opts.path}`);
+ if (handler.onError) {
+ handler.onError(error);
+ return;
+ }
+ throw error;
+ }
+ } else if (mode === "record") {
+ return this.#recordAndReplay(opts, handler);
+ }
+ }
+ /**
+ * Async version of dispatch for when we need to load snapshots first
+ */
+ async #asyncDispatch(opts, handler) {
+ await this.loadSnapshots();
+ return this.dispatch(opts, handler);
+ }
+ /**
+ * Records a real request and replays the response
+ */
+ #recordAndReplay(opts, handler) {
+ const responseData = {
+ statusCode: null,
+ headers: {},
+ trailers: {},
+ body: []
+ };
+ const self = this;
+ const recordingHandler = {
+ onRequestStart(controller, context) {
+ return handler.onRequestStart(controller, { ...context, history: this.history });
+ },
+ onRequestUpgrade(controller, statusCode, headers, socket) {
+ return handler.onRequestUpgrade(controller, statusCode, headers, socket);
+ },
+ onResponseStart(controller, statusCode, headers, statusMessage) {
+ responseData.statusCode = statusCode;
+ responseData.headers = headers;
+ return handler.onResponseStart(controller, statusCode, headers, statusMessage);
+ },
+ onResponseData(controller, chunk) {
+ responseData.body.push(chunk);
+ return handler.onResponseData(controller, chunk);
+ },
+ onResponseEnd(controller, trailers) {
+ responseData.trailers = trailers;
+ const responseBody = Buffer.concat(responseData.body);
+ self[kSnapshotRecorder].record(opts, {
+ statusCode: responseData.statusCode,
+ headers: responseData.headers,
+ body: responseBody,
+ trailers: responseData.trailers
+ }).then(() => {
+ handler.onResponseEnd(controller, trailers);
+ }).catch((error) => {
+ handler.onResponseError(controller, error);
+ });
+ }
+ };
+ const agent = this[kRealAgent];
+ return agent.dispatch(opts, recordingHandler);
+ }
+ /**
+ * Replays a recorded response
+ *
+ * @param {Object} snapshot - The recorded snapshot to replay.
+ * @param {Object} handler - The handler to call with the response data.
+ * @returns {void}
+ */
+ #replaySnapshot(snapshot, handler) {
+ try {
+ const { response } = snapshot;
+ const controller = {
+ pause() {
+ },
+ resume() {
+ },
+ abort(reason) {
+ this.aborted = true;
+ this.reason = reason;
+ },
+ aborted: false,
+ paused: false
+ };
+ handler.onRequestStart(controller);
+ handler.onResponseStart(controller, response.statusCode, response.headers);
+ const body = Buffer.from(response.body, "base64");
+ handler.onResponseData(controller, body);
+ handler.onResponseEnd(controller, response.trailers);
+ } catch (error) {
+ handler.onError?.(error);
+ }
+ }
+ /**
+ * Loads snapshots from file
+ *
+ * @param {string} [filePath] - Optional file path to load snapshots from.
+ * @returns {Promise} - Resolves when snapshots are loaded.
+ */
+ async loadSnapshots(filePath) {
+ await this[kSnapshotRecorder].loadSnapshots(filePath || this[kSnapshotPath]);
+ this[kSnapshotLoaded] = true;
+ if (this[kSnapshotMode] === "playback") {
+ this.#setupMockInterceptors();
+ }
+ }
+ /**
+ * Saves snapshots to file
+ *
+ * @param {string} [filePath] - Optional file path to save snapshots to.
+ * @returns {Promise} - Resolves when snapshots are saved.
+ */
+ async saveSnapshots(filePath) {
+ return this[kSnapshotRecorder].saveSnapshots(filePath || this[kSnapshotPath]);
+ }
+ /**
+ * Sets up MockAgent interceptors based on recorded snapshots.
+ *
+ * This method creates MockAgent interceptors for each recorded snapshot,
+ * allowing the SnapshotAgent to fall back to MockAgent's standard intercept
+ * mechanism in playback mode. Each interceptor is configured to persist
+ * (remain active for multiple requests) and responds with the recorded
+ * response data.
+ *
+ * Called automatically when loading snapshots in playback mode.
+ *
+ * @returns {void}
+ */
+ #setupMockInterceptors() {
+ for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {
+ const { request: request7, responses, response } = snapshot;
+ const url = new URL(request7.url);
+ const mockPool = this.get(url.origin);
+ const responseData = responses ? responses[0] : response;
+ if (!responseData) continue;
+ mockPool.intercept({
+ path: url.pathname + url.search,
+ method: request7.method,
+ headers: request7.headers,
+ body: request7.body
+ }).reply(responseData.statusCode, responseData.body, {
+ headers: responseData.headers,
+ trailers: responseData.trailers
+ }).persist();
+ }
+ }
+ /**
+ * Gets the snapshot recorder
+ * @return {SnapshotRecorder} - The snapshot recorder instance
+ */
+ getRecorder() {
+ return this[kSnapshotRecorder];
+ }
+ /**
+ * Gets the current mode
+ * @return {import('./snapshot-utils').SnapshotMode} - The current snapshot mode
+ */
+ getMode() {
+ return this[kSnapshotMode];
+ }
+ /**
+ * Clears all snapshots
+ * @returns {void}
+ */
+ clearSnapshots() {
+ this[kSnapshotRecorder].clear();
+ }
+ /**
+ * Resets call counts for all snapshots (useful for test cleanup)
+ * @returns {void}
+ */
+ resetCallCounts() {
+ this[kSnapshotRecorder].resetCallCounts();
+ }
+ /**
+ * Deletes a specific snapshot by request options
+ * @param {import('./snapshot-recorder').SnapshotRequestOptions} requestOpts - Request options to identify the snapshot
+ * @return {Promise} - Returns true if the snapshot was deleted, false if not found
+ */
+ deleteSnapshot(requestOpts) {
+ return this[kSnapshotRecorder].deleteSnapshot(requestOpts);
+ }
+ /**
+ * Gets information about a specific snapshot
+ * @returns {import('./snapshot-recorder').SnapshotInfo|null} - Snapshot information or null if not found
+ */
+ getSnapshotInfo(requestOpts) {
+ return this[kSnapshotRecorder].getSnapshotInfo(requestOpts);
+ }
+ /**
+ * Replaces all snapshots with new data (full replacement)
+ * @param {Array<{hash: string; snapshot: import('./snapshot-recorder').SnapshotEntryshotEntry}>|Record} snapshotData - New snapshot data to replace existing snapshots
+ * @returns {void}
+ */
+ replaceSnapshots(snapshotData) {
+ this[kSnapshotRecorder].replaceSnapshots(snapshotData);
+ }
+ /**
+ * Closes the agent, saving snapshots and cleaning up resources.
+ *
+ * @returns {Promise}
+ */
+ async close() {
+ await this[kSnapshotRecorder].close();
+ await this[kRealAgent]?.close();
+ await super.close();
+ }
+ };
+ module2.exports = SnapshotAgent;
+ }
+});
+
// node_modules/undici/lib/global.js
var require_global4 = __commonJS({
"node_modules/undici/lib/global.js"(exports2, module2) {
@@ -32087,9 +33264,25 @@ var require_global4 = __commonJS({
function getGlobalDispatcher() {
return globalThis[globalDispatcher];
}
+ var installedExports = (
+ /** @type {const} */
+ [
+ "fetch",
+ "Headers",
+ "Response",
+ "Request",
+ "FormData",
+ "WebSocket",
+ "CloseEvent",
+ "ErrorEvent",
+ "MessageEvent",
+ "EventSource"
+ ]
+ );
module2.exports = {
setGlobalDispatcher,
- getGlobalDispatcher
+ getGlobalDispatcher,
+ installedExports
};
}
});
@@ -32188,7 +33381,8 @@ var require_redirect_handler = __commonJS({
}
this.dispatch = dispatch;
this.location = null;
- this.opts = { ...opts, maxRedirections: 0 };
+ const { maxRedirections: _, ...cleanOpts } = opts;
+ this.opts = cleanOpts;
this.maxRedirections = maxRedirections;
this.handler = handler;
this.history = [];
@@ -32244,10 +33438,15 @@ var require_redirect_handler = __commonJS({
}
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;
+ const redirectUrlString = `${origin}${path}`;
+ for (const historyUrl of this.history) {
+ if (historyUrl.toString() === redirectUrlString) {
+ throw new InvalidArgumentError(`Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);
+ }
+ }
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;
}
onResponseData(controller, chunk) {
@@ -32316,7 +33515,7 @@ var require_redirect = __commonJS({
if (maxRedirections == null || maxRedirections === 0) {
return dispatch(opts, handler);
}
- const dispatchOpts = { ...rest, maxRedirections: 0 };
+ const dispatchOpts = { ...rest };
const redirectHandler = new RedirectHandler(dispatch, maxRedirections, dispatchOpts, handler);
return dispatch(dispatchOpts, redirectHandler);
};
@@ -32477,7 +33676,7 @@ var require_dump = __commonJS({
if (this.#dumped) {
return;
}
- err = this.#controller.reason ?? err;
+ err = this.#controller?.reason ?? err;
super.onResponseError(controller, err);
}
onResponseData(controller, chunk) {
@@ -32858,21 +34057,26 @@ var require_cache2 = __commonJS({
"node_modules/undici/lib/util/cache.js"(exports2, module2) {
"use strict";
var {
- safeHTTPMethods
+ safeHTTPMethods,
+ pathHasQueryOrFragment
} = require_util8();
+ var { serializePathWithQuery } = require_util8();
function makeCacheKey(opts) {
if (!opts.origin) {
throw new Error("opts.origin is undefined");
}
- const headers = normaliseHeaders(opts);
+ let fullPath = opts.path || "/";
+ if (opts.query && !pathHasQueryOrFragment(opts.path)) {
+ fullPath = serializePathWithQuery(fullPath, opts.query);
+ }
return {
origin: opts.origin.toString(),
method: opts.method,
- path: opts.path,
- headers
+ path: fullPath,
+ headers: opts.headers
};
}
- function normaliseHeaders(opts) {
+ function normalizeHeaders(opts) {
let headers;
if (opts.headers == null) {
headers = {};
@@ -33089,7 +34293,7 @@ var require_cache2 = __commonJS({
}
module2.exports = {
makeCacheKey,
- normaliseHeaders,
+ normalizeHeaders,
assertCacheKey,
assertCacheValue,
parseCacheControlHeader,
@@ -33105,175 +34309,491 @@ var require_cache2 = __commonJS({
var require_date = __commonJS({
"node_modules/undici/lib/util/date.js"(exports2, module2) {
"use strict";
- var IMF_DAYS = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
- var IMF_SPACES = [4, 7, 11, 16, 25];
- var IMF_MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
- var IMF_COLONS = [19, 22];
- var ASCTIME_SPACES = [3, 7, 10, 19];
- var RFC850_DAYS = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
- function parseHttpDate(date, now) {
- date = date.toLowerCase();
+ function parseHttpDate(date) {
switch (date[3]) {
case ",":
return parseImfDate(date);
case " ":
return parseAscTimeDate(date);
default:
- return parseRfc850Date(date, now);
+ return parseRfc850Date(date);
}
}
function parseImfDate(date) {
- if (date.length !== 29) {
+ if (date.length !== 29 || date[4] !== " " || date[7] !== " " || date[11] !== " " || date[16] !== " " || date[19] !== ":" || date[22] !== ":" || date[25] !== " " || date[26] !== "G" || date[27] !== "M" || date[28] !== "T") {
return void 0;
}
- if (!date.endsWith("gmt")) {
+ let weekday = -1;
+ if (date[0] === "S" && date[1] === "u" && date[2] === "n") {
+ weekday = 0;
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n") {
+ weekday = 1;
+ } else if (date[0] === "T" && date[1] === "u" && date[2] === "e") {
+ weekday = 2;
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d") {
+ weekday = 3;
+ } else if (date[0] === "T" && date[1] === "h" && date[2] === "u") {
+ weekday = 4;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i") {
+ weekday = 5;
+ } else if (date[0] === "S" && date[1] === "a" && date[2] === "t") {
+ weekday = 6;
+ } else {
return void 0;
}
- for (const spaceInx of IMF_SPACES) {
- if (date[spaceInx] !== " ") {
+ let day = 0;
+ if (date[5] === "0") {
+ const code = date.charCodeAt(6);
+ if (code < 49 || code > 57) {
return void 0;
}
- }
- for (const colonIdx of IMF_COLONS) {
- if (date[colonIdx] !== ":") {
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(5);
+ if (code1 < 49 || code1 > 51) {
return void 0;
}
- }
- const dayName = date.substring(0, 3);
- if (!IMF_DAYS.includes(dayName)) {
- return void 0;
- }
- const dayString = date.substring(5, 7);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== "0") {
+ const code2 = date.charCodeAt(6);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let monthIdx = -1;
+ if (date[8] === "J" && date[9] === "a" && date[10] === "n") {
+ monthIdx = 0;
+ } else if (date[8] === "F" && date[9] === "e" && date[10] === "b") {
+ monthIdx = 1;
+ } else if (date[8] === "M" && date[9] === "a") {
+ if (date[10] === "r") {
+ monthIdx = 2;
+ } else if (date[10] === "y") {
+ monthIdx = 4;
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "J") {
+ if (date[9] === "a" && date[10] === "n") {
+ monthIdx = 0;
+ } else if (date[9] === "u") {
+ if (date[10] === "n") {
+ monthIdx = 5;
+ } else if (date[10] === "l") {
+ monthIdx = 6;
+ } else {
+ return void 0;
+ }
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "A") {
+ if (date[9] === "p" && date[10] === "r") {
+ monthIdx = 3;
+ } else if (date[9] === "u" && date[10] === "g") {
+ monthIdx = 7;
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "S" && date[9] === "e" && date[10] === "p") {
+ monthIdx = 8;
+ } else if (date[8] === "O" && date[9] === "c" && date[10] === "t") {
+ monthIdx = 9;
+ } else if (date[8] === "N" && date[9] === "o" && date[10] === "v") {
+ monthIdx = 10;
+ } else if (date[8] === "D" && date[9] === "e" && date[10] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const month = date.substring(8, 11);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ const yearDigit1 = date.charCodeAt(12);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- const year = Number.parseInt(date.substring(12, 16));
- if (isNaN(year)) {
+ const yearDigit2 = date.charCodeAt(13);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const hourString = date.substring(17, 19);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
+ const yearDigit3 = date.charCodeAt(14);
+ if (yearDigit3 < 48 || yearDigit3 > 57) {
return void 0;
}
- const minuteString = date.substring(20, 22);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
+ const yearDigit4 = date.charCodeAt(15);
+ if (yearDigit4 < 48 || yearDigit4 > 57) {
return void 0;
}
- const secondString = date.substring(23, 25);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48);
+ let hour = 0;
+ if (date[17] === "0") {
+ const code = date.charCodeAt(18);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
+ } else {
+ const code1 = date.charCodeAt(17);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(18);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
- }
- function parseAscTimeDate(date) {
- if (date.length !== 24) {
- return void 0;
+ let minute = 0;
+ if (date[20] === "0") {
+ const code = date.charCodeAt(21);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(20);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(21);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
}
- for (const spaceIdx of ASCTIME_SPACES) {
- if (date[spaceIdx] !== " ") {
+ let second = 0;
+ if (date[23] === "0") {
+ const code = date.charCodeAt(24);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(23);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(24);
+ if (code2 < 48 || code2 > 57) {
return void 0;
}
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- const dayName = date.substring(0, 3);
- if (!IMF_DAYS.includes(dayName)) {
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
+ }
+ function parseAscTimeDate(date) {
+ if (date.length !== 24 || date[7] !== " " || date[10] !== " " || date[19] !== " ") {
return void 0;
}
- const month = date.substring(4, 7);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ let weekday = -1;
+ if (date[0] === "S" && date[1] === "u" && date[2] === "n") {
+ weekday = 0;
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n") {
+ weekday = 1;
+ } else if (date[0] === "T" && date[1] === "u" && date[2] === "e") {
+ weekday = 2;
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d") {
+ weekday = 3;
+ } else if (date[0] === "T" && date[1] === "h" && date[2] === "u") {
+ weekday = 4;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i") {
+ weekday = 5;
+ } else if (date[0] === "S" && date[1] === "a" && date[2] === "t") {
+ weekday = 6;
+ } else {
return void 0;
}
- const dayString = date.substring(8, 10);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== " ") {
+ let monthIdx = -1;
+ if (date[4] === "J" && date[5] === "a" && date[6] === "n") {
+ monthIdx = 0;
+ } else if (date[4] === "F" && date[5] === "e" && date[6] === "b") {
+ monthIdx = 1;
+ } else if (date[4] === "M" && date[5] === "a") {
+ if (date[6] === "r") {
+ monthIdx = 2;
+ } else if (date[6] === "y") {
+ monthIdx = 4;
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "J") {
+ if (date[5] === "a" && date[6] === "n") {
+ monthIdx = 0;
+ } else if (date[5] === "u") {
+ if (date[6] === "n") {
+ monthIdx = 5;
+ } else if (date[6] === "l") {
+ monthIdx = 6;
+ } else {
+ return void 0;
+ }
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "A") {
+ if (date[5] === "p" && date[6] === "r") {
+ monthIdx = 3;
+ } else if (date[5] === "u" && date[6] === "g") {
+ monthIdx = 7;
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "S" && date[5] === "e" && date[6] === "p") {
+ monthIdx = 8;
+ } else if (date[4] === "O" && date[5] === "c" && date[6] === "t") {
+ monthIdx = 9;
+ } else if (date[4] === "N" && date[5] === "o" && date[6] === "v") {
+ monthIdx = 10;
+ } else if (date[4] === "D" && date[5] === "e" && date[6] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const hourString = date.substring(11, 13);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
- return void 0;
+ let day = 0;
+ if (date[8] === " ") {
+ const code = date.charCodeAt(9);
+ if (code < 49 || code > 57) {
+ return void 0;
+ }
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(8);
+ if (code1 < 49 || code1 > 51) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(9);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
}
- const minuteString = date.substring(14, 16);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
- return void 0;
+ let hour = 0;
+ if (date[11] === "0") {
+ const code = date.charCodeAt(12);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
+ } else {
+ const code1 = date.charCodeAt(11);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(12);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- const secondString = date.substring(17, 19);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ let minute = 0;
+ if (date[14] === "0") {
+ const code = date.charCodeAt(15);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(14);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(15);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let second = 0;
+ if (date[17] === "0") {
+ const code = date.charCodeAt(18);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(17);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(18);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- const year = Number.parseInt(date.substring(20, 24));
- if (isNaN(year)) {
+ const yearDigit1 = date.charCodeAt(20);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
- }
- function parseRfc850Date(date, now = /* @__PURE__ */ new Date()) {
- if (!date.endsWith("gmt")) {
+ const yearDigit2 = date.charCodeAt(21);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const commaIndex = date.indexOf(",");
- if (commaIndex === -1) {
+ const yearDigit3 = date.charCodeAt(22);
+ if (yearDigit3 < 48 || yearDigit3 > 57) {
return void 0;
}
- if (date.length - commaIndex - 1 !== 23) {
+ const yearDigit4 = date.charCodeAt(23);
+ if (yearDigit4 < 48 || yearDigit4 > 57) {
return void 0;
}
- const dayName = date.substring(0, commaIndex);
- if (!RFC850_DAYS.includes(dayName)) {
+ const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48);
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
+ }
+ function parseRfc850Date(date) {
+ let commaIndex = -1;
+ let weekday = -1;
+ if (date[0] === "S") {
+ if (date[1] === "u" && date[2] === "n" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 0;
+ commaIndex = 6;
+ } else if (date[1] === "a" && date[2] === "t" && date[3] === "u" && date[4] === "r" && date[5] === "d" && date[6] === "a" && date[7] === "y") {
+ weekday = 6;
+ commaIndex = 8;
+ }
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 1;
+ commaIndex = 6;
+ } else if (date[0] === "T") {
+ if (date[1] === "u" && date[2] === "e" && date[3] === "s" && date[4] === "d" && date[5] === "a" && date[6] === "y") {
+ weekday = 2;
+ commaIndex = 7;
+ } else if (date[1] === "h" && date[2] === "u" && date[3] === "r" && date[4] === "s" && date[5] === "d" && date[6] === "a" && date[7] === "y") {
+ weekday = 4;
+ commaIndex = 8;
+ }
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d" && date[3] === "n" && date[4] === "e" && date[5] === "s" && date[6] === "d" && date[7] === "a" && date[8] === "y") {
+ weekday = 3;
+ commaIndex = 9;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 5;
+ commaIndex = 6;
+ } else {
return void 0;
}
- if (date[commaIndex + 1] !== " " || date[commaIndex + 4] !== "-" || date[commaIndex + 8] !== "-" || date[commaIndex + 11] !== " " || date[commaIndex + 14] !== ":" || date[commaIndex + 17] !== ":" || date[commaIndex + 20] !== " ") {
+ if (date[commaIndex] !== "," || date.length - commaIndex - 1 !== 23 || date[commaIndex + 1] !== " " || date[commaIndex + 4] !== "-" || date[commaIndex + 8] !== "-" || date[commaIndex + 11] !== " " || date[commaIndex + 14] !== ":" || date[commaIndex + 17] !== ":" || date[commaIndex + 20] !== " " || date[commaIndex + 21] !== "G" || date[commaIndex + 22] !== "M" || date[commaIndex + 23] !== "T") {
return void 0;
}
- const dayString = date.substring(commaIndex + 2, commaIndex + 4);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== "0") {
+ let day = 0;
+ if (date[commaIndex + 2] === "0") {
+ const code = date.charCodeAt(commaIndex + 3);
+ if (code < 49 || code > 57) {
+ return void 0;
+ }
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 2);
+ if (code1 < 49 || code1 > 51) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 3);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let monthIdx = -1;
+ if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "n") {
+ monthIdx = 0;
+ } else if (date[commaIndex + 5] === "F" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "b") {
+ monthIdx = 1;
+ } else if (date[commaIndex + 5] === "M" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "r") {
+ monthIdx = 2;
+ } else if (date[commaIndex + 5] === "A" && date[commaIndex + 6] === "p" && date[commaIndex + 7] === "r") {
+ monthIdx = 3;
+ } else if (date[commaIndex + 5] === "M" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "y") {
+ monthIdx = 4;
+ } else if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "n") {
+ monthIdx = 5;
+ } else if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "l") {
+ monthIdx = 6;
+ } else if (date[commaIndex + 5] === "A" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "g") {
+ monthIdx = 7;
+ } else if (date[commaIndex + 5] === "S" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "p") {
+ monthIdx = 8;
+ } else if (date[commaIndex + 5] === "O" && date[commaIndex + 6] === "c" && date[commaIndex + 7] === "t") {
+ monthIdx = 9;
+ } else if (date[commaIndex + 5] === "N" && date[commaIndex + 6] === "o" && date[commaIndex + 7] === "v") {
+ monthIdx = 10;
+ } else if (date[commaIndex + 5] === "D" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const month = date.substring(commaIndex + 5, commaIndex + 8);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ const yearDigit1 = date.charCodeAt(commaIndex + 9);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- let year = Number.parseInt(date.substring(commaIndex + 9, commaIndex + 11));
- if (isNaN(year)) {
+ const yearDigit2 = date.charCodeAt(commaIndex + 10);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const currentYear = now.getUTCFullYear();
- const currentDecade = currentYear % 100;
- const currentCentury = Math.floor(currentYear / 100);
- if (year > currentDecade && year - currentDecade >= 50) {
- year += (currentCentury - 1) * 100;
+ let year = (yearDigit1 - 48) * 10 + (yearDigit2 - 48);
+ year += year < 70 ? 2e3 : 1900;
+ let hour = 0;
+ if (date[commaIndex + 12] === "0") {
+ const code = date.charCodeAt(commaIndex + 13);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
} else {
- year += currentCentury * 100;
- }
- const hourString = date.substring(commaIndex + 12, commaIndex + 14);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
- return void 0;
+ const code1 = date.charCodeAt(commaIndex + 12);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 13);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- const minuteString = date.substring(commaIndex + 15, commaIndex + 17);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
- return void 0;
+ let minute = 0;
+ if (date[commaIndex + 15] === "0") {
+ const code = date.charCodeAt(commaIndex + 16);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 15);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 16);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
}
- const secondString = date.substring(commaIndex + 18, commaIndex + 20);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ let second = 0;
+ if (date[commaIndex + 18] === "0") {
+ const code = date.charCodeAt(commaIndex + 19);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 18);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 19);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
}
module2.exports = {
parseHttpDate
@@ -33308,6 +34828,10 @@ var require_cache_handler = __commonJS({
414,
501
];
+ var NOT_UNDERSTOOD_STATUS_CODES = [
+ 206,
+ 304
+ ];
var MAX_RESPONSE_AGE = 2147483647e3;
var CacheHandler = class {
/**
@@ -33453,7 +34977,11 @@ var require_cache_handler = __commonJS({
}
};
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives) {
- if (statusCode !== 200 && statusCode !== 307) {
+ if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {
+ return false;
+ }
+ if (!HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode) && !resHeaders["expires"] && !cacheControlDirectives.public && cacheControlDirectives["max-age"] === void 0 && // RFC 9111: a private response directive, if the cache is not shared
+ !(cacheControlDirectives.private && cacheType === "private") && !(cacheControlDirectives["s-maxage"] !== void 0 && cacheType === "shared")) {
return false;
}
if (cacheControlDirectives["no-store"]) {
@@ -33587,18 +35115,23 @@ var require_memory_cache_store = __commonJS({
"node_modules/undici/lib/cache/memory-cache-store.js"(exports2, module2) {
"use strict";
var { Writable } = require("node:stream");
+ var { EventEmitter } = require("node:events");
var { assertCacheKey, assertCacheValue } = require_cache2();
- var MemoryCacheStore = class {
- #maxCount = Infinity;
- #maxSize = Infinity;
- #maxEntrySize = Infinity;
+ var MemoryCacheStore = class extends EventEmitter {
+ #maxCount = 1024;
+ #maxSize = 104857600;
+ // 100MB
+ #maxEntrySize = 5242880;
+ // 5MB
#size = 0;
#count = 0;
#entries = /* @__PURE__ */ new Map();
+ #hasEmittedMaxSizeEvent = false;
/**
* @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts]
*/
constructor(opts) {
+ super();
if (opts) {
if (typeof opts !== "object") {
throw new TypeError("MemoryCacheStore options must be an object");
@@ -33623,6 +35156,20 @@ var require_memory_cache_store = __commonJS({
}
}
}
+ /**
+ * Get the current size of the cache in bytes
+ * @returns {number} The current size of the cache in bytes
+ */
+ get size() {
+ return this.#size;
+ }
+ /**
+ * Check if the cache is full (either max size or max count reached)
+ * @returns {boolean} True if the cache is full, false otherwise
+ */
+ isFull() {
+ return this.#size >= this.#maxSize || this.#count >= this.#maxCount;
+ }
/**
* @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req
* @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined}
@@ -33631,12 +35178,8 @@ var require_memory_cache_store = __commonJS({
assertCacheKey(key);
const topLevelKey = `${key.origin}:${key.path}`;
const now = Date.now();
- const entry = this.#entries.get(topLevelKey)?.find((entry2) => entry2.deleteAt > now && entry2.method === key.method && (entry2.vary == null || Object.keys(entry2.vary).every((headerName) => {
- if (entry2.vary[headerName] === null) {
- return key.headers[headerName] === void 0;
- }
- return entry2.vary[headerName] === key.headers[headerName];
- })));
+ const entries = this.#entries.get(topLevelKey);
+ const entry = entries ? findEntry(key, entries, now) : null;
return entry == null ? void 0 : {
statusMessage: entry.statusMessage,
statusCode: entry.statusCode,
@@ -33680,10 +35223,26 @@ var require_memory_cache_store = __commonJS({
entries = [];
store.#entries.set(topLevelKey, entries);
}
- entries.push(entry);
+ const previousEntry = findEntry(key, entries, Date.now());
+ if (previousEntry) {
+ const index = entries.indexOf(previousEntry);
+ entries.splice(index, 1, entry);
+ store.#size -= previousEntry.size;
+ } else {
+ entries.push(entry);
+ store.#count += 1;
+ }
store.#size += entry.size;
- store.#count += 1;
if (store.#size > store.#maxSize || store.#count > store.#maxCount) {
+ if (!store.#hasEmittedMaxSizeEvent) {
+ store.emit("maxSizeExceeded", {
+ size: store.#size,
+ maxSize: store.#maxSize,
+ count: store.#count,
+ maxCount: store.#maxCount
+ });
+ store.#hasEmittedMaxSizeEvent = true;
+ }
for (const [key2, entries2] of store.#entries) {
for (const entry2 of entries2.splice(0, entries2.length / 2)) {
store.#size -= entry2.size;
@@ -33693,6 +35252,9 @@ var require_memory_cache_store = __commonJS({
store.#entries.delete(key2);
}
}
+ if (store.#size < store.#maxSize && store.#count < store.#maxCount) {
+ store.#hasEmittedMaxSizeEvent = false;
+ }
}
callback(null);
}
@@ -33713,6 +35275,14 @@ var require_memory_cache_store = __commonJS({
this.#entries.delete(topLevelKey);
}
};
+ function findEntry(key, entries, now) {
+ return entries.find((entry) => entry.deleteAt > now && entry.method === key.method && (entry.vary == null || Object.keys(entry.vary).every((headerName) => {
+ if (entry.vary[headerName] === null) {
+ return key.headers[headerName] === void 0;
+ }
+ return entry.vary[headerName] === key.headers[headerName];
+ })));
+ }
module2.exports = MemoryCacheStore;
}
});
@@ -33814,12 +35384,15 @@ var require_cache3 = __commonJS({
var CacheHandler = require_cache_handler();
var MemoryCacheStore = require_memory_cache_store();
var CacheRevalidationHandler = require_cache_revalidation_handler();
- var { assertCacheStore, assertCacheMethods, makeCacheKey, normaliseHeaders, parseCacheControlHeader } = require_cache2();
+ var { assertCacheStore, assertCacheMethods, makeCacheKey, normalizeHeaders, parseCacheControlHeader } = require_cache2();
var { AbortError: AbortError2 } = require_errors2();
function needsRevalidation(result, cacheControlDirectives) {
if (cacheControlDirectives?.["no-cache"]) {
return true;
}
+ if (result.cacheControlDirectives?.["no-cache"] && !Array.isArray(result.cacheControlDirectives["no-cache"])) {
+ return true;
+ }
const now = Date.now();
if (now > result.staleAt) {
if (cacheControlDirectives?.["max-stale"]) {
@@ -33835,6 +35408,15 @@ var require_cache3 = __commonJS({
}
return false;
}
+ function withinStaleWhileRevalidateWindow(result) {
+ const staleWhileRevalidate = result.cacheControlDirectives?.["stale-while-revalidate"];
+ if (!staleWhileRevalidate) {
+ return false;
+ }
+ const now = Date.now();
+ const staleWhileRevalidateExpiry = result.staleAt + staleWhileRevalidate * 1e3;
+ return now <= staleWhileRevalidateExpiry;
+ }
function handleUncachedResponse(dispatch, globalOpts, cacheKey, handler, opts, reqCacheControl) {
if (reqCacheControl?.["only-if-cached"]) {
let aborted = false;
@@ -33936,13 +35518,53 @@ var require_cache3 = __commonJS({
if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) {
return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler));
}
+ if (withinStaleWhileRevalidateWindow(result)) {
+ sendCachedValue(handler, opts, result, age, null, true);
+ queueMicrotask(() => {
+ let headers2 = {
+ ...opts.headers,
+ "if-modified-since": new Date(result.cachedAt).toUTCString()
+ };
+ if (result.etag) {
+ headers2["if-none-match"] = result.etag;
+ }
+ if (result.vary) {
+ headers2 = {
+ ...headers2,
+ ...result.vary
+ };
+ }
+ dispatch(
+ {
+ ...opts,
+ headers: headers2
+ },
+ new CacheHandler(globalOpts, cacheKey, {
+ // Silent handler that just updates the cache
+ onRequestStart() {
+ },
+ onRequestUpgrade() {
+ },
+ onResponseStart() {
+ },
+ onResponseData() {
+ },
+ onResponseEnd() {
+ },
+ onResponseError() {
+ }
+ })
+ );
+ });
+ return true;
+ }
let withinStaleIfErrorThreshold = false;
const staleIfErrorExpiry = result.cacheControlDirectives["stale-if-error"] ?? reqCacheControl?.["stale-if-error"];
if (staleIfErrorExpiry) {
withinStaleIfErrorThreshold = now < result.staleAt + staleIfErrorExpiry * 1e3;
}
let headers = {
- ...normaliseHeaders(opts),
+ ...opts.headers,
"if-modified-since": new Date(result.cachedAt).toUTCString()
};
if (result.etag) {
@@ -33992,10 +35614,10 @@ var require_cache3 = __commonJS({
assertCacheStore(store, "opts.store");
assertCacheMethods(methods, "opts.methods");
if (typeof cacheByDefault !== "undefined" && typeof cacheByDefault !== "number") {
- throw new TypeError(`exepcted opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`);
+ throw new TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`);
}
if (typeof type !== "undefined" && type !== "shared" && type !== "private") {
- throw new TypeError(`exepcted opts.type to be shared, private, or undefined, got ${typeof type}`);
+ throw new TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof type}`);
}
const globalOpts = {
store,
@@ -34009,6 +35631,10 @@ var require_cache3 = __commonJS({
if (!opts2.origin || safeMethodsToNotCache.includes(opts2.method)) {
return dispatch(opts2, handler);
}
+ opts2 = {
+ ...opts2,
+ headers: normalizeHeaders(opts2)
+ };
const reqCacheControl = opts2.headers?.["cache-control"] ? parseCacheControlHeader(opts2.headers["cache-control"]) : void 0;
if (reqCacheControl?.["no-store"]) {
return dispatch(opts2, handler);
@@ -34045,11 +35671,222 @@ var require_cache3 = __commonJS({
}
});
+// node_modules/undici/lib/interceptor/decompress.js
+var require_decompress = __commonJS({
+ "node_modules/undici/lib/interceptor/decompress.js"(exports2, module2) {
+ "use strict";
+ var { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require("node:zlib");
+ var { pipeline } = require("node:stream");
+ var DecoratorHandler = require_decorator_handler();
+ var supportedEncodings = {
+ gzip: createGunzip,
+ "x-gzip": createGunzip,
+ br: createBrotliDecompress,
+ deflate: createInflate,
+ compress: createInflate,
+ "x-compress": createInflate,
+ ...createZstdDecompress ? { zstd: createZstdDecompress } : {}
+ };
+ var defaultSkipStatusCodes = (
+ /** @type {const} */
+ [204, 304]
+ );
+ var warningEmitted = (
+ /** @type {boolean} */
+ false
+ );
+ var DecompressHandler = class extends DecoratorHandler {
+ /** @type {Transform[]} */
+ #decompressors = [];
+ /** @type {NodeJS.WritableStream&NodeJS.ReadableStream|null} */
+ #pipelineStream;
+ /** @type {Readonly} */
+ #skipStatusCodes;
+ /** @type {boolean} */
+ #skipErrorResponses;
+ constructor(handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) {
+ super(handler);
+ this.#skipStatusCodes = skipStatusCodes;
+ this.#skipErrorResponses = skipErrorResponses;
+ }
+ /**
+ * Determines if decompression should be skipped based on encoding and status code
+ * @param {string} contentEncoding - Content-Encoding header value
+ * @param {number} statusCode - HTTP status code of the response
+ * @returns {boolean} - True if decompression should be skipped
+ */
+ #shouldSkipDecompression(contentEncoding, statusCode) {
+ if (!contentEncoding || statusCode < 200) return true;
+ if (this.#skipStatusCodes.includes(statusCode)) return true;
+ if (this.#skipErrorResponses && statusCode >= 400) return true;
+ return false;
+ }
+ /**
+ * Creates a chain of decompressors for multiple content encodings
+ *
+ * @param {string} encodings - Comma-separated list of content encodings
+ * @returns {Array} - Array of decompressor streams
+ */
+ #createDecompressionChain(encodings) {
+ const parts = encodings.split(",");
+ const decompressors = [];
+ for (let i = parts.length - 1; i >= 0; i--) {
+ const encoding = parts[i].trim();
+ if (!encoding) continue;
+ if (!supportedEncodings[encoding]) {
+ decompressors.length = 0;
+ return decompressors;
+ }
+ decompressors.push(supportedEncodings[encoding]());
+ }
+ return decompressors;
+ }
+ /**
+ * Sets up event handlers for a decompressor stream using readable events
+ * @param {DecompressorStream} decompressor - The decompressor stream
+ * @param {Controller} controller - The controller to coordinate with
+ * @returns {void}
+ */
+ #setupDecompressorEvents(decompressor, controller) {
+ decompressor.on("readable", () => {
+ let chunk;
+ while ((chunk = decompressor.read()) !== null) {
+ const result = super.onResponseData(controller, chunk);
+ if (result === false) {
+ break;
+ }
+ }
+ });
+ decompressor.on("error", (error) => {
+ super.onResponseError(controller, error);
+ });
+ }
+ /**
+ * Sets up event handling for a single decompressor
+ * @param {Controller} controller - The controller to handle events
+ * @returns {void}
+ */
+ #setupSingleDecompressor(controller) {
+ const decompressor = this.#decompressors[0];
+ this.#setupDecompressorEvents(decompressor, controller);
+ decompressor.on("end", () => {
+ super.onResponseEnd(controller, {});
+ });
+ }
+ /**
+ * Sets up event handling for multiple chained decompressors using pipeline
+ * @param {Controller} controller - The controller to handle events
+ * @returns {void}
+ */
+ #setupMultipleDecompressors(controller) {
+ const lastDecompressor = this.#decompressors[this.#decompressors.length - 1];
+ this.#setupDecompressorEvents(lastDecompressor, controller);
+ this.#pipelineStream = pipeline(this.#decompressors, (err) => {
+ if (err) {
+ super.onResponseError(controller, err);
+ return;
+ }
+ super.onResponseEnd(controller, {});
+ });
+ }
+ /**
+ * Cleans up decompressor references to prevent memory leaks
+ * @returns {void}
+ */
+ #cleanupDecompressors() {
+ this.#decompressors.length = 0;
+ this.#pipelineStream = null;
+ }
+ /**
+ * @param {Controller} controller
+ * @param {number} statusCode
+ * @param {Record} headers
+ * @param {string} statusMessage
+ * @returns {void}
+ */
+ onResponseStart(controller, statusCode, headers, statusMessage) {
+ const contentEncoding = headers["content-encoding"];
+ if (this.#shouldSkipDecompression(contentEncoding, statusCode)) {
+ return super.onResponseStart(controller, statusCode, headers, statusMessage);
+ }
+ const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase());
+ if (decompressors.length === 0) {
+ this.#cleanupDecompressors();
+ return super.onResponseStart(controller, statusCode, headers, statusMessage);
+ }
+ this.#decompressors = decompressors;
+ const { "content-encoding": _, "content-length": __, ...newHeaders } = headers;
+ if (this.#decompressors.length === 1) {
+ this.#setupSingleDecompressor(controller);
+ } else {
+ this.#setupMultipleDecompressors(controller);
+ }
+ super.onResponseStart(controller, statusCode, newHeaders, statusMessage);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Buffer} chunk
+ * @returns {void}
+ */
+ onResponseData(controller, chunk) {
+ if (this.#decompressors.length > 0) {
+ this.#decompressors[0].write(chunk);
+ return;
+ }
+ super.onResponseData(controller, chunk);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Record | undefined} trailers
+ * @returns {void}
+ */
+ onResponseEnd(controller, trailers) {
+ if (this.#decompressors.length > 0) {
+ this.#decompressors[0].end();
+ this.#cleanupDecompressors();
+ return;
+ }
+ super.onResponseEnd(controller, trailers);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Error} err
+ * @returns {void}
+ */
+ onResponseError(controller, err) {
+ if (this.#decompressors.length > 0) {
+ for (const decompressor of this.#decompressors) {
+ decompressor.destroy(err);
+ }
+ this.#cleanupDecompressors();
+ }
+ super.onResponseError(controller, err);
+ }
+ };
+ function createDecompressInterceptor(options = {}) {
+ if (!warningEmitted) {
+ process.emitWarning(
+ "DecompressInterceptor is experimental and subject to change",
+ "ExperimentalWarning"
+ );
+ warningEmitted = true;
+ }
+ return (dispatch) => {
+ return (opts, handler) => {
+ const decompressHandler = new DecompressHandler(handler, options);
+ return dispatch(opts, decompressHandler);
+ };
+ };
+ }
+ module2.exports = createDecompressInterceptor;
+ }
+});
+
// node_modules/undici/lib/cache/sqlite-cache-store.js
var require_sqlite_cache_store = __commonJS({
"node_modules/undici/lib/cache/sqlite-cache-store.js"(exports2, module2) {
"use strict";
- var { Writable } = require("stream");
+ var { Writable } = require("node:stream");
var { assertCacheKey, assertCacheValue } = require_cache2();
var DatabaseSync;
var VERSION17 = 3;
@@ -34870,7 +36707,7 @@ var require_response2 = __commonJS({
"node_modules/undici/lib/web/fetch/response.js"(exports2, module2) {
"use strict";
var { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers2();
- var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body2();
+ var { extractBody, cloneBody, mixinBody, streamRegistry, bodyUnusable } = require_body2();
var util = require_util8();
var nodeUtil = require("node:util");
var { kEnumerableProperty } = util;
@@ -34891,7 +36728,6 @@ var require_response2 = __commonJS({
var { URLSerializer } = require_data_url();
var { kConstruct } = require_symbols6();
var assert = require("node:assert");
- var { types } = require("node:util");
var textEncoder = new TextEncoder("utf-8");
var Response = class _Response {
/** @type {Headers} */
@@ -34943,7 +36779,7 @@ var require_response2 = __commonJS({
return;
}
if (body !== null) {
- body = webidl.converters.BodyInit(body);
+ body = webidl.converters.BodyInit(body, "Response", "body");
}
init = webidl.converters.ResponseInit(init);
this.#state = makeResponse({});
@@ -35015,6 +36851,9 @@ var require_response2 = __commonJS({
});
}
const clonedResponse = cloneResponse(this.#state);
+ if (this.#state.body?.stream) {
+ streamRegistry.register(this, new WeakRef(this.#state.body.stream));
+ }
return fromInnerResponse(clonedResponse, getHeadersGuard(this.#headers));
}
[nodeUtil.inspect.custom](depth, options) {
@@ -35098,7 +36937,7 @@ var require_response2 = __commonJS({
}
const newResponse = makeResponse({ ...response, body: null });
if (response.body != null) {
- newResponse.body = cloneBody(newResponse, response.body);
+ newResponse.body = cloneBody(response.body);
}
return newResponse;
}
@@ -35223,7 +37062,7 @@ var require_response2 = __commonJS({
setResponseHeaders(response, headers);
setHeadersList(headers, innerResponse.headersList);
setHeadersGuard(headers, guard);
- if (hasFinalizationRegistry && innerResponse.body?.stream) {
+ if (innerResponse.body?.stream) {
streamRegistry.register(response, new WeakRef(innerResponse.body.stream));
}
return response;
@@ -35235,7 +37074,7 @@ var require_response2 = __commonJS({
if (webidl.is.Blob(V)) {
return V;
}
- if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
+ if (webidl.is.BufferSource(V)) {
return V;
}
if (webidl.is.FormData(V)) {
@@ -35286,55 +37125,12 @@ var require_response2 = __commonJS({
}
});
-// node_modules/undici/lib/web/fetch/dispatcher-weakref.js
-var require_dispatcher_weakref2 = __commonJS({
- "node_modules/undici/lib/web/fetch/dispatcher-weakref.js"(exports2, module2) {
- "use strict";
- var { kConnected, kSize } = require_symbols6();
- 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);
- }
- });
- }
- }
- 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_request4 = __commonJS({
"node_modules/undici/lib/web/fetch/request.js"(exports2, module2) {
"use strict";
var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body2();
var { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers2();
- var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref2()();
var util = require_util8();
var nodeUtil = require("node:util");
var {
@@ -35359,7 +37155,7 @@ var require_request4 = __commonJS({
var assert = require("node:assert");
var { getMaxListeners, setMaxListeners, defaultMaxListeners } = require("node:events");
var kAbortController = Symbol("abortController");
- var requestFinalizer = new FinalizationRegistry2(({ signal, abort }) => {
+ var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
signal.removeEventListener("abort", abort);
});
var dependentControllerMap = /* @__PURE__ */ new WeakMap();
@@ -35410,8 +37206,8 @@ var require_request4 = __commonJS({
}
const prefix = "Request constructor";
webidl.argumentLengthCheck(arguments, 1, prefix);
- input = webidl.converters.RequestInfo(input, prefix, "input");
- init = webidl.converters.RequestInit(init, prefix, "init");
+ input = webidl.converters.RequestInfo(input);
+ init = webidl.converters.RequestInit(init);
let request7 = null;
let fallbackMode = null;
const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl;
@@ -35933,7 +37729,7 @@ var require_request4 = __commonJS({
function cloneRequest(request7) {
const newRequest = makeRequest({ ...request7, body: null });
if (request7.body != null) {
- newRequest.body = cloneBody(newRequest, request7.body);
+ newRequest.body = cloneBody(request7.body);
}
return newRequest;
}
@@ -35975,7 +37771,7 @@ var require_request4 = __commonJS({
}
});
webidl.is.Request = webidl.util.MakeTypeAssertion(Request);
- webidl.converters.RequestInfo = function(V, prefix, argument) {
+ webidl.converters.RequestInfo = function(V) {
if (typeof V === "string") {
return webidl.converters.USVString(V);
}
@@ -36077,6 +37873,144 @@ var require_request4 = __commonJS({
}
});
+// node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js
+var require_subresource_integrity = __commonJS({
+ "node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js"(exports2, module2) {
+ "use strict";
+ var assert = require("node:assert");
+ var validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
+ var crypto;
+ try {
+ crypto = require("node:crypto");
+ const cryptoHashes = crypto.getHashes();
+ if (cryptoHashes.length === 0) {
+ validSRIHashAlgorithmTokenSet.clear();
+ }
+ for (const algorithm of validSRIHashAlgorithmTokenSet.keys()) {
+ if (cryptoHashes.includes(algorithm) === false) {
+ validSRIHashAlgorithmTokenSet.delete(algorithm);
+ }
+ }
+ } catch {
+ validSRIHashAlgorithmTokenSet.clear();
+ }
+ var getSRIHashAlgorithmIndex = (
+ /** @type {GetSRIHashAlgorithmIndex} */
+ Map.prototype.get.bind(
+ validSRIHashAlgorithmTokenSet
+ )
+ );
+ var isValidSRIHashAlgorithm = (
+ /** @type {IsValidSRIHashAlgorithm} */
+ Map.prototype.has.bind(validSRIHashAlgorithmTokenSet)
+ );
+ var bytesMatch = crypto === void 0 || validSRIHashAlgorithmTokenSet.size === 0 ? () => true : (bytes, metadataList) => {
+ const parsedMetadata = parseMetadata(metadataList);
+ if (parsedMetadata.length === 0) {
+ return true;
+ }
+ const metadata = getStrongestMetadata(parsedMetadata);
+ for (const item of metadata) {
+ const algorithm = item.alg;
+ const expectedValue = item.val;
+ const actualValue = applyAlgorithmToBytes(algorithm, bytes);
+ if (caseSensitiveMatch(actualValue, expectedValue)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ function getStrongestMetadata(metadataList) {
+ const result = [];
+ let strongest = null;
+ for (const item of metadataList) {
+ assert(isValidSRIHashAlgorithm(item.alg), "Invalid SRI hash algorithm token");
+ if (result.length === 0) {
+ result.push(item);
+ strongest = item;
+ continue;
+ }
+ const currentAlgorithm = (
+ /** @type {Metadata} */
+ strongest.alg
+ );
+ const currentAlgorithmIndex = getSRIHashAlgorithmIndex(currentAlgorithm);
+ const newAlgorithm = item.alg;
+ const newAlgorithmIndex = getSRIHashAlgorithmIndex(newAlgorithm);
+ if (newAlgorithmIndex < currentAlgorithmIndex) {
+ continue;
+ } else if (newAlgorithmIndex > currentAlgorithmIndex) {
+ strongest = item;
+ result[0] = item;
+ result.length = 1;
+ } else {
+ result.push(item);
+ }
+ }
+ return result;
+ }
+ function parseMetadata(metadata) {
+ const result = [];
+ for (const item of metadata.split(" ")) {
+ const expressionAndOptions = item.split("?", 1);
+ const algorithmExpression = expressionAndOptions[0];
+ let base64Value = "";
+ const algorithmAndValue = [algorithmExpression.slice(0, 6), algorithmExpression.slice(7)];
+ const algorithm = algorithmAndValue[0];
+ if (!isValidSRIHashAlgorithm(algorithm)) {
+ continue;
+ }
+ if (algorithmAndValue[1]) {
+ base64Value = algorithmAndValue[1];
+ }
+ const metadata2 = {
+ alg: algorithm,
+ val: base64Value
+ };
+ result.push(metadata2);
+ }
+ return result;
+ }
+ var applyAlgorithmToBytes = (algorithm, bytes) => {
+ return crypto.hash(algorithm, bytes, "base64");
+ };
+ function caseSensitiveMatch(actualValue, expectedValue) {
+ let actualValueLength = actualValue.length;
+ if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === "=") {
+ actualValueLength -= 1;
+ }
+ if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === "=") {
+ actualValueLength -= 1;
+ }
+ let expectedValueLength = expectedValue.length;
+ if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === "=") {
+ expectedValueLength -= 1;
+ }
+ if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === "=") {
+ expectedValueLength -= 1;
+ }
+ if (actualValueLength !== expectedValueLength) {
+ return false;
+ }
+ for (let i = 0; i < actualValueLength; ++i) {
+ if (actualValue[i] === expectedValue[i] || actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") {
+ continue;
+ }
+ return false;
+ }
+ return true;
+ }
+ module2.exports = {
+ applyAlgorithmToBytes,
+ bytesMatch,
+ caseSensitiveMatch,
+ isValidSRIHashAlgorithm,
+ getStrongestMetadata,
+ parseMetadata
+ };
+ }
+});
+
// node_modules/undici/lib/web/fetch/index.js
var require_fetch2 = __commonJS({
"node_modules/undici/lib/web/fetch/index.js"(exports2, module2) {
@@ -36093,7 +38027,6 @@ var require_fetch2 = __commonJS({
var { Request, cloneRequest, getRequestDispatcher, getRequestState } = require_request4();
var zlib = require("node:zlib");
var {
- bytesMatch,
makePolicyContainer,
clonePolicyContainer,
requestBadPort,
@@ -36109,7 +38042,6 @@ var require_fetch2 = __commonJS({
crossOriginResourcePolicyCheck,
determineRequestsReferrer,
coarsenedSharedCurrentTime,
- createDeferredPromise,
sameOrigin,
isCancelled,
isAborted,
@@ -36142,6 +38074,9 @@ var require_fetch2 = __commonJS({
var { getGlobalDispatcher } = require_global4();
var { webidl } = require_webidl2();
var { STATUS_CODES } = require("node:http");
+ var { bytesMatch } = require_subresource_integrity();
+ var { createDeferredPromise } = require_promise();
+ var hasZstd = typeof zlib.createZstdDecompress === "function";
var GET_OR_HEAD = ["GET", "HEAD"];
var defaultUserAgent = typeof __UNDICI_IS_NODE__ !== "undefined" || typeof esbuildDetection !== "undefined" ? "node" : "undici";
var resolveObjectURL;
@@ -36357,103 +38292,105 @@ var require_fetch2 = __commonJS({
}
if (subresourceSet.has(request7.destination)) {
}
- mainFetch(fetchParams).catch((err) => {
- fetchParams.controller.terminate(err);
- });
+ mainFetch(fetchParams, false);
return fetchParams.controller;
}
- async function mainFetch(fetchParams, recursive = false) {
- const request7 = fetchParams.request;
- let response = null;
- if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
- response = makeNetworkError("local URLs only");
- }
- tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
- if (requestBadPort(request7) === "blocked") {
- response = makeNetworkError("bad port");
- }
- if (request7.referrerPolicy === "") {
- request7.referrerPolicy = request7.policyContainer.referrerPolicy;
- }
- if (request7.referrer !== "no-referrer") {
- request7.referrer = determineRequestsReferrer(request7);
- }
- if (response === null) {
- const currentURL = requestCurrentURL(request7);
- if (
- // - request’s current URL’s origin is same origin with request’s origin,
- // and request’s response tainting is "basic"
- sameOrigin(currentURL, request7.url) && request7.responseTainting === "basic" || // request’s current URL’s scheme is "data"
- currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
- (request7.mode === "navigate" || request7.mode === "websocket")
- ) {
- request7.responseTainting = "basic";
- response = await schemeFetch(fetchParams);
- } else if (request7.mode === "same-origin") {
- response = makeNetworkError('request mode cannot be "same-origin"');
- } else if (request7.mode === "no-cors") {
- if (request7.redirect !== "follow") {
- response = makeNetworkError(
- 'redirect mode cannot be "follow" for "no-cors" request'
- );
- } else {
- request7.responseTainting = "opaque";
+ async function mainFetch(fetchParams, recursive) {
+ try {
+ const request7 = fetchParams.request;
+ let response = null;
+ if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
+ response = makeNetworkError("local URLs only");
+ }
+ tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
+ if (requestBadPort(request7) === "blocked") {
+ response = makeNetworkError("bad port");
+ }
+ if (request7.referrerPolicy === "") {
+ request7.referrerPolicy = request7.policyContainer.referrerPolicy;
+ }
+ if (request7.referrer !== "no-referrer") {
+ request7.referrer = determineRequestsReferrer(request7);
+ }
+ if (response === null) {
+ const currentURL = requestCurrentURL(request7);
+ if (
+ // - request’s current URL’s origin is same origin with request’s origin,
+ // and request’s response tainting is "basic"
+ sameOrigin(currentURL, request7.url) && request7.responseTainting === "basic" || // request’s current URL’s scheme is "data"
+ currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
+ (request7.mode === "navigate" || request7.mode === "websocket")
+ ) {
+ request7.responseTainting = "basic";
response = await schemeFetch(fetchParams);
+ } else if (request7.mode === "same-origin") {
+ response = makeNetworkError('request mode cannot be "same-origin"');
+ } else if (request7.mode === "no-cors") {
+ if (request7.redirect !== "follow") {
+ response = makeNetworkError(
+ 'redirect mode cannot be "follow" for "no-cors" request'
+ );
+ } else {
+ request7.responseTainting = "opaque";
+ response = await schemeFetch(fetchParams);
+ }
+ } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
+ response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
+ } else {
+ request7.responseTainting = "cors";
+ response = await httpFetch(fetchParams);
}
- } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
- response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
- } else {
- request7.responseTainting = "cors";
- response = await httpFetch(fetchParams);
}
- }
- if (recursive) {
- return response;
- }
- if (response.status !== 0 && !response.internalResponse) {
- if (request7.responseTainting === "cors") {
+ if (recursive) {
+ return response;
}
- if (request7.responseTainting === "basic") {
- response = filterResponse(response, "basic");
- } else if (request7.responseTainting === "cors") {
- response = filterResponse(response, "cors");
- } else if (request7.responseTainting === "opaque") {
- response = filterResponse(response, "opaque");
- } else {
- assert(false);
+ if (response.status !== 0 && !response.internalResponse) {
+ if (request7.responseTainting === "cors") {
+ }
+ if (request7.responseTainting === "basic") {
+ response = filterResponse(response, "basic");
+ } else if (request7.responseTainting === "cors") {
+ response = filterResponse(response, "cors");
+ } else if (request7.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(...request7.urlList);
- }
- if (!request7.timingAllowFailed) {
- response.timingAllowPassed = true;
- }
- if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range", true)) {
- response = internalResponse = makeNetworkError();
- }
- if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
- internalResponse.body = null;
- fetchParams.controller.dump = true;
- }
- if (request7.integrity) {
- const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
- if (request7.responseTainting === "opaque" || response.body == null) {
- processBodyError(response.error);
- return;
+ let internalResponse = response.status === 0 ? response : response.internalResponse;
+ if (internalResponse.urlList.length === 0) {
+ internalResponse.urlList.push(...request7.urlList);
}
- const processBody = (bytes) => {
- if (!bytesMatch(bytes, request7.integrity)) {
- processBodyError("integrity mismatch");
+ if (!request7.timingAllowFailed) {
+ response.timingAllowPassed = true;
+ }
+ if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range", true)) {
+ response = internalResponse = makeNetworkError();
+ }
+ if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
+ internalResponse.body = null;
+ fetchParams.controller.dump = true;
+ }
+ if (request7.integrity) {
+ const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
+ if (request7.responseTainting === "opaque" || response.body == null) {
+ processBodyError(response.error);
return;
}
- response.body = safelyExtractBody(bytes)[0];
+ const processBody = (bytes) => {
+ if (!bytesMatch(bytes, request7.integrity)) {
+ processBodyError("integrity mismatch");
+ return;
+ }
+ response.body = safelyExtractBody(bytes)[0];
+ fetchFinale(fetchParams, response);
+ };
+ fullyReadBody(response.body, processBody, processBodyError);
+ } else {
fetchFinale(fetchParams, response);
- };
- await fullyReadBody(response.body, processBody, processBodyError);
- } else {
- fetchFinale(fetchParams, response);
+ }
+ } catch (err) {
+ fetchParams.controller.terminate(err);
}
}
function schemeFetch(fetchParams) {
@@ -36923,15 +38860,11 @@ var require_fetch2 = __commonJS({
};
const stream = new ReadableStream(
{
- async start(controller) {
+ start(controller) {
fetchParams.controller.controller = controller;
},
- async pull(controller) {
- await pullAlgorithm(controller);
- },
- async cancel(reason) {
- await cancelAlgorithm(reason);
- },
+ pull: pullAlgorithm,
+ cancel: cancelAlgorithm,
type: "bytes"
}
);
@@ -37030,25 +38963,21 @@ var require_fetch2 = __commonJS({
},
onHeaders(status, rawHeaders, resume, statusText) {
if (status < 200) {
- return;
+ return false;
}
- let codings = [];
- 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);
}
- const contentEncoding = headersList.get("content-encoding", true);
- if (contentEncoding) {
- codings = contentEncoding.toLowerCase().split(",").map((x) => x.trim());
- }
- location = headersList.get("location", true);
+ const location = headersList.get("location", true);
this.body = new Readable({ read: resume });
- const decoders = [];
const willFollow = location && request7.redirect === "follow" && redirectStatusSet.has(status);
- if (codings.length !== 0 && request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const decoders = [];
+ if (request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const contentEncoding = headersList.get("content-encoding", true);
+ const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
for (let i = codings.length - 1; i >= 0; --i) {
- const coding = codings[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
@@ -37068,6 +38997,11 @@ var require_fetch2 = __commonJS({
flush: zlib.constants.BROTLI_OPERATION_FLUSH,
finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH
}));
+ } else if (coding === "zstd" && hasZstd) {
+ decoders.push(zlib.createZstdDecompress({
+ flush: zlib.constants.ZSTD_e_continue,
+ finishFlush: zlib.constants.ZSTD_e_end
+ }));
} else {
decoders.length = 0;
break;
@@ -37173,6 +39107,7 @@ var require_util10 = __commonJS({
var require_cache4 = __commonJS({
"node_modules/undici/lib/web/cache/cache.js"(exports2, module2) {
"use strict";
+ var assert = require("node:assert");
var { kConstruct } = require_symbols6();
var { urlEquals, getFieldValues } = require_util10();
var { kEnumerableProperty, isDisturbed } = require_util8();
@@ -37180,8 +39115,8 @@ var require_cache4 = __commonJS({
var { cloneResponse, fromInnerResponse, getResponseState } = require_response2();
var { Request, fromInnerRequest, getRequestState } = require_request4();
var { fetching } = require_fetch2();
- var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util9();
- var assert = require("node:assert");
+ var { urlIsHttpHttpsScheme, readAllBytes } = require_util9();
+ var { createDeferredPromise } = require_promise();
var Cache = class _Cache {
/**
* @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list
@@ -37199,7 +39134,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.match";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
const p = this.#internalMatchAll(request7, options, 1);
if (p.length === 0) {
@@ -37210,7 +39145,7 @@ var require_cache4 = __commonJS({
async matchAll(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.matchAll";
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
return this.#internalMatchAll(request7, options);
}
@@ -37218,7 +39153,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.add";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7);
const requests = [request7];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
@@ -37332,7 +39267,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.put";
webidl.argumentLengthCheck(arguments, 2, prefix);
- request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7);
response = webidl.converters.Response(response, prefix, "response");
let innerRequest = null;
if (webidl.is.Request(request7)) {
@@ -37413,7 +39348,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.delete";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
if (webidl.is.Request(request7)) {
@@ -37452,13 +39387,13 @@ var require_cache4 = __commonJS({
/**
* @see https://w3c.github.io/ServiceWorker/#dom-cache-keys
* @param {any} request
- * @param {import('../../types/cache').CacheQueryOptions} options
+ * @param {import('../../../types/cache').CacheQueryOptions} options
* @returns {Promise}
*/
async keys(request7 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.keys";
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7, prefix, "request");
+ if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
if (request7 !== void 0) {
@@ -37583,7 +39518,7 @@ var require_cache4 = __commonJS({
/**
* @see https://w3c.github.io/ServiceWorker/#query-cache
* @param {any} requestQuery
- * @param {import('../../types/cache').CacheQueryOptions} options
+ * @param {import('../../../types/cache').CacheQueryOptions} options
* @param {requestResponseList} targetStorage
* @returns {requestResponseList}
*/
@@ -37603,7 +39538,7 @@ var require_cache4 = __commonJS({
* @param {any} requestQuery
* @param {any} request
* @param {any | null} response
- * @param {import('../../types/cache').CacheQueryOptions | undefined} options
+ * @param {import('../../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
#requestMatchesCachedItem(requestQuery, request7, response = null, options) {
@@ -38018,7 +39953,7 @@ var require_parse2 = __commonJS({
var { isCTLExcludingHtab } = require_util11();
var { collectASequenceOfCodePointsFast } = require_data_url();
var assert = require("node:assert");
- var { unescape } = require("node:querystring");
+ var { unescape: qsUnescape } = require("node:querystring");
function parseSetCookie(header) {
if (isCTLExcludingHtab(header)) {
return null;
@@ -38052,7 +39987,7 @@ var require_parse2 = __commonJS({
}
return {
name,
- value: unescape(value),
+ value: qsUnescape(value),
...parseUnparsedAttributes(unparsedAttributes)
};
}
@@ -38273,7 +40208,7 @@ var require_cookies2 = __commonJS({
{
converter: webidl.sequenceConverter(webidl.converters.DOMString),
key: "unparsed",
- defaultValue: () => new Array(0)
+ defaultValue: () => []
}
]);
module2.exports = {
@@ -38497,7 +40432,7 @@ var require_events2 = __commonJS({
{
key: "ports",
converter: webidl.converters["sequence"],
- defaultValue: () => new Array(0)
+ defaultValue: () => []
}
]);
webidl.converters.CloseEventInit = webidl.dictionaryConverter([
@@ -38887,7 +40822,9 @@ var require_frame2 = __commonJS({
}
};
module2.exports = {
- WebsocketFrameSend
+ WebsocketFrameSend,
+ generateMask
+ // for benchmark
};
}
});
@@ -38898,7 +40835,6 @@ var require_connection2 = __commonJS({
"use strict";
var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants10();
var { parseExtensions, isClosed, isClosing, isEstablished, validateCloseCodeAndReason } = require_util12();
- var { channels } = require_diagnostics();
var { makeRequest } = require_request4();
var { fetching } = require_fetch2();
var { Headers, getHeadersList } = require_headers2();
@@ -38944,7 +40880,7 @@ var require_connection2 = __commonJS({
handler.readyState = states.CLOSED;
}
if (response.type === "error" || response.status !== 101) {
- failWebsocketConnection(handler, 1002, "Received network error or non-101 status code.");
+ failWebsocketConnection(handler, 1002, "Received network error or non-101 status code.", response.error);
return;
}
if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) {
@@ -38985,13 +40921,6 @@ var require_connection2 = __commonJS({
response.socket.on("data", handler.onSocketData);
response.socket.on("close", handler.onSocketClose);
response.socket.on("error", handler.onSocketError);
- if (channels.open.hasSubscribers) {
- channels.open.publish({
- address: response.socket.address(),
- protocol: secProtocol,
- extensions: secExtension
- });
- }
handler.wasEverConnected = true;
handler.onConnectionEstablished(response, extensions);
}
@@ -39031,15 +40960,16 @@ var require_connection2 = __commonJS({
object.readyState = states.CLOSING;
}
}
- function failWebsocketConnection(handler, code, reason) {
+ function failWebsocketConnection(handler, code, reason, cause) {
if (isEstablished(handler.readyState)) {
closeWebSocketConnection(handler, code, reason, false);
}
handler.controller.abort();
- if (handler.socket?.destroyed === false) {
+ if (!handler.socket) {
+ handler.onSocketClose();
+ } else if (handler.socket.destroyed === false) {
handler.socket.destroy();
}
- handler.onFail(code, reason);
}
module2.exports = {
establishWebSocketConnection,
@@ -39111,7 +41041,6 @@ var require_receiver2 = __commonJS({
var { Writable } = require("node:stream");
var assert = require("node:assert");
var { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require_constants10();
- var { channels } = require_diagnostics();
var {
isValidStatusCode,
isValidOpcode,
@@ -39400,18 +41329,10 @@ var require_receiver2 = __commonJS({
if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
const frame = new WebsocketFrameSend(body);
this.#handler.socket.write(frame.createFrame(opcodes.PONG));
- if (channels.ping.hasSubscribers) {
- channels.ping.publish({
- payload: body
- });
- }
+ this.#handler.onPing(body);
}
} else if (opcode === opcodes.PONG) {
- if (channels.pong.hasSubscribers) {
- channels.pong.publish({
- payload: body
- });
- }
+ this.#handler.onPong(body);
}
return true;
}
@@ -39516,6 +41437,7 @@ var require_sender = __commonJS({
var require_websocket2 = __commonJS({
"node_modules/undici/lib/web/websocket/websocket.js"(exports2, module2) {
"use strict";
+ var { isArrayBuffer } = require("node:util/types");
var { webidl } = require_webidl2();
var { URLSerializer } = require_data_url();
var { environmentSettingsObject } = require_util9();
@@ -39524,6 +41446,7 @@ var require_websocket2 = __commonJS({
isConnecting,
isEstablished,
isClosing,
+ isClosed,
isValidSubprotocol,
fireEvent,
utf8Decode,
@@ -39534,9 +41457,9 @@ var require_websocket2 = __commonJS({
var { ByteParser } = require_receiver2();
var { kEnumerableProperty } = require_util8();
var { getGlobalDispatcher } = require_global4();
- var { types } = require("node:util");
var { ErrorEvent, CloseEvent, createFastMessageEvent } = require_events2();
var { SendQueue } = require_sender();
+ var { WebsocketFrameSend } = require_frame2();
var { channels } = require_diagnostics();
var WebSocket = class _WebSocket extends EventTarget {
#events = {
@@ -39553,7 +41476,6 @@ var require_websocket2 = __commonJS({
/** @type {Handler} */
#handler = {
onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),
- onFail: (code, reason) => this.#onFail(code, reason),
onMessage: (opcode, data) => this.#onMessage(opcode, data),
onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),
onParserDrain: () => this.#onParserDrain(),
@@ -39570,6 +41492,22 @@ var require_websocket2 = __commonJS({
this.#handler.socket.destroy();
},
onSocketClose: () => this.#onSocketClose(),
+ onPing: (body) => {
+ if (channels.ping.hasSubscribers) {
+ channels.ping.publish({
+ payload: body,
+ websocket: this
+ });
+ }
+ },
+ onPong: (body) => {
+ if (channels.pong.hasSubscribers) {
+ channels.pong.publish({
+ payload: body,
+ websocket: this
+ });
+ }
+ },
readyState: states.CONNECTING,
socket: null,
closeState: /* @__PURE__ */ new Set(),
@@ -39624,7 +41562,7 @@ var require_websocket2 = __commonJS({
webidl.brandCheck(this, _WebSocket);
const prefix = "WebSocket.close";
if (code !== void 0) {
- code = webidl.converters["unsigned short"](code, prefix, "code", { clamp: true });
+ code = webidl.converters["unsigned short"](code, prefix, "code", webidl.attributes.Clamp);
}
if (reason !== void 0) {
reason = webidl.converters.USVString(reason);
@@ -39654,7 +41592,7 @@ var require_websocket2 = __commonJS({
this.#sendQueue.add(buffer, () => {
this.#bufferedAmount -= buffer.byteLength;
}, sendHints.text);
- } else if (types.isArrayBuffer(data)) {
+ } else if (isArrayBuffer(data)) {
this.#bufferedAmount += data.byteLength;
this.#sendQueue.add(data, () => {
this.#bufferedAmount -= data.byteLength;
@@ -39700,9 +41638,10 @@ var require_websocket2 = __commonJS({
if (this.#events.open) {
this.removeEventListener("open", this.#events.open);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("open", listener);
this.#events.open = fn;
- this.addEventListener("open", fn);
} else {
this.#events.open = null;
}
@@ -39716,9 +41655,10 @@ var require_websocket2 = __commonJS({
if (this.#events.error) {
this.removeEventListener("error", this.#events.error);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("error", listener);
this.#events.error = fn;
- this.addEventListener("error", fn);
} else {
this.#events.error = null;
}
@@ -39732,9 +41672,10 @@ var require_websocket2 = __commonJS({
if (this.#events.close) {
this.removeEventListener("close", this.#events.close);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("close", listener);
this.#events.close = fn;
- this.addEventListener("close", fn);
} else {
this.#events.close = null;
}
@@ -39748,9 +41689,10 @@ var require_websocket2 = __commonJS({
if (this.#events.message) {
this.removeEventListener("message", this.#events.message);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("message", listener);
this.#events.message = fn;
- this.addEventListener("message", fn);
} else {
this.#events.message = null;
}
@@ -39787,20 +41729,18 @@ var require_websocket2 = __commonJS({
this.#protocol = protocol;
}
fireEvent("open", this);
- }
- #onFail(code, reason) {
- if (reason) {
- fireEvent("error", this, (type, init) => new ErrorEvent(type, init), {
- error: new Error(reason),
- message: reason
- });
- }
- if (!this.#handler.wasEverConnected) {
- this.#handler.readyState = states.CLOSED;
- fireEvent("close", this, (type, init) => new CloseEvent(type, init), {
- wasClean: false,
- code,
- reason
+ if (channels.open.hasSubscribers) {
+ const headers = response.headersList.entries;
+ channels.open.publish({
+ address: response.socket.address(),
+ protocol: this.#protocol,
+ extensions: this.#extensions,
+ websocket: this,
+ handshakeResponse: {
+ status: response.status,
+ statusText: response.statusText,
+ headers
+ }
});
}
}
@@ -39839,14 +41779,18 @@ var require_websocket2 = __commonJS({
const wasClean = this.#handler.closeState.has(sentCloseFrameState.SENT) && this.#handler.closeState.has(sentCloseFrameState.RECEIVED);
let code = 1005;
let reason = "";
- const result = this.#parser.closingInfo;
+ const result = this.#parser?.closingInfo;
if (result && !result.error) {
code = result.code ?? 1005;
reason = result.reason;
- } else if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
- code = 1006;
}
this.#handler.readyState = states.CLOSED;
+ if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
+ code = 1006;
+ fireEvent("error", this, (type, init) => new ErrorEvent(type, init), {
+ error: new TypeError(reason)
+ });
+ }
fireEvent("close", this, (type, init) => new CloseEvent(type, init), {
wasClean,
code,
@@ -39860,7 +41804,27 @@ var require_websocket2 = __commonJS({
});
}
}
+ /**
+ * @param {WebSocket} ws
+ * @param {Buffer|undefined} buffer
+ */
+ static ping(ws, buffer) {
+ if (Buffer.isBuffer(buffer)) {
+ if (buffer.length > 125) {
+ throw new TypeError("A PING frame cannot have a body larger than 125 bytes.");
+ }
+ } else if (buffer !== void 0) {
+ throw new TypeError("Expected buffer payload");
+ }
+ const readyState = ws.#handler.readyState;
+ if (isEstablished(readyState) && !isClosing(readyState) && !isClosed(readyState)) {
+ const frame = new WebsocketFrameSend(buffer);
+ ws.#handler.socket.write(frame.createFrame(opcodes.PING));
+ }
+ }
};
+ var { ping } = WebSocket;
+ Reflect.deleteProperty(WebSocket, "ping");
WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING;
WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN;
WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING;
@@ -39908,7 +41872,7 @@ var require_websocket2 = __commonJS({
{
key: "protocols",
converter: webidl.converters["DOMString or sequence"],
- defaultValue: () => new Array(0)
+ defaultValue: () => []
},
{
key: "dispatcher",
@@ -39931,14 +41895,15 @@ var require_websocket2 = __commonJS({
if (webidl.is.Blob(V)) {
return V;
}
- if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
+ if (webidl.is.BufferSource(V)) {
return V;
}
}
return webidl.converters.USVString(V);
};
module2.exports = {
- WebSocket
+ WebSocket,
+ ping
};
}
});
@@ -39951,7 +41916,24 @@ var require_websocketerror = __commonJS({
var { validateCloseCodeAndReason } = require_util12();
var { kConstruct } = require_symbols6();
var { kEnumerableProperty } = require_util8();
- var WebSocketError = class _WebSocketError extends DOMException {
+ function createInheritableDOMException() {
+ class Test extends DOMException {
+ get reason() {
+ return "";
+ }
+ }
+ if (new Test().reason !== void 0) {
+ return DOMException;
+ }
+ return new Proxy(DOMException, {
+ construct(target, args, newTarget) {
+ const instance = Reflect.construct(target, args, target);
+ Object.setPrototypeOf(instance, newTarget.prototype);
+ return instance;
+ }
+ });
+ }
+ var WebSocketError = class _WebSocketError extends createInheritableDOMException() {
#closeCode;
#reason;
constructor(message = "", init = void 0) {
@@ -40010,12 +41992,12 @@ var require_websocketerror = __commonJS({
var require_websocketstream = __commonJS({
"node_modules/undici/lib/web/websocket/stream/websocketstream.js"(exports2, module2) {
"use strict";
- var { createDeferredPromise, environmentSettingsObject } = require_util9();
+ var { createDeferredPromise } = require_promise();
+ var { environmentSettingsObject } = require_util9();
var { states, opcodes, sentCloseFrameState } = require_constants10();
var { webidl } = require_webidl2();
var { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require_util12();
var { establishWebSocketConnection, failWebsocketConnection, closeWebSocketConnection } = require_connection2();
- var { types } = require("node:util");
var { channels } = require_diagnostics();
var { WebsocketFrameSend } = require_frame2();
var { ByteParser } = require_receiver2();
@@ -40028,10 +42010,10 @@ var require_websocketstream = __commonJS({
/** @type {URL} */
#url;
// Each WebSocketStream object has an associated opened promise , which is a promise.
- /** @type {ReturnType} */
+ /** @type {import('../../../util/promise').DeferredPromise} */
#openedPromise;
// Each WebSocketStream object has an associated closed promise , which is a promise.
- /** @type {ReturnType} */
+ /** @type {import('../../../util/promise').DeferredPromise} */
#closedPromise;
// Each WebSocketStream object has an associated readable stream , which is a ReadableStream .
/** @type {ReadableStream} */
@@ -40047,8 +42029,6 @@ var require_websocketstream = __commonJS({
#handler = {
// https://whatpr.org/websockets/48/7b748d3...d5570f3.html#feedback-to-websocket-stream-from-the-protocol
onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),
- onFail: (_code, _reason) => {
- },
onMessage: (opcode, data) => this.#onMessage(opcode, data),
onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),
onParserDrain: () => this.#handler.socket.resume(),
@@ -40065,6 +42045,10 @@ var require_websocketstream = __commonJS({
this.#handler.socket.destroy();
},
onSocketClose: () => this.#onSocketClose(),
+ onPing: () => {
+ },
+ onPong: () => {
+ },
readyState: states.CONNECTING,
socket: null,
closeState: /* @__PURE__ */ new Set(),
@@ -40145,11 +42129,12 @@ var require_websocketstream = __commonJS({
closeWebSocketConnection(this.#handler, code, reason, true);
}
#write(chunk) {
+ chunk = webidl.converters.WebSocketStreamWrite(chunk);
const promise = createDeferredPromise();
let data = null;
let opcode = null;
- if (ArrayBuffer.isView(chunk) || types.isArrayBuffer(chunk)) {
- data = new Uint8Array(ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk);
+ if (webidl.is.BufferSource(chunk)) {
+ data = new Uint8Array(ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk.slice());
opcode = opcodes.BINARY;
} else {
let string;
@@ -40157,7 +42142,7 @@ var require_websocketstream = __commonJS({
string = webidl.converters.DOMString(chunk);
} catch (e) {
promise.reject(e);
- return;
+ return promise.promise;
}
data = new TextEncoder().encode(string);
opcode = opcodes.TEXT;
@@ -40168,7 +42153,7 @@ var require_websocketstream = __commonJS({
promise.resolve(void 0);
});
}
- return promise;
+ return promise.promise;
}
/** @type {import('../websocket').Handler['onConnectionEstablished']} */
#onConnectionEstablished(response, parsedExtensions) {
@@ -40241,8 +42226,7 @@ var require_websocketstream = __commonJS({
}
const reason = result?.reason == null ? "" : utf8DecodeBytes(Buffer.from(result.reason));
if (wasClean) {
- this.#readableStream.cancel().catch(() => {
- });
+ this.#readableStreamController.close();
if (!this.#writableStream.locked) {
this.#writableStream.abort(new DOMException("A closed WebSocketStream cannot be written to", "InvalidStateError"));
}
@@ -40298,7 +42282,7 @@ var require_websocketstream = __commonJS({
webidl.converters.WebSocketCloseInfo = webidl.dictionaryConverter([
{
key: "closeCode",
- converter: (V) => webidl.converters["unsigned short"](V, { enforceRange: true })
+ converter: (V) => webidl.converters["unsigned short"](V, webidl.attributes.EnforceRange)
},
{
key: "reason",
@@ -40306,6 +42290,12 @@ var require_websocketstream = __commonJS({
defaultValue: () => ""
}
]);
+ webidl.converters.WebSocketStreamWrite = function(V) {
+ if (typeof V === "string") {
+ return webidl.converters.USVString(V);
+ }
+ return webidl.converters.BufferSource(V);
+ };
module2.exports = { WebSocketStream };
}
});
@@ -40324,15 +42314,9 @@ var require_util13 = __commonJS({
}
return true;
}
- function delay(ms) {
- return new Promise((resolve) => {
- setTimeout(resolve, ms).unref();
- });
- }
module2.exports = {
isValidLastEventId,
- isASCIINumber,
- delay
+ isASCIINumber
};
}
});
@@ -40458,7 +42442,7 @@ var require_eventsource_stream = __commonJS({
}
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) {
+ if (this.event.data !== void 0 || this.event.event || this.event.id !== void 0 || this.event.retry) {
this.processEvent(this.event);
}
this.clearEvent();
@@ -40539,7 +42523,7 @@ ${value}`;
if (event.retry && isASCIINumber(event.retry)) {
this.state.reconnectionTime = parseInt(event.retry, 10);
}
- if (event.id && isValidLastEventId(event.id)) {
+ if (event.id !== void 0 && isValidLastEventId(event.id)) {
this.state.lastEventId = event.id;
}
if (event.data !== void 0) {
@@ -40580,7 +42564,6 @@ var require_eventsource = __commonJS({
var { parseMIMEType } = require_data_url();
var { createFastMessageEvent } = require_events2();
var { isNetworkError: isNetworkError2 } = require_response2();
- var { delay } = require_util13();
var { kEnumerableProperty } = require_util8();
var { environmentSettingsObject } = require_util9();
var experimentalWarned = false;
@@ -40628,10 +42611,10 @@ var require_eventsource = __commonJS({
}
url = webidl.converters.USVString(url);
eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, "eventSourceInitDict");
- this.#dispatcher = eventSourceInitDict.dispatcher;
+ this.#dispatcher = eventSourceInitDict.node.dispatcher || eventSourceInitDict.dispatcher;
this.#state = {
lastEventId: "",
- reconnectionTime: defaultReconnectionTime
+ reconnectionTime: eventSourceInitDict.node.reconnectionTime
};
const settings = environmentSettingsObject;
let urlRecord;
@@ -40695,11 +42678,9 @@ var require_eventsource = __commonJS({
dispatcher: this.#dispatcher
};
const processEventSourceEndOfBody = (response) => {
- if (isNetworkError2(response)) {
- this.dispatchEvent(new Event("error"));
- this.close();
+ if (!isNetworkError2(response)) {
+ return this.#reconnect();
}
- this.#reconnect();
};
fetchParams.processResponseEndOfBody = processEventSourceEndOfBody;
fetchParams.processResponse = (response) => {
@@ -40748,18 +42729,19 @@ var require_eventsource = __commonJS({
}
/**
* @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model
- * @returns {Promise}
+ * @returns {void}
*/
- async #reconnect() {
+ #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();
+ setTimeout(() => {
+ if (this.#readyState !== CONNECTING) return;
+ if (this.#state.lastEventId.length) {
+ this.#request.headersList.set("last-event-id", this.#state.lastEventId, true);
+ }
+ this.#connect();
+ }, this.#state.reconnectionTime)?.unref();
}
/**
* Closes the connection, if any, and sets the readyState attribute to
@@ -40779,9 +42761,10 @@ var require_eventsource = __commonJS({
if (this.#events.open) {
this.removeEventListener("open", this.#events.open);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("open", listener);
this.#events.open = fn;
- this.addEventListener("open", fn);
} else {
this.#events.open = null;
}
@@ -40793,9 +42776,10 @@ var require_eventsource = __commonJS({
if (this.#events.message) {
this.removeEventListener("message", this.#events.message);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("message", listener);
this.#events.message = fn;
- this.addEventListener("message", fn);
} else {
this.#events.message = null;
}
@@ -40807,9 +42791,10 @@ var require_eventsource = __commonJS({
if (this.#events.error) {
this.removeEventListener("error", this.#events.error);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("error", listener);
this.#events.error = fn;
- this.addEventListener("error", fn);
} else {
this.#events.error = null;
}
@@ -40859,6 +42844,22 @@ var require_eventsource = __commonJS({
key: "dispatcher",
// undici only
converter: webidl.converters.any
+ },
+ {
+ key: "node",
+ // undici only
+ converter: webidl.dictionaryConverter([
+ {
+ key: "reconnectionTime",
+ converter: webidl.converters["unsigned long"],
+ defaultValue: () => defaultReconnectionTime
+ },
+ {
+ key: "dispatcher",
+ converter: webidl.converters.any
+ }
+ ]),
+ defaultValue: () => ({})
}
]);
module2.exports = {
@@ -40890,6 +42891,7 @@ var require_undici2 = __commonJS({
var { MockCallHistory, MockCallHistoryLog } = require_mock_call_history();
var MockAgent = require_mock_agent2();
var MockPool = require_mock_pool2();
+ var SnapshotAgent = require_snapshot_agent();
var mockErrors = require_mock_errors2();
var RetryHandler = require_retry_handler();
var { getGlobalDispatcher, setGlobalDispatcher } = require_global4();
@@ -40914,7 +42916,8 @@ var require_undici2 = __commonJS({
retry: require_retry3(),
dump: require_dump(),
dns: require_dns(),
- cache: require_cache3()
+ cache: require_cache3(),
+ decompress: require_decompress()
};
module2.exports.cacheStores = {
MemoryCacheStore: require_memory_cache_store()
@@ -40969,15 +42972,13 @@ var require_undici2 = __commonJS({
module2.exports.setGlobalDispatcher = setGlobalDispatcher;
module2.exports.getGlobalDispatcher = getGlobalDispatcher;
var fetchImpl = require_fetch2().fetch;
- module2.exports.fetch = async function fetch(init, options = void 0) {
- try {
- return await fetchImpl(init, options);
- } catch (err) {
+ module2.exports.fetch = function fetch(init, options = void 0) {
+ return fetchImpl(init, options).catch((err) => {
if (err && typeof err === "object") {
Error.captureStackTrace(err);
}
throw err;
- }
+ });
};
module2.exports.Headers = require_headers2().Headers;
module2.exports.Response = require_response2().Response;
@@ -40999,10 +43000,12 @@ var require_undici2 = __commonJS({
module2.exports.parseMIMEType = parseMIMEType;
module2.exports.serializeAMimeType = serializeAMimeType;
var { CloseEvent, ErrorEvent, MessageEvent } = require_events2();
- module2.exports.WebSocket = require_websocket2().WebSocket;
+ var { WebSocket, ping } = require_websocket2();
+ module2.exports.WebSocket = WebSocket;
module2.exports.CloseEvent = CloseEvent;
module2.exports.ErrorEvent = ErrorEvent;
module2.exports.MessageEvent = MessageEvent;
+ module2.exports.ping = ping;
module2.exports.WebSocketStream = require_websocketstream().WebSocketStream;
module2.exports.WebSocketError = require_websocketerror().WebSocketError;
module2.exports.request = makeDispatcher(api.request);
@@ -41015,9 +43018,23 @@ var require_undici2 = __commonJS({
module2.exports.MockCallHistoryLog = MockCallHistoryLog;
module2.exports.MockPool = MockPool;
module2.exports.MockAgent = MockAgent;
+ module2.exports.SnapshotAgent = SnapshotAgent;
module2.exports.mockErrors = mockErrors;
var { EventSource } = require_eventsource();
module2.exports.EventSource = EventSource;
+ function install() {
+ globalThis.fetch = module2.exports.fetch;
+ globalThis.Headers = module2.exports.Headers;
+ globalThis.Response = module2.exports.Response;
+ globalThis.Request = module2.exports.Request;
+ globalThis.FormData = module2.exports.FormData;
+ globalThis.WebSocket = module2.exports.WebSocket;
+ globalThis.CloseEvent = module2.exports.CloseEvent;
+ globalThis.ErrorEvent = module2.exports.ErrorEvent;
+ globalThis.MessageEvent = module2.exports.MessageEvent;
+ globalThis.EventSource = module2.exports.EventSource;
+ }
+ module2.exports.install = install;
}
});
diff --git a/dist/post.cjs b/dist/post.cjs
index 34e8cac0..06b01399 100644
--- a/dist/post.cjs
+++ b/dist/post.cjs
@@ -4900,7 +4900,7 @@ var require_file = __commonJS({
var { parseMIMEType, serializeAMimeType } = require_dataURL();
var { kEnumerableProperty } = require_util();
var encoder = new TextEncoder();
- var File = class _File extends Blob2 {
+ var File2 = class _File extends Blob2 {
constructor(fileBits, fileName, options = {}) {
webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" });
fileBits = webidl.converters["sequence"](fileBits);
@@ -4988,7 +4988,7 @@ var require_file = __commonJS({
return "File";
}
};
- Object.defineProperties(File.prototype, {
+ Object.defineProperties(File2.prototype, {
[Symbol.toStringTag]: {
value: "File",
configurable: true
@@ -5068,9 +5068,9 @@ var require_file = __commonJS({
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";
+ return NativeFile && object instanceof NativeFile || object instanceof File2 || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
}
- module2.exports = { File, FileLike, isFileLike };
+ module2.exports = { File: File2, FileLike, isFileLike };
}
});
@@ -5083,7 +5083,7 @@ var require_formdata = __commonJS({
var { File: UndiciFile, FileLike, isFileLike } = require_file();
var { webidl } = require_webidl();
var { Blob: Blob2, File: NativeFile } = require("buffer");
- var File = NativeFile ?? UndiciFile;
+ var File2 = NativeFile ?? UndiciFile;
var FormData = class _FormData {
constructor(form) {
if (form !== void 0) {
@@ -5214,14 +5214,14 @@ var require_formdata = __commonJS({
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 });
+ value = value instanceof Blob2 ? new File2([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);
+ value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File2([value], filename, options) : new FileLike(value, filename, options);
}
}
return { name, value };
@@ -5263,7 +5263,7 @@ var require_body = __commonJS({
random = (max) => Math.floor(Math.random(max));
}
var ReadableStream2 = globalThis.ReadableStream;
- var File = NativeFile ?? UndiciFile;
+ var File2 = NativeFile ?? UndiciFile;
var textEncoder = new TextEncoder();
var textDecoder = new TextDecoder();
function extractBody(object, keepalive = false) {
@@ -5498,14 +5498,14 @@ Content-Type: ${value.type || "application/octet-stream"}\r
});
value.on("end", () => {
chunks.push(Buffer.from(base64chunk, "base64"));
- responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
+ responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));
});
} else {
value.on("data", (chunk) => {
chunks.push(chunk);
});
value.on("end", () => {
- responseFormData.append(name, new File(chunks, filename, { type: mimeType }));
+ responseFormData.append(name, new File2(chunks, filename, { type: mimeType }));
});
}
});
@@ -20006,14 +20006,12 @@ var require_timers2 = __commonJS({
}
}
function refreshTimeout() {
- if (fastNowTimeout) {
+ if (fastNowTimeout?.refresh) {
fastNowTimeout.refresh();
} else {
clearTimeout(fastNowTimeout);
fastNowTimeout = setTimeout(onTick, TICK_MS);
- if (fastNowTimeout.unref) {
- fastNowTimeout.unref();
- }
+ fastNowTimeout?.unref();
}
}
var FastTimer = class {
@@ -20198,13 +20196,21 @@ var require_timers2 = __commonJS({
var require_errors2 = __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, options) {
super(message, options);
this.name = "UndiciError";
this.code = "UND_ERR";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kUndiciError] === true;
+ }
+ get [kUndiciError]() {
+ return true;
+ }
};
+ var kConnectTimeoutError = Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");
var ConnectTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20212,7 +20218,14 @@ var require_errors2 = __commonJS({
this.message = message || "Connect Timeout Error";
this.code = "UND_ERR_CONNECT_TIMEOUT";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kConnectTimeoutError] === true;
+ }
+ get [kConnectTimeoutError]() {
+ return true;
+ }
};
+ var kHeadersTimeoutError = Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");
var HeadersTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20220,7 +20233,14 @@ var require_errors2 = __commonJS({
this.message = message || "Headers Timeout Error";
this.code = "UND_ERR_HEADERS_TIMEOUT";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHeadersTimeoutError] === true;
+ }
+ get [kHeadersTimeoutError]() {
+ return true;
+ }
};
+ var kHeadersOverflowError = Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");
var HeadersOverflowError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20228,7 +20248,14 @@ var require_errors2 = __commonJS({
this.message = message || "Headers Overflow Error";
this.code = "UND_ERR_HEADERS_OVERFLOW";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHeadersOverflowError] === true;
+ }
+ get [kHeadersOverflowError]() {
+ return true;
+ }
};
+ var kBodyTimeoutError = Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");
var BodyTimeoutError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20236,19 +20263,14 @@ var require_errors2 = __commonJS({
this.message = message || "Body Timeout Error";
this.code = "UND_ERR_BODY_TIMEOUT";
}
- };
- var ResponseStatusCodeError = class extends UndiciError {
- constructor(message, statusCode, headers, body) {
- super(message);
- this.name = "ResponseStatusCodeError";
- this.message = message || "Response Status Code Error";
- this.code = "UND_ERR_RESPONSE_STATUS_CODE";
- this.body = body;
- this.status = statusCode;
- this.statusCode = statusCode;
- this.headers = headers;
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kBodyTimeoutError] === true;
+ }
+ get [kBodyTimeoutError]() {
+ return true;
}
};
+ var kInvalidArgumentError = Symbol.for("undici.error.UND_ERR_INVALID_ARG");
var InvalidArgumentError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20256,7 +20278,14 @@ var require_errors2 = __commonJS({
this.message = message || "Invalid Argument Error";
this.code = "UND_ERR_INVALID_ARG";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInvalidArgumentError] === true;
+ }
+ get [kInvalidArgumentError]() {
+ return true;
+ }
};
+ var kInvalidReturnValueError = Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");
var InvalidReturnValueError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20264,14 +20293,29 @@ var require_errors2 = __commonJS({
this.message = message || "Invalid Return Value Error";
this.code = "UND_ERR_INVALID_RETURN_VALUE";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInvalidReturnValueError] === true;
+ }
+ get [kInvalidReturnValueError]() {
+ return 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;
+ }
+ get [kAbortError]() {
+ return true;
}
};
+ var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED");
var RequestAbortedError = class extends AbortError {
constructor(message) {
super(message);
@@ -20279,7 +20323,14 @@ var require_errors2 = __commonJS({
this.message = message || "Request aborted";
this.code = "UND_ERR_ABORTED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kRequestAbortedError] === true;
+ }
+ get [kRequestAbortedError]() {
+ return true;
+ }
};
+ var kInformationalError = Symbol.for("undici.error.UND_ERR_INFO");
var InformationalError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20287,7 +20338,14 @@ var require_errors2 = __commonJS({
this.message = message || "Request information";
this.code = "UND_ERR_INFO";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kInformationalError] === true;
+ }
+ get [kInformationalError]() {
+ return true;
+ }
};
+ var kRequestContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");
var RequestContentLengthMismatchError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20295,7 +20353,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kRequestContentLengthMismatchError]() {
+ return true;
+ }
};
+ var kResponseContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");
var ResponseContentLengthMismatchError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20303,7 +20368,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kResponseContentLengthMismatchError]() {
+ return true;
+ }
};
+ var kClientDestroyedError = Symbol.for("undici.error.UND_ERR_DESTROYED");
var ClientDestroyedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20311,7 +20383,14 @@ var require_errors2 = __commonJS({
this.message = message || "The client is destroyed";
this.code = "UND_ERR_DESTROYED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kClientDestroyedError] === true;
+ }
+ get [kClientDestroyedError]() {
+ return true;
+ }
};
+ var kClientClosedError = Symbol.for("undici.error.UND_ERR_CLOSED");
var ClientClosedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20319,7 +20398,14 @@ var require_errors2 = __commonJS({
this.message = message || "The client is closed";
this.code = "UND_ERR_CLOSED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kClientClosedError] === true;
+ }
+ get [kClientClosedError]() {
+ return true;
+ }
};
+ var kSocketError = Symbol.for("undici.error.UND_ERR_SOCKET");
var SocketError = class extends UndiciError {
constructor(message, socket) {
super(message);
@@ -20328,7 +20414,14 @@ var require_errors2 = __commonJS({
this.code = "UND_ERR_SOCKET";
this.socket = socket;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kSocketError] === true;
+ }
+ get [kSocketError]() {
+ return true;
+ }
};
+ var kNotSupportedError = Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");
var NotSupportedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20336,7 +20429,14 @@ var require_errors2 = __commonJS({
this.message = message || "Not supported error";
this.code = "UND_ERR_NOT_SUPPORTED";
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kNotSupportedError] === true;
+ }
+ get [kNotSupportedError]() {
+ return true;
+ }
};
+ var kBalancedPoolMissingUpstreamError = Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");
var BalancedPoolMissingUpstreamError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20344,7 +20444,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kBalancedPoolMissingUpstreamError]() {
+ return true;
+ }
};
+ var kHTTPParserError = Symbol.for("undici.error.UND_ERR_HTTP_PARSER");
var HTTPParserError = class extends Error {
constructor(message, code, data) {
super(message);
@@ -20352,7 +20459,14 @@ var require_errors2 = __commonJS({
this.code = code ? `HPE_${code}` : void 0;
this.data = data ? data.toString() : void 0;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kHTTPParserError] === true;
+ }
+ get [kHTTPParserError]() {
+ return true;
+ }
};
+ var kResponseExceededMaxSizeError = Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");
var ResponseExceededMaxSizeError = class extends UndiciError {
constructor(message) {
super(message);
@@ -20360,7 +20474,14 @@ var require_errors2 = __commonJS({
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;
+ }
+ get [kResponseExceededMaxSizeError]() {
+ return true;
+ }
};
+ var kRequestRetryError = Symbol.for("undici.error.UND_ERR_REQ_RETRY");
var RequestRetryError = class extends UndiciError {
constructor(message, code, { headers, data }) {
super(message);
@@ -20371,7 +20492,14 @@ var require_errors2 = __commonJS({
this.data = data;
this.headers = headers;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kRequestRetryError] === true;
+ }
+ get [kRequestRetryError]() {
+ return true;
+ }
};
+ var kResponseError = Symbol.for("undici.error.UND_ERR_RESPONSE");
var ResponseError = class extends UndiciError {
constructor(message, code, { headers, body }) {
super(message);
@@ -20382,7 +20510,14 @@ var require_errors2 = __commonJS({
this.body = body;
this.headers = headers;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kResponseError] === true;
+ }
+ get [kResponseError]() {
+ return true;
+ }
};
+ var kSecureProxyConnectionError = Symbol.for("undici.error.UND_ERR_PRX_TLS");
var SecureProxyConnectionError = class extends UndiciError {
constructor(cause, message, options = {}) {
super(message, { cause, ...options });
@@ -20391,6 +20526,27 @@ var require_errors2 = __commonJS({
this.code = "UND_ERR_PRX_TLS";
this.cause = cause;
}
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kSecureProxyConnectionError] === true;
+ }
+ get [kSecureProxyConnectionError]() {
+ return true;
+ }
+ };
+ var kMaxOriginsReachedError = Symbol.for("undici.error.UND_ERR_MAX_ORIGINS_REACHED");
+ var MaxOriginsReachedError = class extends UndiciError {
+ constructor(message) {
+ super(message);
+ this.name = "MaxOriginsReachedError";
+ this.message = message || "Maximum allowed origins reached";
+ this.code = "UND_ERR_MAX_ORIGINS_REACHED";
+ }
+ static [Symbol.hasInstance](instance) {
+ return instance && instance[kMaxOriginsReachedError] === true;
+ }
+ get [kMaxOriginsReachedError]() {
+ return true;
+ }
};
module2.exports = {
AbortError,
@@ -20401,7 +20557,6 @@ var require_errors2 = __commonJS({
BodyTimeoutError,
RequestContentLengthMismatchError,
ConnectTimeoutError,
- ResponseStatusCodeError,
InvalidArgumentError,
InvalidReturnValueError,
RequestAbortedError,
@@ -20415,7 +20570,8 @@ var require_errors2 = __commonJS({
ResponseExceededMaxSizeError,
RequestRetryError,
ResponseError,
- SecureProxyConnectionError
+ SecureProxyConnectionError,
+ MaxOriginsReachedError
};
}
});
@@ -20630,7 +20786,7 @@ var require_tree = __commonJS({
}
/**
* @param {Uint8Array} key
- * @return {TstNode | null}
+ * @returns {TstNode | null}
*/
search(key) {
const keylength = key.length;
@@ -20699,8 +20855,6 @@ var require_util8 = __commonJS({
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 timers = require_timers2();
@@ -20749,7 +20903,7 @@ var require_util8 = __commonJS({
function isBlobLike(object) {
if (object === null) {
return false;
- } else if (object instanceof Blob2) {
+ } else if (object instanceof Blob) {
return true;
} else if (typeof object !== "object") {
return false;
@@ -20758,8 +20912,11 @@ var require_util8 = __commonJS({
return (sTag === "Blob" || sTag === "File") && ("stream" in object && typeof object.stream === "function" || "arrayBuffer" in object && typeof object.arrayBuffer === "function");
}
}
+ function pathHasQueryOrFragment(url) {
+ return url.includes("?") || url.includes("#");
+ }
function serializePathWithQuery(url, queryParams) {
- if (url.includes("?") || url.includes("#")) {
+ if (pathHasQueryOrFragment(url)) {
throw new Error('Query params cannot be passed when url already contains "?" or "#".');
}
const stringified = stringify(queryParams);
@@ -21015,12 +21172,11 @@ var require_util8 = __commonJS({
let iterator;
return new ReadableStream(
{
- async start() {
+ start() {
iterator = iterable[Symbol.asyncIterator]();
},
pull(controller) {
- async function pull() {
- const { done, value } = await iterator.next();
+ return iterator.next().then(({ done, value }) => {
if (done) {
queueMicrotask(() => {
controller.close();
@@ -21031,14 +21187,13 @@ var require_util8 = __commonJS({
if (buf.byteLength) {
controller.enqueue(new Uint8Array(buf));
} else {
- return await pull();
+ return this.pull(controller);
}
}
- }
- return pull();
+ });
},
- async cancel() {
- await iterator.return();
+ cancel() {
+ return iterator.return();
},
type: "bytes"
}
@@ -21055,20 +21210,6 @@ var require_util8 = __commonJS({
signal.once("abort", listener);
return () => signal.removeListener("abort", listener);
}
- var toUSVString = (() => {
- if (typeof String.prototype.toWellFormed === "function") {
- return (value) => `${value}`.toWellFormed();
- } else {
- return nodeUtil.toUSVString;
- }
- })();
- var isUSVString = (() => {
- if (typeof String.prototype.isWellFormed === "function") {
- return (value) => `${value}`.isWellFormed();
- } else {
- return (value) => toUSVString(value) === `${value}`;
- }
- })();
function isTokenCharCode(c) {
switch (c) {
case 34:
@@ -21185,6 +21326,19 @@ var require_util8 = __commonJS({
message += ` timeout: ${opts.timeout}ms)`;
destroy(socket, new ConnectTimeoutError(message));
}
+ function getProtocolFromUrlString(urlString) {
+ if (urlString[0] === "h" && urlString[1] === "t" && urlString[2] === "t" && urlString[3] === "p") {
+ switch (urlString[4]) {
+ case ":":
+ return "http:";
+ case "s":
+ if (urlString[5] === ":") {
+ return "https:";
+ }
+ }
+ }
+ return urlString.slice(0, urlString.indexOf(":") + 1);
+ }
var kEnumerableProperty = /* @__PURE__ */ Object.create(null);
kEnumerableProperty.enumerable = true;
var normalizedMethodRecordsBase = {
@@ -21211,8 +21365,6 @@ var require_util8 = __commonJS({
module2.exports = {
kEnumerableProperty,
isDisturbed,
- toUSVString,
- isUSVString,
isBlobLike,
parseOrigin,
parseURL,
@@ -21238,6 +21390,7 @@ var require_util8 = __commonJS({
assertRequestHandler,
getSocketInfo,
isFormDataLike,
+ pathHasQueryOrFragment,
serializePathWithQuery,
addAbortListener,
isValidHTTPToken,
@@ -21252,8 +21405,43 @@ var require_util8 = __commonJS({
nodeMinor,
safeHTTPMethods: Object.freeze(["GET", "HEAD", "OPTIONS", "TRACE"]),
wrapRequestBody,
- setupConnectTimeout
+ setupConnectTimeout,
+ getProtocolFromUrlString
+ };
+ }
+});
+
+// node_modules/undici/lib/util/stats.js
+var require_stats = __commonJS({
+ "node_modules/undici/lib/util/stats.js"(exports2, module2) {
+ "use strict";
+ var {
+ kConnected,
+ kPending,
+ kRunning,
+ kSize,
+ kFree,
+ kQueued
+ } = require_symbols6();
+ var ClientStats = class {
+ constructor(client) {
+ this.connected = client[kConnected];
+ this.pending = client[kPending];
+ this.running = client[kRunning];
+ this.size = client[kSize];
+ }
+ };
+ var PoolStats = class {
+ constructor(pool) {
+ this.connected = pool[kConnected];
+ this.free = pool[kFree];
+ this.pending = pool[kPending];
+ this.queued = pool[kQueued];
+ this.running = pool[kRunning];
+ this.size = pool[kSize];
+ }
};
+ module2.exports = { ClientStats, PoolStats };
}
});
@@ -21275,6 +21463,8 @@ var require_diagnostics = __commonJS({
// Request
create: diagnosticsChannel.channel("undici:request:create"),
bodySent: diagnosticsChannel.channel("undici:request:bodySent"),
+ bodyChunkSent: diagnosticsChannel.channel("undici:request:bodyChunkSent"),
+ bodyChunkReceived: diagnosticsChannel.channel("undici:request:bodyChunkReceived"),
headers: diagnosticsChannel.channel("undici:request:headers"),
trailers: diagnosticsChannel.channel("undici:request:trailers"),
error: diagnosticsChannel.channel("undici:request:error"),
@@ -21344,7 +21534,7 @@ var require_diagnostics = __commonJS({
const {
request: { method, path, origin }
} = evt;
- debugLog("sending request to %s %s/%s", method, origin, path);
+ debugLog("sending request to %s %s%s", method, origin, path);
}
);
}
@@ -21362,7 +21552,7 @@ var require_diagnostics = __commonJS({
response: { statusCode }
} = evt;
debugLog(
- "received response to %s %s/%s - HTTP %d",
+ "received response to %s %s%s - HTTP %d",
method,
origin,
path,
@@ -21376,7 +21566,7 @@ var require_diagnostics = __commonJS({
const {
request: { method, path, origin }
} = evt;
- debugLog("trailers received from %s %s/%s", method, origin, path);
+ debugLog("trailers received from %s %s%s", method, origin, path);
}
);
diagnosticsChannel.subscribe(
@@ -21387,7 +21577,7 @@ var require_diagnostics = __commonJS({
error
} = evt;
debugLog(
- "request to %s %s/%s errored - %s",
+ "request to %s %s%s errored - %s",
method,
origin,
path,
@@ -21477,7 +21667,8 @@ var require_request3 = __commonJS({
serializePathWithQuery,
assertRequestHandler,
getServerName,
- normalizedMethodRecords
+ normalizedMethodRecords,
+ getProtocolFromUrlString
} = require_util8();
var { channels } = require_diagnostics();
var { headerNameLowerCasedRecord } = require_constants6();
@@ -21498,7 +21689,8 @@ var require_request3 = __commonJS({
reset,
expectContinue,
servername,
- throwOnError
+ throwOnError,
+ maxRedirections
}, handler) {
if (typeof path !== "string") {
throw new InvalidArgumentError("path must be a string");
@@ -21530,6 +21722,9 @@ var require_request3 = __commonJS({
if (throwOnError != null) {
throw new InvalidArgumentError("invalid throwOnError");
}
+ if (maxRedirections != null && maxRedirections !== 0) {
+ throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");
+ }
this.headersTimeout = headersTimeout;
this.bodyTimeout = bodyTimeout;
this.method = method;
@@ -21571,6 +21766,7 @@ var require_request3 = __commonJS({
this.upgrade = upgrade || null;
this.path = query ? serializePathWithQuery(path, query) : path;
this.origin = origin;
+ this.protocol = getProtocolFromUrlString(origin);
this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
this.blocking = blocking ?? this.method !== "HEAD";
this.reset = reset == null ? null : reset;
@@ -21611,6 +21807,9 @@ var require_request3 = __commonJS({
}
}
onBodySent(chunk) {
+ if (channels.bodyChunkSent.hasSubscribers) {
+ channels.bodyChunkSent.publish({ request: this, chunk });
+ }
if (this[kHandler].onBodySent) {
try {
return this[kHandler].onBodySent(chunk);
@@ -21659,6 +21858,9 @@ var require_request3 = __commonJS({
onData(chunk) {
assert(!this.aborted);
assert(!this.completed);
+ if (channels.bodyChunkReceived.hasSubscribers) {
+ channels.bodyChunkReceived.publish({ request: this, chunk });
+ }
try {
return this[kHandler].onData(chunk);
} catch (err) {
@@ -21997,16 +22199,19 @@ var require_dispatcher_base2 = __commonJS({
var kOnDestroyed = Symbol("onDestroyed");
var kOnClosed = Symbol("onClosed");
var DispatcherBase = class extends Dispatcher {
- constructor() {
- super();
- this[kDestroyed] = false;
- this[kOnDestroyed] = null;
- this[kClosed] = false;
- this[kOnClosed] = [];
- }
+ /** @type {boolean} */
+ [kDestroyed] = false;
+ /** @type {Array|null} */
+ [kOnDestroyed] = null;
+ /** @type {boolean} */
+ [kClosed] = false;
+ /** @type {Array} */
+ [kOnClosed] = [];
+ /** @returns {boolean} */
get destroyed() {
return this[kDestroyed];
}
+ /** @returns {boolean} */
get closed() {
return this[kClosed];
}
@@ -22127,55 +22332,32 @@ var require_connect2 = __commonJS({
var util = require_util8();
var { InvalidArgumentError } = require_errors2();
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;
- }
- 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) {
+ var SessionCache = class WeakSessionCache {
+ constructor(maxCachedSessions) {
+ this._maxCachedSessions = maxCachedSessions;
+ this._sessionCache = /* @__PURE__ */ new Map();
+ this._sessionRegistry = new FinalizationRegistry((key) => {
+ if (this._sessionCache.size < this._maxCachedSessions) {
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;
+ const ref = this._sessionCache.get(key);
+ if (ref !== void 0 && ref.deref() === void 0) {
+ this._sessionCache.delete(key);
}
- if (this._sessionCache.size >= this._maxCachedSessions) {
- const { value: oldestKey } = this._sessionCache.keys().next();
- this._sessionCache.delete(oldestKey);
- }
- this._sessionCache.set(sessionKey, session);
+ });
+ }
+ 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 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");
@@ -22255,16 +22437,14 @@ var require_utils3 = __commonJS({
"node_modules/undici/lib/llhttp/utils.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
- exports2.enumToMap = void 0;
+ exports2.enumToMap = enumToMap;
function enumToMap(obj, filter = [], exceptions = []) {
- var _a, _b;
- const emptyFilter = ((_a = filter === null || filter === void 0 ? void 0 : filter.length) !== null && _a !== void 0 ? _a : 0) === 0;
- const emptyExceptions = ((_b = exceptions === null || exceptions === void 0 ? void 0 : exceptions.length) !== null && _b !== void 0 ? _b : 0) === 0;
+ const emptyFilter = (filter?.length ?? 0) === 0;
+ const emptyExceptions = (exceptions?.length ?? 0) === 0;
return Object.fromEntries(Object.entries(obj).filter(([, value]) => {
return typeof value === "number" && (emptyFilter || filter.includes(value)) && (emptyExceptions || !exceptions.includes(value));
}));
}
- exports2.enumToMap = enumToMap;
}
});
@@ -22311,7 +22491,8 @@ var require_constants7 = __commonJS({
CB_HEADER_VALUE_COMPLETE: 29,
CB_CHUNK_EXTENSION_NAME_COMPLETE: 34,
CB_CHUNK_EXTENSION_VALUE_COMPLETE: 35,
- CB_RESET: 31
+ CB_RESET: 31,
+ CB_PROTOCOL_COMPLETE: 38
};
exports2.TYPE = {
BOTH: 0,
@@ -22854,6 +23035,39 @@ var require_constants7 = __commonJS({
"transfer-encoding": exports2.HEADER_STATE.TRANSFER_ENCODING,
"upgrade": exports2.HEADER_STATE.UPGRADE
};
+ exports2.default = {
+ ERROR: exports2.ERROR,
+ TYPE: exports2.TYPE,
+ FLAGS: exports2.FLAGS,
+ LENIENT_FLAGS: exports2.LENIENT_FLAGS,
+ METHODS: exports2.METHODS,
+ STATUSES: exports2.STATUSES,
+ FINISH: exports2.FINISH,
+ HEADER_STATE: exports2.HEADER_STATE,
+ ALPHA: exports2.ALPHA,
+ NUM_MAP: exports2.NUM_MAP,
+ HEX_MAP: exports2.HEX_MAP,
+ NUM: exports2.NUM,
+ ALPHANUM: exports2.ALPHANUM,
+ MARK: exports2.MARK,
+ USERINFO_CHARS: exports2.USERINFO_CHARS,
+ URL_CHAR: exports2.URL_CHAR,
+ HEX: exports2.HEX,
+ TOKEN: exports2.TOKEN,
+ HEADER_CHARS: exports2.HEADER_CHARS,
+ CONNECTION_TOKEN_CHARS: exports2.CONNECTION_TOKEN_CHARS,
+ QUOTED_STRING: exports2.QUOTED_STRING,
+ HTAB_SP_VCHAR_OBS_TEXT: exports2.HTAB_SP_VCHAR_OBS_TEXT,
+ MAJOR: exports2.MAJOR,
+ MINOR: exports2.MINOR,
+ SPECIAL_HEADERS: exports2.SPECIAL_HEADERS,
+ METHODS_HTTP: exports2.METHODS_HTTP,
+ METHODS_ICE: exports2.METHODS_ICE,
+ METHODS_RTSP: exports2.METHODS_RTSP,
+ METHOD_MAP: exports2.METHOD_MAP,
+ H_METHOD_MAP: exports2.H_METHOD_MAP,
+ STATUSES_HTTP: exports2.STATUSES_HTTP
+ };
}
});
@@ -22862,7 +23076,7 @@ var require_llhttp_wasm2 = __commonJS({
"node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
"use strict";
var { Buffer: Buffer2 } = require("node:buffer");
- var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzQzBQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEDAAADAAAABAUBcAESEgUDAQACBggBfwFBgNgECwfFBygGbWVtb3J5AgALX2luaXRpYWxpemUACBlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQACRhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUANgxsbGh0dHBfYWxsb2MACwZtYWxsb2MAOAtsbGh0dHBfZnJlZQAMBGZyZWUADA9sbGh0dHBfZ2V0X3R5cGUADRVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADhVsbGh0dHBfZ2V0X2h0dHBfbWlub3IADxFsbGh0dHBfZ2V0X21ldGhvZAAQFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAERJsbGh0dHBfZ2V0X3VwZ3JhZGUAEgxsbGh0dHBfcmVzZXQAEw5sbGh0dHBfZXhlY3V0ZQAUFGxsaHR0cF9zZXR0aW5nc19pbml0ABUNbGxodHRwX2ZpbmlzaAAWDGxsaHR0cF9wYXVzZQAXDWxsaHR0cF9yZXN1bWUAGBtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGRBsbGh0dHBfZ2V0X2Vycm5vABoXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AGxdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAcFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB0RbGxodHRwX2Vycm5vX25hbWUAHhJsbGh0dHBfbWV0aG9kX25hbWUAHxJsbGh0dHBfc3RhdHVzX25hbWUAIBpsbGh0dHBf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a0E+aiECCyABIAI2AhwgAUIANwIQIAJBAnRBsNYAaiEAAkBBhNQAKAIAIgNBASACdCIHcUUEQCAAIAE2AgBBhNQAIAMgB3I2AgAgASAANgIYIAEgATYCCCABIAE2AgwMAQsgBEEZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEAAkADQCAAIgMoAgRBeHEgBEYNASACQR12IQAgAkEBdCECIAMgAEEEcWpBEGoiBygCACIADQALIAcgATYCACABIAM2AhggASABNgIMIAEgATYCCAwBCyADKAIIIgAgATYCDCADIAE2AgggAUEANgIYIAEgAzYCDCABIAA2AggLQaDUAEGg1AAoAgBBAWsiAEF/IAAbNgIACwsHACAALQAoCwcAIAAtACoLBwAgAC0AKwsHACAALQApCwcAIAAvATQLBwAgAC0AMAtAAQR/IAAoAhghASAALwEuIQIgAC0AKCEDIAAoAjghBCAAEDcgACAENgI4IAAgAzoAKCAAIAI7AS4gACABNgIYC8X4AQIHfwN+IAEgAmohBAJAIAAiAygCDCIADQAgAygCBARAIAMgATYCBAsjAEEQayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDtQBAAECAwQFBgcICQoLDA0ODxARFBUWFxgZGhscHR4fICEjJCUnKCmIA4cDhQOEA/wC9QLuAusC6ALmAuMC4ALfAt0C2wLWAtUC1ALTAtICygLJAsgCxwLGAsUCxALDAr0CvAK6ArkCuAK3ArYCtQK0ArICsQKsAqoCqAKnAqYCpQKkAqMCogKhAqACnwKbApoCmQKYApcCkAKIAoQCgwKCAvkB9gH1AfQB8wHyAfEB8AHvAe0B6wHoAeMB4QHgAd8B3gHdAdwB2wHaAdkB2AHX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QEBAQEBAQEBAQEBAAEALQQAhAiADQQA2AhwgA0G3CzYCECADQQI2AgwgAyABQQFqNgIUDIEDCyADQS9qIQIDQCABIARGBEBBISECDIIDCwJAAkACQCABLQAAIgBBCWsOGAIAKioBKioqKioqKioqKioqKioqKioqAigLIAFBAWohASADQS9qLQAAQQFxRQ0LDBkLIAFBAWohAQwYCyABQQFqIQEgAi0AAEECcQ0AC0EAIQIgA0EANgIcIAMgATYCFCADQc4UNgIQIANBDDYCDAyAAwsgAUEBaiEBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADQEM0QILIANCADcDIAw8CyAAQRVGBEAgA0EkNgIcIAMgATYCFCADQYYaNgIQIANBFTYCDEEAIQIM/QILQQAhAiADQQA2AhwgAyABNgIUIANB4g02AhAgA0EUNgIMDPwCCyADKAIEIQBBACECIANBADYCBCADIAAgASAMp2oiARAxIgBFDSsgA0EHNgIcIAMgATYCFCADIAA2AgwM+wILIAMtAC5BwABxRQ0BC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAARQ0rIABBFUYEQCADQQo2AhwgAyABNgIUIANB8Rg2AhAgA0EVNgIMQQAhAgz6AgtBACECIANBADYCHCADIAE2AhQgA0GLDDYCECADQRM2AgwM+QILQQAhAiADQQA2AhwgAyABNgIUIANBsRQ2AhAgA0ECNgIMDPgCC0EAIQIgA0EANgIcIAMgATYCFCADQYwUNgIQIANBGTYCDAz3AgtBACECIANBADYCHCADIAE2AhQgA0HRHDYCECADQRk2AgwM9gILIABBFUYNPUEAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAz1AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQ0oIANBDTYCHCADIAE2AhQgAyAANgIMDPQCCyAAQRVGDTpBACECIANBADYCHCADIAE2AhQgA0GiDzYCECADQSI2AgwM8wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDIiAEUEQCABQQFqIQEMKAsgA0EONgIcIAMgADYCDCADIAFBAWo2AhQM8gILIABBFUYNN0EAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAzxAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQRAIAFBAWohAQwnCyADQQ82AhwgAyAANgIMIAMgAUEBajYCFAzwAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM7wILIABBFUYNM0EAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzuAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQ0lIANBETYCHCADIAE2AhQgAyAANgIMDO0CCyAAQRVGDTBBACECIANBADYCHCADIAE2AhQgA0HODDYCECADQSM2AgwM7AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEMJQsgA0ESNgIcIAMgADYCDCADIAFBAWo2AhQM6wILIANBL2otAABBAXFFDQELQRUhAgzPAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM6AILIABBO0cNACABQQFqIQEMDAtBACECIANBADYCHCADIAE2AhQgA0GYFzYCECADQQI2AgwM5gILIABBFUYNKEEAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzlAgsgA0EUNgIcIAMgATYCFCADIAA2AgwM5AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEM3AILIANBFTYCHCADIAA2AgwgAyABQQFqNgIUDOMCCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNoCCyADQRc2AhwgAyAANgIMIAMgAUEBajYCFAziAgsgAEEVRg0jQQAhAiADQQA2AhwgAyABNgIUIANBzgw2AhAgA0EjNgIMDOECCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDB0LIANBGTYCHCADIAA2AgwgAyABQQFqNgIUDOACCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNYCCyADQRo2AhwgAyAANgIMIAMgAUEBajYCFAzfAgsgAEEVRg0fQQAhAiADQQA2AhwgAyABNgIUIANBog82AhAgA0EiNgIMDN4CCyADKAIEIQBBACEC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DLMCCyABIARGBEBB6QEhAgyzAgsgAS0AAEHIAEYNASADQQE6ACgLQbYBIQIMlwILQcoBIQIMlgILIAEgBEcEQCADQQw2AgggAyABNgIEQckBIQIMlgILQegBIQIMrwILIAEgBEYEQEHnASECDK8CCyABLQAAQcgARw0EIAFBAWohAUHIASECDJQCCyABIARGBEBB5gEhAgyuAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQcYBIQIMlAILIAFBAWohAUHHASECDJMCC0HlASECIAEgBEYNrAIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB99MAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMrQILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgBFBEBB1AEhAgyTAgsgA0HkATYCHCADIAE2AhQgAyAANgIMQQAhAgysAgtB4wEhAiABIARGDasCIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQfXTAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADKwCCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB0B42AhAgA0EINgIMDKkCC0HFASECDI4CCyADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDKcCC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ1lIABBFUcEQCADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgynAgsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDKYCC0HhASECIAQgASIARg2lAiAEIAFrIAMoAgAiAWohBSAAIAFrQQRqIQYCQANAIAAtAAAgAUHw0wBqLQAARw0BIAFBBEYNAyABQQFqIQEgBCAAQQFqIgBHDQALIAMgBTYCAAymAgsgA0EANgIcIAMgADYCFCADQYQ3NgIQIANBCDYCDCADQQA2AgBBACECDKUCCyABIARHBEAgA0ENNgIIIAMgATYCBEHCASECDIsCC0HgASECDKQCCyADQQA2AgAgBkEBaiEBC0HDASECDIgCCyABIARGBEBB3wEhAgyiAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBwQEhAgyIAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYgCIANB3gE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAEgBEYEQEHdASECDKECCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYkCIANB3AE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILQcABIQIMhgILIAEgBEYEQEHbASECDKACC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDQIgA0HYATYCHCADIAE2AhQgAyAANgIMQQAhAgyiAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYsCIANB2QE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ2JAiADQdoBNgIcIAMgATYCFCADIAA2AgwMoAILQb8BIQIMhQILQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBnA02AhAgA0EhNgIMQQAhAgygAgtBvgEhAgyFAgsgA0HXATYCHCADIAE2AhQgA0HWGTYCECADQRU2AgxBACECDJ4CCyABIARGBEBB1wEhAgyeAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANB6xA2AhAgA0EJNgIMQQAhAgyeAgtBvQEhAgyDAgsgASAERgRAQdYBIQIM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LgsgAUEBaiEBQZcBIQIM2AELIAFBAWohAUEiDCsLIAEgBEYEQEGvASECDPEBCyABLQAAQdAARw0rIAFBAWohAUGWASECDNYBCyABIARGBEBBrgEhAgzwAQsCQAJAIAEtAABBxgBrDgsALCwsLCwsLCwsASwLIAFBAWohAUGUASECDNYBCyABQQFqIQFBlQEhAgzVAQtBrQEhAiABIARGDe4BIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazTAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO8BCyADQQA2AgAgBkEBaiEBQQ0MKAtBrAEhAiABIARGDe0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQeHTAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO4BCyADQQA2AgAgBkEBaiEBQQwMJwtBqwEhAiABIARGDewBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQarTAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO0BCyADQQA2AgAgBkEBaiEBQQMMJgtBqgEhAiABIARGDesBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQajTAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOwBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQakBIQIM6wELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBjwEhAgzRAQsgAUEBaiEBQZABIQIM0AELQagBIQIgASAERg3pASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm0wBqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzqAQsgA0EANgIAIAZBAWohAUEnDCMLQacBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk0wBqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEcDCILQaYBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGe0wBqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEGDCELQaUBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGZ0wBqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGkASECDOYBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQYQBIQIMzgELIAFBAWohAUGFASECDM0BCyABQQFqIQFBigEhAgzMAQsgAUEBaiEBQYsBIQIMywELQaMBIQIgASAERg3kASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGX0wBqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzlAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGiASECDOQBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGGASECDMoBCyABQQFqIQFBiQEhAgzJAQsgASAERgRAQaEBIQIM4wELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQYcBIQIMyQELIAFBAWohAUGIASECDMgBCyABIARGBEBBoAEhAgziAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GfASECIAEgBEYN4AEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBkdMAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4QELIANBADYCACAGQQFqIQFBHgwaC0GeASECIAEgBEYN3wEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBitMAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4AELIANBADYCACAGQQFqIQFBFQwZC0GdASECIAEgBEYN3gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBh9MAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3wELIANBADYCACAGQQFqIQFBFwwYC0GcASECIAEgBEYN3QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBgdMAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3gELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBmwEhAgzdAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYEBIQIMwwELIAFBAWohAUGCASECDMIBC0GaASECIAEgBEYN2wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5tMAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3AELIANBADYCACAGQQFqIQFBCQwVC0GZASECIAEgBEYN2gEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5NMAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2wELIANBADYCACAGQQFqIQFBHwwUC0GYASECIAEgBEYN2QEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB/tIAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2gELIANBADYCACAGQQFqIQFBAgwTC0GXASECIAEgBEYN2AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQfzSAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyABIARGBEBBlgEhAgzYAQtBASABLQAAQd8ARw0RGiABQQFqIQFB/QAhAgy9AQsgA0EANgIAIAZBAWohAUH+ACECDLwBC0GVASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBxNMAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBKQwPC0GUASECIAEgBEYN1AEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB+NIAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1QELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBkwEhAgzUAQsgAS0AAEHFAEcNDiABQQFqIQFB+gAhAgy5AQsgASAERgRAQZIBIQIM0wELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFB+AAhAgy5AQsgAUEBaiEBQfkAIQIMuAELQZEBIQIgASAERg3RASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHz0gBqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzSAQsgA0EANgIAIAZBAWohAUEjDAsLQZABIQIgASAERg3QASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHw0gBqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzRAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGPASECDNABCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQfMAIQIMtgELIAFBAWohAUH2ACECDLUBCyABIARGBEBBjgEhAgzPAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB9AAhAgy1AQsgAUEBaiEBQfUAIQIMtAELIAEgBEYEQEGNASECDM4BCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQYwBIQIgASAERg3MASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHs0gBqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzNAQsgA0EANgIAIAZBAWohAUEFDAYLQYsBIQIgASAERg3LASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHm0gBqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzMAQsgA0EANgIAIAZBAWohAUEWDAULQYoBIQIgASAERg3KASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHh0wBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzLAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGJASECDMoBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUHvACECDLABCyABQQFqIQFB8AAhAgyvAQtBiAEhAiABIARGDcgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQeDSAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMkBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGHASECDMcBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC0iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB6R42AhAgA0EGNgIMDMQBC0HuACECDKkBCyADQYYBNgIcIAMgATYCFCADIAA2AgxBACECDMIBC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgzBAQtB7QAhAgymAQsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDL8BCyABIARGBEBBhQEhAgy/AQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GGHjYCECADQQY2AgxBACECDL8BC0ECIQIMpAELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GEASECDL0BCyABIARGBEBBgwEhAgy9AQsCQCABLQAAQQlrDgRAAABAAAtB6wAhAgyiAQsgAy0AKUEFRgRAQewAIQIMogELQeoAIQIMoQELIAEgBEYEQEGCASECDLsBCyADQQ82AgggAyABNgIEDAoLIAEgBEYEQEGBASECDLoBCwJAIAEtAABBCWsOBD0AAD0AC0HpACECDJ8BCyABIARHBEAgA0EPNgIIIAMgATYCBEHnACECDJ8BC0GAASECDLgBCwJAIAEgBEcEQANAIAEtAABB4M4Aai0AACIAQQNHBEACQCAAQQFrDgI/AAQLQeYAIQIMoQELIAQgAUEBaiIBRw0AC0H+ACECDLkBC0H+ACECDLgBCyADQQA2AhwgAyABNgIUIANBxh82AhAgA0EHNgIMQQAhAgy3AQsgASAERgRAQf8AIQIMtwELAkACQAJAIAEtAABB4NAAai0AAEEBaw4DPAIAAQtB6AAhAgyeAQsgA0EANgIcIAMgATYCFCADQYYSNgIQIANBBzYCDEEAIQIMtwELQeAAIQIMnAELIAEgBEcEQCABQQFqIQFB5QAhAgycAQtB/QAhAgy1AQsgBCABIgBGBEBB/AAhAgy1AQsgAC0AACIBQS9GBEAgAEEBaiEBQeQAIQIMmwELIAFBCWsiAkEXSw0BIAAhAUEBIAJ0QZuAgARxDTcMAQsgBCABIgBGBEBB+wAhAgy0AQsgAC0AAEEvRw0AIABBAWohAQwDC0EAIQIgA0EANgIcIAMgADYCFCADQcYfNgIQIANBBzYCDAyyAQsCQAJAAkACQAJAA0AgAS0AAEHgzABqLQAAIgBBBUcEQAJAAkAgAEEBaw4IPQUGBwgABAEIC0HhACECDJ8BCyABQQFqIQFB4wAhAgyeAQsgBCABQQFqIgFHDQALQfoAIQIMtgELIAFBAWoMFAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgy0AQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyzAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyyAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMsQELIAEgBEYEQEH5ACECDLEBCwJAIAEtAABB4MwAai0AAEEBaw4INAQFBgAIAgMHCyABQQFqIQELQQMhAgyVAQsgAUEBagwNC0EAIQIgA0EANgIcIANBoxI2AhAgA0EHNgIMIAMgAUEBajYCFAytAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgysAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMqQELQeIAIQIMjgELIAEgBEYEQEH4ACECDKgBCyABQQFqDAILIAEgBEYEQEH3ACECDKcBCyABQQFqDAELIAEgBEYNASABQQFqCyEBQQQhAgyKAQtB9gAhAgyjAQsDQCABLQAAQeDKAGotAAAiAEECRwRAIABBAUcEQEHfACECDIsBCwwnCyAEIAFBAWoiAUcNAAtB9QAhAgyiAQsgASAERgRAQfQAIQIMogELAkAgAS0AAEEJaw43JQMGJQQGBgYGBgYGBgYGBgYGBgYGBgYFBgYCBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAYLIAFBAWoLIQFBBSECDIYBCyABQQFqDAYLIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMngELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMnQELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB8AA2AhwgAyABNgIUIAMgADYCDEEAIQIMnAELIANBADYCHCADIAE2AhQgA0G8EzYCECADQQc2AgxBACECDJsBCwJAAkACQAJAA0AgAS0AAEHgyABqLQAAIgBBBUcEQAJAIABBAWsOBiQDBAUGAAYLQd4AIQIMhgELIAQgAUEBaiIBRw0AC0HzACECDJ4BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQdsANgIcIAMgATYCFCADIAA2AgxBACECDJ0BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDJwBCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQfAANgIcIAMgATYCFCADIAA2AgxBACECDJsBCyADQQA2AhwgAyABNgIUIANB3Ag2AhAgA0EHNgIMQQAhAgyaAQsgASAERg0BIAFBAWoLIQFBBiECDH4LQfIAIQIMlwELAkACQAJAAkADQCABLQAAQeDGAGotAAAiAEEFRwRAIABBAWsOBB8CAwQFCyAEIAFBAWoiAUcNAAtB8QAhAgyaAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyZAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyYAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyXAQsgA0EANgIcIAMgATYCFCADQbQKNgIQIANBBzYCDEEAIQIMlgELQc4AIQIMewtB0AAhAgx6C0HdACECDHkLIAEgBEYEQEHwACECDJMBCwJAIAEtAABBCWsOBBYAABYACyABQQFqIQFB3AAhAgx4CyABIARGBEBB7wAhAgySAQsCQCABLQAAQQlrDgQVAAAVAAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUEQEHTASECDHgLIABBFUcEQCADQQA2AhwgAyABNgIUIANBwQ02AhAgA0EaNgIMQQAhAgySAQsgA0HuADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDJEBC0HtACECIAEgBEYNkAEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB18YAai0AAEcNBCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMkQELIANBADYCACAGQQFqIQEgAy0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACECIANBADYCHCADIAE2AhQgA0HlCTYCECADQQg2AgwMkAELQewAIQIgASAERg2PASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHUxgBqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyQAQsgA0EANgIAIAZBAWohASADLQApQSFGDQMgA0EANgIcIAMgATYCFCADQYkKNgIQIANBCDYCDEEAIQIMjwELQesAIQIgASAERg2OASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHQxgBqLQAARw0CIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyPAQsgA0EANgIAIAZBAWohASADLQApIgBBI0kNAiAAQS5GDQIgA0EANgIcIAMgATYCFCADQcEJNgIQIANBCDYCDEEAIQIMjgELIANBADYCAAtBACECIANBADYCHCADIAE2AhQgA0GENzYCECADQQg2AgwMjAELQdgAIQIMcQsgASAERwRAIANBDTYCCCADIAE2AgRB1wAhAgxxC0HqACECDIoBCyABIARGBEBB6QAhAgyKAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1gAhAgxwCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdCADQegANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyABIARGBEBB5wAhAgyJAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ11IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMiQELQdUAIQIMbgsgASAERgRAQeUAIQIMiAELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDIoBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdyADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdSADQeQANgIcIAMgATYCFCADIAA2AgwMiAELQdMAIQIMbQsgAy0AKUEiRg2AAUHSACECDGwLQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALIABFBEBB1AAhAgxsCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQZwNNgIQIANBITYCDEEAIQIMhgELIANB4QA2AhwgAyABNgIUIANB1hk2AhAgA0EVNgIMQQAhAgyFAQsgASAERgRAQeAAIQIMhQELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HRACECDGwLIANBADYCHCADIAE2AhQgA0GIETYCECADQQk2AgxBACECDIUBCyADQQA2AhwgAyABNgIUIANBiBE2AhAgA0EJNgIMQQAhAgyEAQsgASAERgRAQd8AIQIMhAELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBiBE2AhAgA0ECNgIMQQAhAgyDAQsgASAERgRAQd0AIQIMgwELIAEtAAAiAkENRgRAIAFBAWohAUHPACECDGkLIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyCAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0G1LDYCECADQQc2AgwMgAELIAEgBEYEQEHbACECDIABCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc0AIQIMZAsgASAERgRAQdoAIQIMfgsgAS0AAEEJaw4EAAEBAAELQQAhAiADQQA2AhwgA0HsETYCECADQQc2AgwgAyABQQFqNgIUDHwLIANBgBI7ASpBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNACAAQRVHDQEgA0HZADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDHsLQcwAIQIMYAsgA0EANgIcIAMgATYCFCADQcENNgIQIANBGjYCDEEAIQIMeQsgASAERgRAQdkAIQIMeQsgAS0AAEEgRw06IAFBAWohASADLQAuQQFxDTogA0EANgIcIAMgATYCFCADQa0bNgIQIANBHjYCDEEAIQIMeAsgASAERgRAQdgAIQIMeAsCQAJAAkACQAJAIAEtAAAiAEEKaw4EAgMD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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQTBrDjcVFAABAgMEBQYHFhYWFhYWFggJCgsMDRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QERITFgtCAiEKDBQLQgMhCgwTC0IEIQoMEgtCBSEKDBELQgYhCgwQC0IHIQoMDwtCCCEKDA4LQgkhCgwNC0IKIQoMDAtCCyEKDAsLQgwhCgwKC0INIQoMCQtCDiEKDAgLQg8hCgwHC0IKIQoMBgtCCyEKDAULQgwhCgwEC0INIQoMAwtCDiEKDAILQg8hCgwBC0IBIQoLIAFBAWohASADKQMgIgtC//////////8PWARAIAMgC0IEhiAKhDcDIAwCC0EAIQIgA0EANgIcIAMgATYCFCADQa0JNgIQIANBDDYCDAwfC0ElIQIMBAtBJiECDAMLIAMgAToALCADQQA2AgAgB0EBaiEBQQwhAgwCCyADQQA2AgAgBkEBaiEBQQohAgwBCyABQQFqIQFBCCECDAALAAtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMGAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMFwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMFgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMFQtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMFAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMEwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMEgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMEQtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMEAtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMDwtBACECIANBADYCHCADIAE2AhQgA0HIEjYCECADQQs2AgwMDgtBACECIANBADYCHCADIAE2AhQgA0GVCTYCECADQQs2AgwMDQtBACECIANBADYCHCADIAE2AhQgA0HpDzYCECADQQo2AgwMDAtBACECIANBADYCHCADIAE2AhQgA0GDEDYCECADQQo2AgwMCwtBACECIANBADYCHCADIAE2AhQgA0GmHDYCECADQQI2AgwMCgtBACECIANBADYCHCADIAE2AhQgA0HFFTYCECADQQI2AgwMCQtBACECIANBADYCHCADIAE2AhQgA0H/FzYCECADQQI2AgwMCAtBACECIANBADYCHCADIAE2AhQgA0HKFzYCECADQQI2AgwMBwsgA0ECNgIcIAMgATYCFCADQZQdNgIQIANBFjYCDEEAIQIMBgtB3gAhAiABIARGDQUgCUEIaiEHIAMoAgAhBQJAAkAgASAERwRAIAVBxsYAaiEIIAQgBWogAWshBiAFQX9zQQpqIgUgAWohAANAIAEtAAAgCC0AAEcEQEECIQgMAwsgBUUEQEEAIQggACEBDAMLIAVBAWshBSAIQQFqIQggBCABQQFqIgFHDQALIAYhBSAEIQELIAdBATYCACADIAU2AgAMAQsgA0EANgIAIAcgCDYCAAsgByABNgIEIAkoAgwhACAJKAIIDgMBBQIACwALIANBADYCHCADQa0dNgIQIANBFzYCDCADIABBAWo2AhRBACECDAMLIANBADYCHCADIAA2AhQgA0HCHTYCECADQQk2AgxBACECDAILIAEgBEYEQEEoIQIMAgsgA0EJNgIIIAMgATYCBEEnIQIMAQsgASAERgRAQQEhAgwBCwNAAkACQAJAIAEtAABBCmsOBAABAQABCyABQQFqIQEMAQsgAUEBaiEBIAMtAC5BIHENAEEAIQIgA0EANgIcIAMgATYCFCADQYwgNgIQIANBBTYCDAwCC0EBIQIgASAERw0ACwsgCUEQaiQAIAJFBEAgAygCDCEADAELIAMgAjYCHEEAIQAgAygCBCIBRQ0AIAMgASAEIAMoAggRAQAiAUUNACADIAQ2AhQgAyABNgIMIAEhAAsgAAu+AgECfyAAQQA6AAAgAEHcAGoiAUEBa0EAOgAAIABBADoAAiAAQQA6AAEgAUEDa0EAOgAAIAFBAmtBADoAACAAQQA6AAMgAUEEa0EAOgAAQQAgAGtBA3EiASAAaiIAQQA2AgBB3AAgAWtBfHEiAiAAaiIBQQRrQQA2AgACQCACQQlJDQAgAEEANgIIIABBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIAJBGUkNACAAQQA2AhggAEEANgIUIABBADYCECAAQQA2AgwgAUEQa0EANgIAIAFBFGtBADYCACABQRhrQQA2AgAgAUEca0EANgIAIAIgAEEEcUEYciICayIBQSBJDQAgACACaiEAA0AgAEIANwMYIABCADcDECAAQgA3AwggAEIANwMAIABBIGohACABQSBrIgFBH0sNAAsLC1YBAX8CQCAAKAIMDQACQAJAAkACQCAALQAxDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgAREAACIBDQMLQQAPCwALIABB0Bg2AhBBDiEBCyABCxoAIAAoAgxFBEAgAEHJHjYCECAAQRU2AgwLCxQAIAAoAgxBFUYEQCAAQQA2AgwLCxQAIAAoAgxBFkYEQCAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsXACAAQSRPBEAACyAAQQJ0QZQ3aigCAAsXACAAQS9PBEAACyAAQQJ0QaQ4aigCAAu/CQEBf0HfLCEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHkAGsO9ANjYgABYWFhYWFhAgMEBWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEGBwgJCgsMDQ4PYWFhYWEQYWFhYWFhYWFhYWERYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhEhMUFRYXGBkaG2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEcHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTZhNzg5OmFhYWFhYWFhO2FhYTxhYWFhPT4/YWFhYWFhYWFAYWFBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhQkNERUZHSElKS0xNTk9QUVJTYWFhYWFhYWFUVVZXWFlaW2FcXWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYV5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFfYGELQdUrDwtBgyUPC0G/MA8LQfI1DwtBtCgPC0GfKA8LQYEsDwtB1ioPC0H0Mw8LQa0zDwtByygPC0HOIw8LQcAjDwtB2SMPC0HRJA8LQZwzDwtBojYPC0H8Mw8LQeArDwtB4SUPC0HtIA8LQcQyDwtBqScPC0G5Ng8LQbggDwtBqyAPC0GjJA8LQbYkDwtBgSMPC0HhMg8LQZ80DwtByCkPC0HAMg8LQe4yDwtB8C8PC0HGNA8LQdAhDwtBmiQPC0HrLw8LQYQ1DwtByzUPC0GWMQ8LQcgrDwtB1C8PC0GTMA8LQd81DwtBtCMPC0G+NQ8LQdIpDwtBsyIPC0HNIA8LQZs2DwtBkCEPC0H/IA8LQa01DwtBsDQPC0HxJA8LQacqDwtB3TAPC0GLIg8LQcgvDwtB6yoPC0H0KQ8LQY8lDwtB3SIPC0HsJg8LQf0wDwtB1iYPC0GUNQ8LQY0jDwtBuikPC0HHIg8LQfIlDwtBtjMPC0GiIQ8LQf8vDwtBwCEPC0GBMw8LQcklDwtBqDEPC0HGMw8LQdM2DwtBxjYPC0HkNA8LQYgmDwtB7ScPC0H4IQ8LQakwDwtBjzQPC0GGNg8LQaovDwtBoSYPC0HsNg8LQZIpDwtBryYPC0GZIg8LQeAhDwsAC0G1JSEBCyABCxcAIAAgAC8BLkH+/wNxIAFBAEdyOwEuCxoAIAAgAC8BLkH9/wNxIAFBAEdBAXRyOwEuCxoAIAAgAC8BLkH7/wNxIAFBAEdBAnRyOwEuCxoAIAAgAC8BLkH3/wNxIAFBAEdBA3RyOwEuCxoAIAAgAC8BLkHv/wNxIAFBAEdBBHRyOwEuCxoAIAAgAC8BLkHf/wNxIAFBAEdBBXRyOwEuCxoAIAAgAC8BLkG//wNxIAFBAEdBBnRyOwEuCxoAIAAgAC8BLkH//gNxIAFBAEdBB3RyOwEuCxoAIAAgAC8BLkH//QNxIAFBAEdBCHRyOwEuCxoAIAAgAC8BLkH/+wNxIAFBAEdBCXRyOwEuCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBzhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB5Ao2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB5R02AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBnRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBoh42AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7hQ2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9xs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRU2AhBBGCEECyAECzgAIAACfyAALwEyQRRxQRRGBEBBASAALQAoQQFGDQEaIAAvATRB5QBGDAELIAAtAClBBUYLOgAwC1kBAn8CQCAALQAoQQFGDQAgAC8BNCIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMiIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEyIgFBAnFFDQEMAgsgAC8BMiIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATQiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtXACAAQRhqQgA3AwAgAEIANwMAIABBOGpCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABB7AE2AhwLBgAgABA5C5otAQt/IwBBEGsiCiQAQZjUACgCACIJRQRAQdjXACgCACIFRQRAQeTXAEJ/NwIAQdzXAEKAgISAgIDAADcCAEHY1wAgCkEIakFwcUHYqtWqBXMiBTYCAEHs1wBBADYCAEG81wBBADYCAAtBwNcAQYDYBDYCAEGQ1ABBgNgENgIAQaTUACAFNgIAQaDUAEF/NgIAQcTXAEGAqAM2AgADQCABQbzUAGogAUGw1ABqIgI2AgAgAiABQajUAGoiAzYCACABQbTUAGogAzYCACABQcTUAGogAUG41ABqIgM2AgAgAyACNgIAIAFBzNQAaiABQcDUAGoiAjYCACACIAM2AgAgAUHI1ABqIAI2AgAgAUEgaiIBQYACRw0AC0GM2ARBwacDNgIAQZzUAEHo1wAoAgA2AgBBjNQAQcCnAzYCAEGY1ABBiNgENgIAQcz/B0E4NgIAQYjYBCEJCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFNBEBBgNQAKAIAIgZBECAAQRNqQXBxIABBC0kbIgRBA3YiAHYiAUEDcQRAAkAgAUEBcSAAckEBcyICQQN0IgBBqNQAaiIBIABBsNQAaigCACIAKAIIIgNGBEBBgNQAIAZBfiACd3E2AgAMAQsgASADNgIIIAMgATYCDAsgAEEIaiEBIAAgAkEDdCICQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDBELQYjUACgCACIIIARPDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIAQQN0IgJBqNQAaiIBIAJBsNQAaigCACICKAIIIgNGBEBBgNQAIAZBfiAAd3EiBjYCAAwBCyABIAM2AgggAyABNgIMCyACIARBA3I2AgQgAEEDdCIAIARrIQUgACACaiAFNgIAIAIgBGoiBCAFQQFyNgIEIAgEQCAIQXhxQajUAGohAEGU1AAoAgAhAwJ/QQEgCEEDdnQiASAGcUUEQEGA1AAgASAGcjYCACAADAELIAAoAggLIgEgAzYCDCAAIAM2AgggAyAANgIMIAMgATYCCAsgAkEIaiEBQZTUACAENgIAQYjUACAFNgIADBELQYTUACgCACILRQ0BIAtoQQJ0QbDWAGooAgAiACgCBEF4cSAEayEFIAAhAgNAAkAgAigCECIBRQRAIAJBFGooAgAiAUUNAQsgASgCBEF4cSAEayIDIAVJIQIgAyAFIAIbIQUgASAAIAIbIQAgASECDAELCyAAKAIYIQkgACgCDCIDIABHBEBBkNQAKAIAGiADIAAoAggiATYCCCABIAM2AgwMEAsgAEEUaiICKAIAIgFFBEAgACgCECIBRQ0DIABBEGohAgsDQCACIQcgASIDQRRqIgIoAgAiAQ0AIANBEGohAiADKAIQIgENAAsgB0EANgIADA8LQX8hBCAAQb9/Sw0AIABBE2oiAUFwcSEEQYTUACgCACIIRQ0AQQAgBGshBQJAAkACQAJ/QQAgBEGAAkkNABpBHyAEQf///wdLDQAaIARBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmoLIgZBAnRBsNYAaigCACICRQRAQQAhAUEAIQMMAQtBACEBIARBGSAGQQF2a0EAIAZBH0cbdCEAQQAhAwNAAkAgAigCBEF4cSAEayIHIAVPDQAgAiEDIAciBQ0AQQAhBSACIQEMAwsgASACQRRqKAIAIgcgByACIABBHXZBBHFqQRBqKAIAIgJGGyABIAcbIQEgAEEBdCEAIAINAAsLIAEgA3JFBEBBACEDQQIgBnQiAEEAIABrciAIcSIARQ0DIABoQQJ0QbDWAGooAgAhAQsgAUUNAQsDQCABKAIEQXhxIARrIgIgBUkhACACIAUgABshBSABIAMgABshAyABKAIQIgAEfyAABSABQRRqKAIACyIBDQALCyADRQ0AIAVBiNQAKAIAIARrTw0AIAMoAhghByADIAMoAgwiAEcEQEGQ1AAoAgAaIAAgAygCCCIBNgIIIAEgADYCDAwOCyADQRRqIgIoAgAiAUUEQCADKAIQIgFFDQMgA0EQaiECCwNAIAIhBiABIgBBFGoiAigCACIBDQAgAEEQaiECIAAoAhAiAQ0ACyAGQQA2AgAMDQtBiNQAKAIAIgMgBE8EQEGU1AAoAgAhAQJAIAMgBGsiAkEQTwRAIAEgBGoiACACQQFyNgIEIAEgA2ogAjYCACABIARBA3I2AgQMAQsgASADQQNyNgIEIAEgA2oiACAAKAIEQQFyNgIEQQAhAEEAIQILQYjUACACNgIAQZTUACAANgIAIAFBCGohAQwPC0GM1AAoAgAiAyAESwRAIAQgCWoiACADIARrIgFBAXI2AgRBmNQAIAA2AgBBjNQAIAE2AgAgCSAEQQNyNgIEIAlBCGohAQwPC0EAIQEgBAJ/QdjXACgCAARAQeDXACgCAAwBC0Hk1wBCfzcCAEHc1wBCgICEgICAwAA3AgBB2NcAIApBDGpBcHFB2KrVqgVzNgIAQezXAEEANgIAQbzXAEEANgIAQYCABAsiACAEQccAaiIFaiIGQQAgAGsiB3EiAk8EQEHw1wBBMDYCAAwPCwJAQbjXACgCACIBRQ0AQbDXACgCACIIIAJqIQAgACABTSAAIAhLcQ0AQQAhAUHw1wBBMDYCAAwPC0G81wAtAABBBHENBAJAAkAgCQRAQcDXACEBA0AgASgCACIAIAlNBEAgACABKAIEaiAJSw0DCyABKAIIIgENAAsLQQAQOiIAQX9GDQUgAiEGQdzXACgCACIBQQFrIgMgAHEEQCACIABrIAAgA2pBACABa3FqIQYLIAQgBk8NBSAGQf7///8HSw0FQbjXACgCACIDBEBBsNcAKAIAIgcgBmohASABIAdNDQYgASADSw0GCyAGEDoiASAARw0BDAcLIAYgA2sgB3EiBkH+////B0sNBCAGEDohACAAIAEoAgAgASgCBGpGDQMgACEBCwJAIAYgBEHIAGpPDQAgAUF/Rg0AQeDXACgCACIAIAUgBmtqQQAgAGtxIgBB/v///wdLBEAgASEADAcLIAAQOkF/RwRAIAAgBmohBiABIQAMBwtBACAGaxA6GgwECyABIgBBf0cNBQwDC0EAIQMMDAtBACEADAoLIABBf0cNAgtBvNcAQbzXACgCAEEEcjYCAAsgAkH+////B0sNASACEDohAEEAEDohASAAQX9GDQEgAUF/Rg0BIAAgAU8NASABIABrIgYgBEE4ak0NAQtBsNcAQbDXACgCACAGaiIBNgIAQbTXACgCACABSQRAQbTXACABNgIACwJAAkACQEGY1AAoAgAiAgRAQcDXACEBA0AgACABKAIAIgMgASgCBCIFakYNAiABKAIIIgENAAsMAgtBkNQAKAIAIgFBAEcgACABT3FFBEBBkNQAIAA2AgALQQAhAUHE1wAgBjYCAEHA1wAgADYCAEGg1ABBfzYCAEGk1ABB2NcAKAIANgIAQczXAEEANgIAA0AgAUG81ABqIAFBsNQAaiICNgIAIAIgAUGo1ABqIgM2AgAgAUG01ABqIAM2AgAgAUHE1ABqIAFBuNQAaiIDNgIAIAMgAjYCACABQczUAGogAUHA1ABqIgI2AgAgAiADNgIAIAFByNQAaiACNgIAIAFBIGoiAUGAAkcNAAtBeCAAa0EPcSIBIABqIgIgBkE4ayIDIAFrIgFBAXI2AgRBnNQAQejXACgCADYCAEGM1AAgATYCAEGY1AAgAjYCACAAIANqQTg2AgQMAgsgACACTQ0AIAIgA0kNACABKAIMQQhxDQBBeCACa0EPcSIAIAJqIgNBjNQAKAIAIAZqIgcgAGsiAEEBcjYCBCABIAUgBmo2AgRBnNQAQejXACgCADYCAEGM1AAgADYCAEGY1AAgAzYCACACIAdqQTg2AgQMAQsgAEGQ1AAoAgBJBEBBkNQAIAA2AgALIAAgBmohA0HA1wAhAQJAAkACQANAIAMgASgCAEcEQCABKAIIIgENAQwCCwsgAS0ADEEIcUUNAQtBwNcAIQEDQCABKAIAIgMgAk0EQCADIAEoAgRqIgUgAksNAwsgASgCCCEBDAALAAsgASAANgIAIAEgASgCBCAGajYCBCAAQXggAGtBD3FqIgkgBEEDcjYCBCADQXggA2tBD3FqIgYgBCAJaiIEayEBIAIgBkYEQEGY1AAgBDYCAEGM1ABBjNQAKAIAIAFqIgA2AgAgBCAAQQFyNgIEDAgLQZTUACgCACAGRgRAQZTUACAENgIAQYjUAEGI1AAoAgAgAWoiADYCACAEIABBAXI2AgQgACAEaiAANgIADAgLIAYoAgQiBUEDcUEBRw0GIAVBeHEhCCAFQf8BTQRAIAVBA3YhAyAGKAIIIgAgBigCDCICRgRAQYDUAEGA1AAoAgBBfiADd3E2AgAMBwsgAiAANgIIIAAgAjYCDAwGCyAGKAIYIQcgBiAGKAIMIgBHBEAgACAGKAIIIgI2AgggAiAANgIMDAULIAZBFGoiAigCACIFRQRAIAYoAhAiBUUNBCAGQRBqIQILA0AgAiEDIAUiAEEUaiICKAIAIgUNACAAQRBqIQIgACgCECIFDQALIANBADYCAAwEC0F4IABrQQ9xIgEgAGoiByAGQThrIgMgAWsiAUEBcjYCBCAAIANqQTg2AgQgAiAFQTcgBWtBD3FqQT9rIgMgAyACQRBqSRsiA0EjNgIEQZzUAEHo1wAoAgA2AgBBjNQAIAE2AgBBmNQAIAc2AgAgA0EQakHI1wApAgA3AgAgA0HA1wApAgA3AghByNcAIANBCGo2AgBBxNcAIAY2AgBBwNcAIAA2AgBBzNcAQQA2AgAgA0EkaiEBA0AgAUEHNgIAIAUgAUEEaiIBSw0ACyACIANGDQAgAyADKAIEQX5xNgIEIAMgAyACayIFNgIAIAIgBUEBcjYCBCAFQf8BTQRAIAVBeHFBqNQAaiEAAn9BgNQAKAIAIgFBASAFQQN2dCIDcUUEQEGA1AAgASADcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbDWAGohAEGE1AAoAgAiA0EBIAF0IgZxRQRAIAAgAjYCAEGE1AAgAyAGcjYCACACIAA2AhggAiACNgIIIAIgAjYCDAwBCyAFQRkgAUEBdmtBACABQR9HG3QhASAAKAIAIQMCQANAIAMiACgCBEF4cSAFRg0BIAFBHXYhAyABQQF0IQEgACADQQRxakEQaiIGKAIAIgMNAAsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAELIAAoAggiASACNgIMIAAgAjYCCCACQQA2AhggAiAANgIMIAIgATYCCAtBjNQAKAIAIgEgBE0NAEGY1AAoAgAiACAEaiICIAEgBGsiAUEBcjYCBEGM1AAgATYCAEGY1AAgAjYCACAAIARBA3I2AgQgAEEIaiEBDAgLQQAhAUHw1wBBMDYCAAwHC0EAIQALIAdFDQACQCAGKAIcIgJBAnRBsNYAaiIDKAIAIAZGBEAgAyAANgIAIAANAUGE1ABBhNQAKAIAQX4gAndxNgIADAILIAdBEEEUIAcoAhAgBkYbaiAANgIAIABFDQELIAAgBzYCGCAGKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAGQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAIaiEBIAYgCGoiBigCBCEFCyAGIAVBfnE2AgQgASAEaiABNgIAIAQgAUEBcjYCBCABQf8BTQRAIAFBeHFBqNQAaiEAAn9BgNQAKAIAIgJBASABQQN2dCIBcUUEQEGA1AAgASACcjYCACAADAELIAAoAggLIgEgBDYCDCAAIAQ2AgggBCAANgIMIAQgATYCCAwBC0EfIQUgAUH///8HTQRAIAFBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQsgBCAFNgIcIARCADcCECAFQQJ0QbDWAGohAEGE1AAoAgAiAkEBIAV0IgNxRQRAIAAgBDYCAEGE1AAgAiADcjYCACAEIAA2AhggBCAENgIIIAQgBDYCDAwBCyABQRkgBUEBdmtBACAFQR9HG3QhBSAAKAIAIQACQANAIAAiAigCBEF4cSABRg0BIAVBHXYhACAFQQF0IQUgAiAAQQRxakEQaiIDKAIAIgANAAsgAyAENgIAIAQgAjYCGCAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgCUEIaiEBDAILAkAgB0UNAAJAIAMoAhwiAUECdEGw1gBqIgIoAgAgA0YEQCACIAA2AgAgAA0BQYTUACAIQX4gAXdxIgg2AgAMAgsgB0EQQRQgBygCECADRhtqIAA2AgAgAEUNAQsgACAHNgIYIAMoAhAiAQRAIAAgATYCECABIAA2AhgLIANBFGooAgAiAUUNACAAQRRqIAE2AgAgASAANgIYCwJAIAVBD00EQCADIAQgBWoiAEEDcjYCBCAAIANqIgAgACgCBEEBcjYCBAwBCyADIARqIgIgBUEBcjYCBCADIARBA3I2AgQgAiAFaiAFNgIAIAVB/wFNBEAgBUF4cUGo1ABqIQACf0GA1AAoAgAiAUEBIAVBA3Z0IgVxRQRAQYDUACABIAVyNgIAIAAMAQsgACgCCAsiASACNgIMIAAgAjYCCCACIAA2AgwgAiABNgIIDAELQR8hASAFQf///wdNBEAgBUEmIAVBCHZnIgBrdkEBcSAAQQF0a0E+aiEBCyACIAE2AhwgAkIANwIQIAFBAnRBsNYAaiEAQQEgAXQiBCAIcUUEQCAAIAI2AgBBhNQAIAQgCHI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEEAkADQCAEIgAoAgRBeHEgBUYNASABQR12IQQgAUEBdCEBIAAgBEEEcWpBEGoiBigCACIEDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLIANBCGohAQwBCwJAIAlFDQACQCAAKAIcIgFBAnRBsNYAaiICKAIAIABGBEAgAiADNgIAIAMNAUGE1AAgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIABGG2ogAzYCACADRQ0BCyADIAk2AhggACgCECIBBEAgAyABNgIQIAEgAzYCGAsgAEEUaigCACIBRQ0AIANBFGogATYCACABIAM2AhgLAkAgBUEPTQRAIAAgBCAFaiIBQQNyNgIEIAAgAWoiASABKAIEQQFyNgIEDAELIAAgBGoiByAFQQFyNgIEIAAgBEEDcjYCBCAFIAdqIAU2AgAgCARAIAhBeHFBqNQAaiEBQZTUACgCACEDAn9BASAIQQN2dCICIAZxRQRAQYDUACACIAZyNgIAIAEMAQsgASgCCAsiAiADNgIMIAEgAzYCCCADIAE2AgwgAyACNgIIC0GU1AAgBzYCAEGI1AAgBTYCAAsgAEEIaiEBCyAKQRBqJAAgAQtDACAARQRAPwBBEHQPCwJAIABB//8DcQ0AIABBAEgNACAAQRB2QAAiAEF/RgRAQfDXAEEwNgIAQX8PCyAAQRB0DwsACwvbQCIAQYAICwkBAAAAAgAAAAMAQZQICwUEAAAABQBBpAgLCQYAAAAHAAAACABB3AgLgjFJbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABUcmFuc2Zlci1FbmNvZGluZyBjYW4ndCBiZSBwcmVzZW50IHdpdGggQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBzaXplAEV4cGVjdGVkIExGIGFmdGVyIGNodW5rIHNpemUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAUhUAABoVAAAPEgAA5BkAAJEVAAAJFAAALRkAAOQUAADpEQAAaRQAAKEUAAB2FQAAQxYAAF4SAACUFwAAFxYAAH0UAAB/FgAAQRcAALMTAADDFgAABBoAAL0YAADQGAAAoBMAANQZAACvFgAAaBYAAHAXAADZFgAA/BgAAP4RAABZFwAAlxYAABwXAAD2FgAAjRcAAAsSAAB/GwAALhEAALMQAABJEgAArRIAAPYYAABoEAAAYhUAABAVAABaFgAAShkAALUVAADBFQAAYBUAAFwZAABaGQAAUxkAABYVAACtEQAAQhAAALcQAABXGAAAvxUAAIkQAAAcGQAAGhkAALkVAABRGAAA3BMAAFsVAABZFQAA5hgAAGcVAAARGQAA7RgAAOcTAACuEAAAwhcAAAAUAACSEwAAhBMAAEASAAAmGQAArxUAAGIQAEHpOQsBAQBBgDoL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB6jsLBAEAAAIAQYE8C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEHqPQsEAQAAAgBBgT4LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQeA/Cw1sb3NlZWVwLWFsaXZlAEH5PwsBAQBBkMAAC+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnBAAsBAQBBkMIAC+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGhxAALXgEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAQYDGAAshZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAEGwxgALK3JhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KU00NCg0KVFRQL0NFL1RTUC8AQenGAAsFAQIAAQMAQYDHAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQenIAAsFAQIAAQMAQYDJAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQenKAAsEAQAAAQBBgcsAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEHpzAALBQECAAEDAEGAzQALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEHpzgALBQEBAAEBAEGAzwALAQEAQZrPAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQenQAAsFAQEAAQEAQYDRAAsBAQBBitEACwYCAAAAAAIAQaHRAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB4NIAC5oBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==";
+ var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg7jAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEjJCUnKCmeA5sDmgORA4oDgwOAA/0C+wL4AvIC8QLvAu0C6ALnAuYC5QLkAtwC2wLaAtkC2ALXAtYC1QLPAs4CzALLAsoCyQLIAscCxgLEAsMCvgK8AroCuQK4ArcCtgK1ArQCswKyArECsAKuAq0CqQKoAqcCpgKlAqQCowKiAqECoAKfApgCkAKMAosCigKBAv4B/QH8AfsB+gH5AfgB9wH1AfMB8AHrAekB6AHnAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHaAdkB2AHXAdYB1QHUAdMB0gHRAdABzwHOAc0BzAHLAcoByQHIAccBxgHFAcQBwwHCAcEBwAG/Ab4BvQG8AbsBugG5AbgBtwG2AbUBtAGzAbIBsQGwAa8BrgGtAawBqwGqAakBqAGnAaYBpQGkAaMBogGfAZ4BmQGYAZcBlgGVAZQBkwGSAZEBkAGPAY0BjAGHAYYBhQGEAYMBggF9fHt6eXZ1dFBRUlNUVQsgASAERw1yQf0BIQIMvgMLIAEgBEcNmAFB2wEhAgy9AwsgASAERw3xAUGOASECDLwDCyABIARHDfwBQYQBIQIMuwMLIAEgBEcNigJB/wAhAgy6AwsgASAERw2RAkH9ACECDLkDCyABIARHDZQCQfsAIQIMuAMLIAEgBEcNHkEeIQIMtwMLIAEgBEcNGUEYIQIMtgMLIAEgBEcNygJBzQAhAgy1AwsgASAERw3VAkHGACECDLQDCyABIARHDdYCQcMAIQIMswMLIAEgBEcN3AJBOCECDLIDCyADLQAwQQFGDa0DDIkDC0EAIQACQAJAAkAgAy0AKkUNACADLQArRQ0AIAMvATIiAkECcUUNAQwCCyADLwEyIgJBAXFFDQELQQEhACADLQAoQQFGDQAgAy8BNCIGQeQAa0HkAEkNACAGQcwBRg0AIAZBsAJGDQAgAkHAAHENAEEAIQAgAkGIBHFBgARGDQAgAkEocUEARyEACyADQQA7ATIgA0EAOgAxAkAgAEUEQCADQQA6ADEgAy0ALkEEcQ0BDLEDCyADQgA3AyALIANBADoAMSADQQE6ADYMSAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNSCAAQRVHDWIgA0EENgIcIAMgATYCFCADQdIbNgIQIANBFTYCDEEAIQIMrwMLIAEgBEYEQEEGIQIMrwMLIAEtAABBCkcNGSABQQFqIQEMGgsgA0IANwMgQRIhAgyUAwsgASAERw2KA0EjIQIMrAMLIAEgBEYEQEEHIQIMrAMLAkACQCABLQAAQQprDgQBGBgAGAsgAUEBaiEBQRAhAgyTAwsgAUEBaiEBIANBL2otAABBAXENF0EAIQIgA0EANgIcIAMgATYCFCADQZkgNgIQIANBGTYCDAyrAwsgAyADKQMgIgwgBCABa60iCn0iC0IAIAsgDFgbNwMgIAogDFoNGEEIIQIMqgMLIAEgBEcEQCADQQk2AgggAyABNgIEQRQhAgyRAwtBCSECDKkDCyADKQMgUA2uAgxDCyABIARGBEBBCyECDKgDCyABLQAAQQpHDRYgAUEBaiEBDBcLIANBL2otAABBAXFFDRkMJgtBACEAAkAgAygCOCICRQ0AIAIoAlAiAkUNACADIAIRAAAhAAsgAA0ZDEILQQAhAAJAIAMoAjgiAkUNACACKAJQIgJFDQAgAyACEQAAIQALIAANGgwkC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADRsMMgsgA0Evai0AAEEBcUUNHAwiC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADRwMQgtBACEAAkAgAygCOCICRQ0AIAIoAlQiAkUNACADIAIRAAAhAAsgAA0dDCALIAEgBEYEQEETIQIMoAMLAkAgAS0AACIAQQprDgQfIyMAIgsgAUEBaiEBDB8LQQAhAAJAIAMoAjgiAkUNACACKAJUIgJFDQAgAyACEQAAIQALIAANIgxCCyABIARGBEBBFiECDJ4DCyABLQAAQcDBAGotAABBAUcNIwyDAwsCQANAIAEtAABBsDtqLQAAIgBBAUcEQAJAIABBAmsOAgMAJwsgAUEBaiEBQSEhAgyGAwsgBCABQQFqIgFHDQALQRghAgydAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAFBAWoiARA0IgANIQxBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADSMMKgsgASAERgRAQRwhAgybAwsgA0EKNgIIIAMgATYCBEEAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADSVBJCECDIEDCyABIARHBEADQCABLQAAQbA9ai0AACIAQQNHBEAgAEEBaw4FGBomggMlJgsgBCABQQFqIgFHDQALQRshAgyaAwtBGyECDJkDCwNAIAEtAABBsD9qLQAAIgBBA0cEQCAAQQFrDgUPEScTJicLIAQgAUEBaiIBRw0AC0EeIQIMmAMLIAEgBEcEQCADQQs2AgggAyABNgIEQQchAgz/AgtBHyECDJcDCyABIARGBEBBICECDJcDCwJAIAEtAABBDWsOFC4/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8APwtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQMlgMLIANBL2ohAgNAIAEgBEYEQEEhIQIMlwMLAkACQAJAIAEtAAAiAEEJaw4YAgApKQEpKSkpKSkpKSkpKSkpKSkpKSkCJwsgAUEBaiEBIANBL2otAABBAXFFDQoMGAsgAUEBaiEBDBcLIAFBAWohASACLQAAQQJxDQALQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDJUDCyADLQAuQYABcUUNAQtBACEAAkAgAygCOCICRQ0AIAIoAlwiAkUNACADIAIRAAAhAAsgAEUN5gIgAEEVRgRAIANBJDYCHCADIAE2AhQgA0GbGzYCECADQRU2AgxBACECDJQDC0EAIQIgA0EANgIcIAMgATYCFCADQZAONgIQIANBFDYCDAyTAwtBACECIANBADYCHCADIAE2AhQgA0G+IDYCECADQQI2AgwMkgMLIAMoAgQhAEEAIQIgA0EANgIEIAMgACABIAynaiIBEDIiAEUNKyADQQc2AhwgAyABNgIUIAMgADYCDAyRAwsgAy0ALkHAAHFFDQELQQAhAAJAIAMoAjgiAkUNACACKAJYIgJFDQAgAyACEQAAIQALIABFDSsgAEEVRgRAIANBCjYCHCADIAE2AhQgA0HrGTYCECADQRU2AgxBACECDJADC0EAIQIgA0EANgIcIAMgATYCFCADQZMMNgIQIANBEzYCDAyPAwtBACECIANBADYCHCADIAE2AhQgA0GCFTYCECADQQI2AgwMjgMLQQAhAiADQQA2AhwgAyABNgIUIANB3RQ2AhAgA0EZNgIMDI0DC0EAIQIgA0EANgIcIAMgATYCFCADQeYdNgIQIANBGTYCDAyMAwsgAEEVRg09QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIsDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFDSggA0ENNgIcIAMgATYCFCADIAA2AgwMigMLIABBFUYNOkEAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAyJAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwoCyADQQ42AhwgAyAANgIMIAMgAUEBajYCFAyIAwsgAEEVRg03QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIcDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDCcLIANBDzYCHCADIAA2AgwgAyABQQFqNgIUDIYDC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAyFAwsgAEEVRg0zQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDIQDCyADKAIEIQBBACECIANBADYCBCADIAAgARA0IgBFDSUgA0ERNgIcIAMgATYCFCADIAA2AgwMgwMLIABBFUYNMEEAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAyCAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwlCyADQRI2AhwgAyAANgIMIAMgAUEBajYCFAyBAwsgA0Evai0AAEEBcUUNAQtBFyECDOYCC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAz+AgsgAEE7Rw0AIAFBAWohAQwMC0EAIQIgA0EANgIcIAMgATYCFCADQZIYNgIQIANBAjYCDAz8AgsgAEEVRg0oQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDPsCCyADQRQ2AhwgAyABNgIUIAMgADYCDAz6AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQz1AgsgA0EVNgIcIAMgADYCDCADIAFBAWo2AhQM+QILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM8wILIANBFzYCHCADIAA2AgwgAyABQQFqNgIUDPgCCyAAQRVGDSNBACECIANBADYCHCADIAE2AhQgA0HWDDYCECADQSM2AgwM9wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEMHQsgA0EZNgIcIAMgADYCDCADIAFBAWo2AhQM9gILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM7wILIANBGjYCHCADIAA2AgwgAyABQQFqNgIUDPUCCyAAQRVGDR9BACECIANBADYCHCADIAE2AhQgA0HQDzYCECADQSI2AgwM9AILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwbCyADQRw2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8wILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQzrAgsgA0EdNgIcIAMgADYCDCADIAFBAWo2AhRBACECDPICCyAAQTtHDQEgAUEBaiEBC0EmIQIM1wILQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDO8CCyABIARHBEADQCABLQAAQSBHDYQCIAQgAUEBaiIBRw0AC0EsIQIM7wILQSwhAgzuAgsgASAERgRAQTQhAgzuAgsCQAJAA0ACQCABLQAAQQprDgQCAAADAAsgBCABQQFqIgFHDQALQTQhAgzvAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFDZ8CIANBMjYCHCADIAE2AhQgAyAANgIMQQAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFBEAgAUEBaiEBDJ8CCyADQTI2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM7QILIAEgBEcEQAJAA0AgAS0AAEEwayIAQf8BcUEKTwRAQTohAgzXAgsgAykDICILQpmz5syZs+bMGVYNASADIAtCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAMgCiALfDcDICAEIAFBAWoiAUcNAAtBwAAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgAUEBaiIBEDEiAA0XDOICC0HAACECDOwCCyABIARGBEBByQAhAgzsAgsCQANAAkAgAS0AAEEJaw4YAAKiAqICqQKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
var wasmBuffer;
Object.defineProperty(module2, "exports", {
get: () => {
@@ -22877,7 +23091,7 @@ var require_llhttp_simd_wasm2 = __commonJS({
"node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
"use strict";
var { Buffer: Buffer2 } = require("node:buffer");
- var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzQzBQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEDAAADAAAABAUBcAESEgUDAQACBggBfwFBgNgECwfFBygGbWVtb3J5AgALX2luaXRpYWxpemUACBlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQACRhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUANgxsbGh0dHBfYWxsb2MACwZtYWxsb2MAOAtsbGh0dHBfZnJlZQAMBGZyZWUADA9sbGh0dHBfZ2V0X3R5cGUADRVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADhVsbGh0dHBfZ2V0X2h0dHBfbWlub3IADxFsbGh0dHBfZ2V0X21ldGhvZAAQFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAERJsbGh0dHBfZ2V0X3VwZ3JhZGUAEgxsbGh0dHBfcmVzZXQAEw5sbGh0dHBfZXhlY3V0ZQAUFGxsaHR0cF9zZXR0aW5nc19pbml0ABUNbGxodHRwX2ZpbmlzaAAWDGxsaHR0cF9wYXVzZQAXDWxsaHR0cF9yZXN1bWUAGBtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGRBsbGh0dHBfZ2V0X2Vycm5vABoXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AGxdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAcFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB0RbGxodHRwX2Vycm5vX25hbWUAHhJsbGh0dHBfbWV0aG9kX25hbWUAHxJsbGh0dHBfc3RhdHVzX25hbWUAIBpsbGh0dHBf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a0E+aiECCyABIAI2AhwgAUIANwIQIAJBAnRBsNYAaiEAAkBBhNQAKAIAIgNBASACdCIHcUUEQCAAIAE2AgBBhNQAIAMgB3I2AgAgASAANgIYIAEgATYCCCABIAE2AgwMAQsgBEEZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEAAkADQCAAIgMoAgRBeHEgBEYNASACQR12IQAgAkEBdCECIAMgAEEEcWpBEGoiBygCACIADQALIAcgATYCACABIAM2AhggASABNgIMIAEgATYCCAwBCyADKAIIIgAgATYCDCADIAE2AgggAUEANgIYIAEgAzYCDCABIAA2AggLQaDUAEGg1AAoAgBBAWsiAEF/IAAbNgIACwsHACAALQAoCwcAIAAtACoLBwAgAC0AKwsHACAALQApCwcAIAAvATQLBwAgAC0AMAtAAQR/IAAoAhghASAALwEuIQIgAC0AKCEDIAAoAjghBCAAEDcgACAENgI4IAAgAzoAKCAAIAI7AS4gACABNgIYC8X4AQIHfwN+IAEgAmohBAJAIAAiAygCDCIADQAgAygCBARAIAMgATYCBAsjAEEQayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACDtQBAAECAwQFBgcICQoLDA0ODxARFBUWFxgZGhscHR4fICEjJCUnKCmIA4cDhQOEA/wC9QLuAusC6ALmAuMC4ALfAt0C2wLWAtUC1ALTAtICygLJAsgCxwLGAsUCxALDAr0CvAK6ArkCuAK3ArYCtQK0ArICsQKsAqoCqAKnAqYCpQKkAqMCogKhAqACnwKbApoCmQKYApcCkAKIAoQCgwKCAvkB9gH1AfQB8wHyAfEB8AHvAe0B6wHoAeMB4QHgAd8B3gHdAdwB2wHaAdkB2AHX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QEBAQEBAQEBAQEBAAEALQQAhAiADQQA2AhwgA0G3CzYCECADQQI2AgwgAyABQQFqNgIUDIEDCyADQS9qIQIDQCABIARGBEBBISECDIIDCwJAAkACQCABLQAAIgBBCWsOGAIAKioBKioqKioqKioqKioqKioqKioqAigLIAFBAWohASADQS9qLQAAQQFxRQ0LDBkLIAFBAWohAQwYCyABQQFqIQEgAi0AAEECcQ0AC0EAIQIgA0EANgIcIAMgATYCFCADQc4UNgIQIANBDDYCDAyAAwsgAUEBaiEBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADQEM0QILIANCADcDIAw8CyAAQRVGBEAgA0EkNgIcIAMgATYCFCADQYYaNgIQIANBFTYCDEEAIQIM/QILQQAhAiADQQA2AhwgAyABNgIUIANB4g02AhAgA0EUNgIMDPwCCyADKAIEIQBBACECIANBADYCBCADIAAgASAMp2oiARAxIgBFDSsgA0EHNgIcIAMgATYCFCADIAA2AgwM+wILIAMtAC5BwABxRQ0BC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAARQ0rIABBFUYEQCADQQo2AhwgAyABNgIUIANB8Rg2AhAgA0EVNgIMQQAhAgz6AgtBACECIANBADYCHCADIAE2AhQgA0GLDDYCECADQRM2AgwM+QILQQAhAiADQQA2AhwgAyABNgIUIANBsRQ2AhAgA0ECNgIMDPgCC0EAIQIgA0EANgIcIAMgATYCFCADQYwUNgIQIANBGTYCDAz3AgtBACECIANBADYCHCADIAE2AhQgA0HRHDYCECADQRk2AgwM9gILIABBFUYNPUEAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAz1AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQ0oIANBDTYCHCADIAE2AhQgAyAANgIMDPQCCyAAQRVGDTpBACECIANBADYCHCADIAE2AhQgA0GiDzYCECADQSI2AgwM8wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDIiAEUEQCABQQFqIQEMKAsgA0EONgIcIAMgADYCDCADIAFBAWo2AhQM8gILIABBFUYNN0EAIQIgA0EANgIcIAMgATYCFCADQaIPNgIQIANBIjYCDAzxAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMiIARQRAIAFBAWohAQwnCyADQQ82AhwgAyAANgIMIAMgAUEBajYCFAzwAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM7wILIABBFUYNM0EAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzuAgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQ0lIANBETYCHCADIAE2AhQgAyAANgIMDO0CCyAAQRVGDTBBACECIANBADYCHCADIAE2AhQgA0HODDYCECADQSM2AgwM7AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEMJQsgA0ESNgIcIAMgADYCDCADIAFBAWo2AhQM6wILIANBL2otAABBAXFFDQELQRUhAgzPAgtBACECIANBADYCHCADIAE2AhQgA0HoFjYCECADQRk2AgwM6AILIABBO0cNACABQQFqIQEMDAtBACECIANBADYCHCADIAE2AhQgA0GYFzYCECADQQI2AgwM5gILIABBFUYNKEEAIQIgA0EANgIcIAMgATYCFCADQc4MNgIQIANBIzYCDAzlAgsgA0EUNgIcIAMgATYCFCADIAA2AgwM5AILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDMiAEUEQCABQQFqIQEM3AILIANBFTYCHCADIAA2AgwgAyABQQFqNgIUDOMCCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNoCCyADQRc2AhwgAyAANgIMIAMgAUEBajYCFAziAgsgAEEVRg0jQQAhAiADQQA2AhwgAyABNgIUIANBzgw2AhAgA0EjNgIMDOECCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDB0LIANBGTYCHCADIAA2AgwgAyABQQFqNgIUDOACCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDNYCCyADQRo2AhwgAyAANgIMIAMgAUEBajYCFAzfAgsgAEEVRg0fQQAhAiADQQA2AhwgAyABNgIUIANBog82AhAgA0EiNgIMDN4CCyADKAIEIQBBACEC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DLMCCyABIARGBEBB6QEhAgyzAgsgAS0AAEHIAEYNASADQQE6ACgLQbYBIQIMlwILQcoBIQIMlgILIAEgBEcEQCADQQw2AgggAyABNgIEQckBIQIMlgILQegBIQIMrwILIAEgBEYEQEHnASECDK8CCyABLQAAQcgARw0EIAFBAWohAUHIASECDJQCCyABIARGBEBB5gEhAgyuAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQcYBIQIMlAILIAFBAWohAUHHASECDJMCC0HlASECIAEgBEYNrAIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB99MAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMrQILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgBFBEBB1AEhAgyTAgsgA0HkATYCHCADIAE2AhQgAyAANgIMQQAhAgysAgtB4wEhAiABIARGDasCIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQfXTAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADKwCCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAtIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB0B42AhAgA0EINgIMDKkCC0HFASECDI4CCyADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDKcCC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ1lIABBFUcEQCADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgynAgsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDKYCC0HhASECIAQgASIARg2lAiAEIAFrIAMoAgAiAWohBSAAIAFrQQRqIQYCQANAIAAtAAAgAUHw0wBqLQAARw0BIAFBBEYNAyABQQFqIQEgBCAAQQFqIgBHDQALIAMgBTYCAAymAgsgA0EANgIcIAMgADYCFCADQYQ3NgIQIANBCDYCDCADQQA2AgBBACECDKUCCyABIARHBEAgA0ENNgIIIAMgATYCBEHCASECDIsCC0HgASECDKQCCyADQQA2AgAgBkEBaiEBC0HDASECDIgCCyABIARGBEBB3wEhAgyiAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBwQEhAgyIAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYgCIANB3gE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAEgBEYEQEHdASECDKECCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYkCIANB3AE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILQcABIQIMhgILIAEgBEYEQEHbASECDKACC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDQIgA0HYATYCHCADIAE2AhQgAyAANgIMQQAhAgyiAgsgAygCBCEAIANBADYCBCADIAAgARAuIgBFDYsCIANB2QE2AhwgAyABNgIUIAMgADYCDEEAIQIMoQILIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ2JAiADQdoBNgIcIAMgATYCFCADIAA2AgwMoAILQb8BIQIMhQILQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBnA02AhAgA0EhNgIMQQAhAgygAgtBvgEhAgyFAgsgA0HXATYCHCADIAE2AhQgA0HWGTYCECADQRU2AgxBACECDJ4CCyABIARGBEBB1wEhAgyeAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANB6xA2AhAgA0EJNgIMQQAhAgyeAgtBvQEhAgyDAgsgASAERgRAQdYBIQIMnQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQYAdNgIQIANBDTYCDAyeAgsgA0EANgIcIAMgATYCFCADQYAdNgIQIANBDTYCDEEAIQIMnQILQbwBIQIMggILIAEgBEYEQEHVASECDJwCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GAHTYCECADQQ02AgwMnQILIANBADYCHCADIAE2AhQgA0GAHTYCECADQQ02AgxBACECDJwCC0G7ASECDIECCyABIARGBEBB1AEhAgybAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBgB02AhAgA0ENNgIMDJwCCyADQQA2AhwgAyABNgIUIANBgB02AhAgA0ENNgIMQQAhAgybAgtBugEhAgyAAgsgASAERgRAQdMBIQIMmgILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUG5ASECDIECCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GFCzYCECADQQ02AgxBACECDJoCCyADQQA2AhwgAyABNgIUIANBhQs2AhAgA0ENNgIMQQAhAgyZAgsgASAERwRAIANBDjYCCCADIAE2AgRBASECDP8BC0HSASECDJgCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB0QEhAgyZAgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFBEAgAUEBaiEBDAQLIANB0AE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMmAILIAMoAgQhACADQQA2AgQgAyAAIAEQLCIADQEgAUEBagshAUG3ASECDPwBCyADQc8BNgIcIAMgADYCDCADIAFBAWo2AhRBACECDJUCC0G4ASECDPoBCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQc8bNgIQIANBGTYCDEEAIQIMkwILIAEgBEYEQEHPASECDJMCCwJAAkACQCABLQAAQQprDgQBAgIAAgsgAUEBaiEBDAILIAFBAWohAQwBCyADLQAuQcAAcUUNAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsgAEUNlgEgAEEVRgRAIANB2QA2AhwgAyABNgIUIANBvRk2AhAgA0EVNgIMQQAhAgySAgsgA0EANgIcIAMgATYCFCADQfgMNgIQIANBGzYCDEEAIQIMkQILIANBADYCHCADIAE2AhQgA0HHJzYCECADQQI2AgxBACECDJACCyABIARHBEAgA0EMNgIIIAMgATYCBEG1ASECDPYBC0HOASECDI8CCyABIARGBEBBzQEhAgyPAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBwQBrDhUAAQIDWgQFBlpaWgcICQoLDA0ODxBaCyABQQFqIQFB8QAhAgyEAgsgAUEBaiEBQfIAIQIMgwILIAFBAWohAUH3ACECDIICCyABQQFqIQFB+wAhAgyBAgsgAUEBaiEBQfwAIQIMgAILIAFBAWohAUH/ACECDP8BCyABQQFqIQFBgAEhAgz+AQsgAUEBaiEBQYMBIQIM/QELIAFBAWohAUGMASECDPwBCyABQQFqIQFBjQEhAgz7AQsgAUEBaiEBQY4BIQIM+gELIAFBAWohAUGbASECDPkBCyABQQFqIQFBnAEhAgz4AQsgAUEBaiEBQaIBIQIM9wELIAFBAWohAUGqASECDPYBCyABQQFqIQFBrQEhAgz1AQsgAUEBaiEBQbQBIQIM9AELIAEgBEYEQEHMASECDI4CCyABLQAAQc4ARw1IIAFBAWohAUGzASECDPMBCyABIARGBEBBywEhAgyNAgsCQAJAAkAgAS0AAEHCAGsOEgBKSkpKSkpKSkoBSkpKSkpKAkoLIAFBAWohAUGuASECDPQBCyABQQFqIQFBsQEhAgzzAQsgAUEBaiEBQbIBIQIM8gELQcoBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQdqIQYCQANAIAEtAAAgAEHo0wBqLQAARw1FIABBB0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEbDEULIAEgBEYEQEHJASECDIsCCwJAAkAgAS0AAEHJAGsOBwBHR0dHRwFHCyABQQFqIQFBrwEhAgzxAQsgAUEBaiEBQbABIQIM8AELQcgBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm0wBqLQAARw1DIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEPDEMLQccBIQIgASAERg2IAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk0wBqLQAARw1CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyJAgsgA0EANgIAIAZBAWohAUEgDEILQcYBIQIgASAERg2HAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHh0wBqLQAARw1BIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyIAgsgA0EANgIAIAZBAWohAUESDEELIAEgBEYEQEHFASECDIcCCwJAAkAgAS0AAEHFAGsODgBDQ0NDQ0NDQ0NDQ0MBQwsgAUEBaiEBQasBIQIM7QELIAFBAWohAUGsASECDOwBC0HEASECIAEgBEYNhQIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB3tMAai0AAEcNPyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMhgILIANBADYCACAGQQFqIQFBBww/C0HDASECIAEgBEYNhAIgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB2NMAai0AAEcNPiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMhQILIANBADYCACAGQQFqIQFBKAw+CyABIARGBEBBwgEhAgyEAgsCQAJAAkAgAS0AAEHFAGsOEQBBQUFBQUFBQUEBQUFBQUECQQsgAUEBaiEBQacBIQIM6wELIAFBAWohAUGoASECDOoBCyABQQFqIQFBqQEhAgzpAQtBwQEhAiABIARGDYICIAMoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQdHTAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADIMCCyADQQA2AgAgBkEBaiEBQRoMPAtBwAEhAiABIARGDYECIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQc3TAGotAABHDTsgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADIICCyADQQA2AgAgBkEBaiEBQSEMOwsgASAERgRAQb8BIQIMgQILAkACQCABLQAAQcEAaw4UAD09PT09PT09PT09PT09PT09PQE9CyABQQFqIQFBowEhAgznAQsgAUEBaiEBQaYBIQIM5gELIAEgBEYEQEG+ASECDIACCwJAAkAgAS0AAEHVAGsOCwA8PDw8PDw8PDwBPAsgAUEBaiEBQaQBIQIM5gELIAFBAWohAUGlASECDOUBC0G9ASECIAEgBEYN/gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBxNMAai0AAEcNOCAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM/wELIANBADYCACAGQQFqIQFBKgw4CyABIARGBEBBvAEhAgz+AQsgAS0AAEHQAEcNOCABQQFqIQFBJQw3C0G7ASECIAEgBEYN/AEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBwdMAai0AAEcNNiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM/QELIANBADYCACAGQQFqIQFBDgw2CyABIARGBEBBugEhAgz8AQsgAS0AAEHFAEcNNiABQQFqIQFBoQEhAgzhAQsgASAERgRAQbkBIQIM+wELAkACQAJAAkAgAS0AAEHCAGsODwABAjk5OTk5OTk5OTk5AzkLIAFBAWohAUGdASECDOMBCyABQQFqIQFBngEhAgziAQsgAUEBaiEBQZ8BIQIM4QELIAFBAWohAUGgASECDOABC0G4ASECIAEgBEYN+QEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtMAai0AAEcNMyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+gELIANBADYCACAGQQFqIQFBFAwzC0G3ASECIAEgBEYN+AEgAygCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBudMAai0AAEcNMiAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+QELIANBADYCACAGQQFqIQFBKwwyC0G2ASECIAEgBEYN9wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBttMAai0AAEcNMSAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+AELIANBADYCACAGQQFqIQFBLAwxC0G1ASECIAEgBEYN9gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB4dMAai0AAEcNMCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM9wELIANBADYCACAGQQFqIQFBEQwwC0G0ASECIAEgBEYN9QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBstMAai0AAEcNLyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM9gELIANBADYCACAGQQFqIQFBLgwvCyABIARGBEBBswEhAgz1AQsCQAJAAkACQAJAIAEtAABBwQBrDhUANDQ0NDQ0NDQ0NAE0NAI0NAM0NAQ0CyABQQFqIQFBkQEhAgzeAQsgAUEBaiEBQZIBIQIM3QELIAFBAWohAUGTASECDNwBCyABQQFqIQFBmAEhAgzbAQsgAUEBaiEBQZoBIQIM2gELIAEgBEYEQEGyASECDPQBCwJAAkAgAS0AAEHSAGsOAwAwATALIAFBAWohAUGZASECDNoBCyABQQFqIQFBBAwtC0GxASECIAEgBEYN8gEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBsNMAai0AAEcNLCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM8wELIANBADYCACAGQQFqIQFBHQwsCyABIARGBEBBsAEhAgzyAQsCQAJAIAEtAABByQBrDgcBLi4uLi4ALgsgAUEBaiEBQZcBIQIM2AELIAFBAWohAUEiDCsLIAEgBEYEQEGvASECDPEBCyABLQAAQdAARw0rIAFBAWohAUGWASECDNYBCyABIARGBEBBrgEhAgzwAQsCQAJAIAEtAABBxgBrDgsALCwsLCwsLCwsASwLIAFBAWohAUGUASECDNYBCyABQQFqIQFBlQEhAgzVAQtBrQEhAiABIARGDe4BIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazTAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO8BCyADQQA2AgAgBkEBaiEBQQ0MKAtBrAEhAiABIARGDe0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQeHTAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO4BCyADQQA2AgAgBkEBaiEBQQwMJwtBqwEhAiABIARGDewBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQarTAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADO0BCyADQQA2AgAgBkEBaiEBQQMMJgtBqgEhAiABIARGDesBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQajTAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOwBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQakBIQIM6wELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBjwEhAgzRAQsgAUEBaiEBQZABIQIM0AELQagBIQIgASAERg3pASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm0wBqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzqAQsgA0EANgIAIAZBAWohAUEnDCMLQacBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk0wBqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEcDCILQaYBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGe0wBqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEGDCELQaUBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGZ0wBqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGkASECDOYBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQYQBIQIMzgELIAFBAWohAUGFASECDM0BCyABQQFqIQFBigEhAgzMAQsgAUEBaiEBQYsBIQIMywELQaMBIQIgASAERg3kASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGX0wBqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzlAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGiASECDOQBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGGASECDMoBCyABQQFqIQFBiQEhAgzJAQsgASAERgRAQaEBIQIM4wELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQYcBIQIMyQELIAFBAWohAUGIASECDMgBCyABIARGBEBBoAEhAgziAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GfASECIAEgBEYN4AEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBkdMAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4QELIANBADYCACAGQQFqIQFBHgwaC0GeASECIAEgBEYN3wEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBitMAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4AELIANBADYCACAGQQFqIQFBFQwZC0GdASECIAEgBEYN3gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBh9MAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3wELIANBADYCACAGQQFqIQFBFwwYC0GcASECIAEgBEYN3QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBgdMAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3gELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBmwEhAgzdAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYEBIQIMwwELIAFBAWohAUGCASECDMIBC0GaASECIAEgBEYN2wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5tMAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM3AELIANBADYCACAGQQFqIQFBCQwVC0GZASECIAEgBEYN2gEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB5NMAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2wELIANBADYCACAGQQFqIQFBHwwUC0GYASECIAEgBEYN2QEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB/tIAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM2gELIANBADYCACAGQQFqIQFBAgwTC0GXASECIAEgBEYN2AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQfzSAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyABIARGBEBBlgEhAgzYAQtBASABLQAAQd8ARw0RGiABQQFqIQFB/QAhAgy9AQsgA0EANgIAIAZBAWohAUH+ACECDLwBC0GVASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBxNMAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBKQwPC0GUASECIAEgBEYN1AEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB+NIAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1QELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBkwEhAgzUAQsgAS0AAEHFAEcNDiABQQFqIQFB+gAhAgy5AQsgASAERgRAQZIBIQIM0wELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFB+AAhAgy5AQsgAUEBaiEBQfkAIQIMuAELQZEBIQIgASAERg3RASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHz0gBqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzSAQsgA0EANgIAIAZBAWohAUEjDAsLQZABIQIgASAERg3QASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHw0gBqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzRAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGPASECDNABCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQfMAIQIMtgELIAFBAWohAUH2ACECDLUBCyABIARGBEBBjgEhAgzPAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB9AAhAgy1AQsgAUEBaiEBQfUAIQIMtAELIAEgBEYEQEGNASECDM4BCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQYwBIQIgASAERg3MASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHs0gBqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzNAQsgA0EANgIAIAZBAWohAUEFDAYLQYsBIQIgASAERg3LASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHm0gBqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzMAQsgA0EANgIAIAZBAWohAUEWDAULQYoBIQIgASAERg3KASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHh0wBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzLAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGJASECDMoBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUHvACECDLABCyABQQFqIQFB8AAhAgyvAQtBiAEhAiABIARGDcgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQeDSAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMkBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGHASECDMcBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC0iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB6R42AhAgA0EGNgIMDMQBC0HuACECDKkBCyADQYYBNgIcIAMgATYCFCADIAA2AgxBACECDMIBC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANB1A42AhAgA0EgNgIMQQAhAgzBAQtB7QAhAgymAQsgA0GFATYCHCADIAE2AhQgA0HXGjYCECADQRU2AgxBACECDL8BCyABIARGBEBBhQEhAgy/AQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GGHjYCECADQQY2AgxBACECDL8BC0ECIQIMpAELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GEASECDL0BCyABIARGBEBBgwEhAgy9AQsCQCABLQAAQQlrDgRAAABAAAtB6wAhAgyiAQsgAy0AKUEFRgRAQewAIQIMogELQeoAIQIMoQELIAEgBEYEQEGCASECDLsBCyADQQ82AgggAyABNgIEDAoLIAEgBEYEQEGBASECDLoBCwJAIAEtAABBCWsOBD0AAD0AC0HpACECDJ8BCyABIARHBEAgA0EPNgIIIAMgATYCBEHnACECDJ8BC0GAASECDLgBCwJAIAEgBEcEQANAIAEtAABB4M4Aai0AACIAQQNHBEACQCAAQQFrDgI/AAQLQeYAIQIMoQELIAQgAUEBaiIBRw0AC0H+ACECDLkBC0H+ACECDLgBCyADQQA2AhwgAyABNgIUIANBxh82AhAgA0EHNgIMQQAhAgy3AQsgASAERgRAQf8AIQIMtwELAkACQAJAIAEtAABB4NAAai0AAEEBaw4DPAIAAQtB6AAhAgyeAQsgA0EANgIcIAMgATYCFCADQYYSNgIQIANBBzYCDEEAIQIMtwELQeAAIQIMnAELIAEgBEcEQCABQQFqIQFB5QAhAgycAQtB/QAhAgy1AQsgBCABIgBGBEBB/AAhAgy1AQsgAC0AACIBQS9GBEAgAEEBaiEBQeQAIQIMmwELIAFBCWsiAkEXSw0BIAAhAUEBIAJ0QZuAgARxDTcMAQsgBCABIgBGBEBB+wAhAgy0AQsgAC0AAEEvRw0AIABBAWohAQwDC0EAIQIgA0EANgIcIAMgADYCFCADQcYfNgIQIANBBzYCDAyyAQsCQAJAAkACQAJAA0AgAS0AAEHgzABqLQAAIgBBBUcEQAJAAkAgAEEBaw4IPQUGBwgABAEIC0HhACECDJ8BCyABQQFqIQFB4wAhAgyeAQsgBCABQQFqIgFHDQALQfoAIQIMtgELIAFBAWoMFAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgy0AQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyzAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDR4gA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyyAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMsQELIAEgBEYEQEH5ACECDLEBCwJAIAEtAABB4MwAai0AAEEBaw4INAQFBgAIAgMHCyABQQFqIQELQQMhAgyVAQsgAUEBagwNC0EAIQIgA0EANgIcIANBoxI2AhAgA0EHNgIMIAMgAUEBajYCFAytAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgysAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDRYgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgA0EANgIcIAMgATYCFCADQcsPNgIQIANBBzYCDEEAIQIMqQELQeIAIQIMjgELIAEgBEYEQEH4ACECDKgBCyABQQFqDAILIAEgBEYEQEH3ACECDKcBCyABQQFqDAELIAEgBEYNASABQQFqCyEBQQQhAgyKAQtB9gAhAgyjAQsDQCABLQAAQeDKAGotAAAiAEECRwRAIABBAUcEQEHfACECDIsBCwwnCyAEIAFBAWoiAUcNAAtB9QAhAgyiAQsgASAERgRAQfQAIQIMogELAkAgAS0AAEEJaw43JQMGJQQGBgYGBgYGBgYGBgYGBgYGBgYFBgYCBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAYLIAFBAWoLIQFBBSECDIYBCyABQQFqDAYLIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMngELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMnQELIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ0IIANB8AA2AhwgAyABNgIUIAMgADYCDEEAIQIMnAELIANBADYCHCADIAE2AhQgA0G8EzYCECADQQc2AgxBACECDJsBCwJAAkACQAJAA0AgAS0AAEHgyABqLQAAIgBBBUcEQAJAIABBAWsOBiQDBAUGAAYLQd4AIQIMhgELIAQgAUEBaiIBRw0AC0HzACECDJ4BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQdsANgIcIAMgATYCFCADIAA2AgxBACECDJ0BCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDJwBCyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNByADQfAANgIcIAMgATYCFCADIAA2AgxBACECDJsBCyADQQA2AhwgAyABNgIUIANB3Ag2AhAgA0EHNgIMQQAhAgyaAQsgASAERg0BIAFBAWoLIQFBBiECDH4LQfIAIQIMlwELAkACQAJAAkADQCABLQAAQeDGAGotAAAiAEEFRwRAIABBAWsOBB8CAwQFCyAEIAFBAWoiAUcNAAtB8QAhAgyaAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyZAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyYAQsgAygCBCEAIANBADYCBCADIAAgARArIgBFDQMgA0HwADYCHCADIAE2AhQgAyAANgIMQQAhAgyXAQsgA0EANgIcIAMgATYCFCADQbQKNgIQIANBBzYCDEEAIQIMlgELQc4AIQIMewtB0AAhAgx6C0HdACECDHkLIAEgBEYEQEHwACECDJMBCwJAIAEtAABBCWsOBBYAABYACyABQQFqIQFB3AAhAgx4CyABIARGBEBB7wAhAgySAQsCQCABLQAAQQlrDgQVAAAVAAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUEQEHTASECDHgLIABBFUcEQCADQQA2AhwgAyABNgIUIANBwQ02AhAgA0EaNgIMQQAhAgySAQsgA0HuADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDJEBC0HtACECIAEgBEYNkAEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB18YAai0AAEcNBCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMkQELIANBADYCACAGQQFqIQEgAy0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACECIANBADYCHCADIAE2AhQgA0HlCTYCECADQQg2AgwMkAELQewAIQIgASAERg2PASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHUxgBqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyQAQsgA0EANgIAIAZBAWohASADLQApQSFGDQMgA0EANgIcIAMgATYCFCADQYkKNgIQIANBCDYCDEEAIQIMjwELQesAIQIgASAERg2OASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHQxgBqLQAARw0CIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyPAQsgA0EANgIAIAZBAWohASADLQApIgBBI0kNAiAAQS5GDQIgA0EANgIcIAMgATYCFCADQcEJNgIQIANBCDYCDEEAIQIMjgELIANBADYCAAtBACECIANBADYCHCADIAE2AhQgA0GENzYCECADQQg2AgwMjAELQdgAIQIMcQsgASAERwRAIANBDTYCCCADIAE2AgRB1wAhAgxxC0HqACECDIoBCyABIARGBEBB6QAhAgyKAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1gAhAgxwCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdCADQegANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyABIARGBEBB5wAhAgyJAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLiIARQ11IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMiQELQdUAIQIMbgsgASAERgRAQeUAIQIMiAELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDIoBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdyADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIkBCyADKAIEIQAgA0EANgIEIAMgACABEC4iAEUNdSADQeQANgIcIAMgATYCFCADIAA2AgwMiAELQdMAIQIMbQsgAy0AKUEiRg2AAUHSACECDGwLQQAhAAJAIAMoAjgiAkUNACACKAI8IgJFDQAgAyACEQAAIQALIABFBEBB1AAhAgxsCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQZwNNgIQIANBITYCDEEAIQIMhgELIANB4QA2AhwgAyABNgIUIANB1hk2AhAgA0EVNgIMQQAhAgyFAQsgASAERgRAQeAAIQIMhQELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HRACECDGwLIANBADYCHCADIAE2AhQgA0GIETYCECADQQk2AgxBACECDIUBCyADQQA2AhwgAyABNgIUIANBiBE2AhAgA0EJNgIMQQAhAgyEAQsgASAERgRAQd8AIQIMhAELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBiBE2AhAgA0ECNgIMQQAhAgyDAQsgASAERgRAQd0AIQIMgwELIAEtAAAiAkENRgRAIAFBAWohAUHPACECDGkLIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyCAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0G1LDYCECADQQc2AgwMgAELIAEgBEYEQEHbACECDIABCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc0AIQIMZAsgASAERgRAQdoAIQIMfgsgAS0AAEEJaw4EAAEBAAELQQAhAiADQQA2AhwgA0HsETYCECADQQc2AgwgAyABQQFqNgIUDHwLIANBgBI7ASpBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNACAAQRVHDQEgA0HZADYCHCADIAE2AhQgA0HwGTYCECADQRU2AgxBACECDHsLQcwAIQIMYAsgA0EANgIcIAMgATYCFCADQcENNgIQIANBGjYCDEEAIQIMeQsgASAERgRAQdkAIQIMeQsgAS0AAEEgRw06IAFBAWohASADLQAuQQFxDTogA0EANgIcIAMgATYCFCADQa0bNgIQIANBHjYCDEEAIQIMeAsgASAERgRAQdgAIQIMeAsCQAJAAkACQAJAIAEtAAAiAEEKaw4EAgMD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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQTBrDjcVFAABAgMEBQYHFhYWFhYWFggJCgsMDRYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWDg8QERITFgtCAiEKDBQLQgMhCgwTC0IEIQoMEgtCBSEKDBELQgYhCgwQC0IHIQoMDwtCCCEKDA4LQgkhCgwNC0IKIQoMDAtCCyEKDAsLQgwhCgwKC0INIQoMCQtCDiEKDAgLQg8hCgwHC0IKIQoMBgtCCyEKDAULQgwhCgwEC0INIQoMAwtCDiEKDAILQg8hCgwBC0IBIQoLIAFBAWohASADKQMgIgtC//////////8PWARAIAMgC0IEhiAKhDcDIAwCC0EAIQIgA0EANgIcIAMgATYCFCADQa0JNgIQIANBDDYCDAwfC0ElIQIMBAtBJiECDAMLIAMgAToALCADQQA2AgAgB0EBaiEBQQwhAgwCCyADQQA2AgAgBkEBaiEBQQohAgwBCyABQQFqIQFBCCECDAALAAtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMGAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMFwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMFgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMFQtBACECIANBADYCHCADIAE2AhQgA0HVEDYCECADQQk2AgwMFAtBACECIANBADYCHCADIAE2AhQgA0HXCjYCECADQQk2AgwMEwtBACECIANBADYCHCADIAE2AhQgA0G/EDYCECADQQk2AgwMEgtBACECIANBADYCHCADIAE2AhQgA0GkETYCECADQQk2AgwMEQtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMEAtBACECIANBADYCHCADIAE2AhQgA0G/FjYCECADQQ82AgwMDwtBACECIANBADYCHCADIAE2AhQgA0HIEjYCECADQQs2AgwMDgtBACECIANBADYCHCADIAE2AhQgA0GVCTYCECADQQs2AgwMDQtBACECIANBADYCHCADIAE2AhQgA0HpDzYCECADQQo2AgwMDAtBACECIANBADYCHCADIAE2AhQgA0GDEDYCECADQQo2AgwMCwtBACECIANBADYCHCADIAE2AhQgA0GmHDYCECADQQI2AgwMCgtBACECIANBADYCHCADIAE2AhQgA0HFFTYCECADQQI2AgwMCQtBACECIANBADYCHCADIAE2AhQgA0H/FzYCECADQQI2AgwMCAtBACECIANBADYCHCADIAE2AhQgA0HKFzYCECADQQI2AgwMBwsgA0ECNgIcIAMgATYCFCADQZQdNgIQIANBFjYCDEEAIQIMBgtB3gAhAiABIARGDQUgCUEIaiEHIAMoAgAhBQJAAkAgASAERwRAIAVBxsYAaiEIIAQgBWogAWshBiAFQX9zQQpqIgUgAWohAANAIAEtAAAgCC0AAEcEQEECIQgMAwsgBUUEQEEAIQggACEBDAMLIAVBAWshBSAIQQFqIQggBCABQQFqIgFHDQALIAYhBSAEIQELIAdBATYCACADIAU2AgAMAQsgA0EANgIAIAcgCDYCAAsgByABNgIEIAkoAgwhACAJKAIIDgMBBQIACwALIANBADYCHCADQa0dNgIQIANBFzYCDCADIABBAWo2AhRBACECDAMLIANBADYCHCADIAA2AhQgA0HCHTYCECADQQk2AgxBACECDAILIAEgBEYEQEEoIQIMAgsgA0EJNgIIIAMgATYCBEEnIQIMAQsgASAERgRAQQEhAgwBCwNAAkACQAJAIAEtAABBCmsOBAABAQABCyABQQFqIQEMAQsgAUEBaiEBIAMtAC5BIHENAEEAIQIgA0EANgIcIAMgATYCFCADQYwgNgIQIANBBTYCDAwCC0EBIQIgASAERw0ACwsgCUEQaiQAIAJFBEAgAygCDCEADAELIAMgAjYCHEEAIQAgAygCBCIBRQ0AIAMgASAEIAMoAggRAQAiAUUNACADIAQ2AhQgAyABNgIMIAEhAAsgAAu+AgECfyAAQQA6AAAgAEHcAGoiAUEBa0EAOgAAIABBADoAAiAAQQA6AAEgAUEDa0EAOgAAIAFBAmtBADoAACAAQQA6AAMgAUEEa0EAOgAAQQAgAGtBA3EiASAAaiIAQQA2AgBB3AAgAWtBfHEiAiAAaiIBQQRrQQA2AgACQCACQQlJDQAgAEEANgIIIABBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIAJBGUkNACAAQQA2AhggAEEANgIUIABBADYC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U3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMARXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVycwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGhlYWRlciB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBxdW90ZWQtcGFpciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgcmVzcG9uc2UgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGV4dGVuc2lvbiBuYW1lAEludmFsaWQgc3RhdHVzIGNvZGUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBkYXRhAEV4cGVjdGVkIExGIGFmdGVyIGNodW5rIGRhdGEAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAERhdGEgYWZ0ZXIgYENvbm5lY3Rpb246IGNsb3NlYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAUVVFUlkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBFeHBlY3RlZCBMRiBhZnRlciBDUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAFIVAAAaFQAADxIAAOQZAACRFQAACRQAAC0ZAADkFAAA6REAAGkUAAChFAAAdhUAAEMWAABeEgAAlBcAABcWAAB9FAAAfxYAAEEXAACzEwAAwxYAAAQaAAC9GAAA0BgAAKATAADUGQAArxYAAGgWAABwFwAA2RYAAPwYAAD+EQAAWRcAAJcWAAAcFwAA9hYAAI0XAAALEgAAfxsAAC4RAACzEAAASRIAAK0SAAD2GAAAaBAAAGIVAAAQFQAAWhYAAEoZAAC1FQAAwRUAAGAVAABcGQAAWhkAAFMZAAAWFQAArREAAEIQAAC3EAAAVxgAAL8VAACJEAAAHBkAABoZAAC5FQAAURgAANwTAABbFQAAWRUAAOYYAABnFQAAERkAAO0YAADnEwAArhAAAMIXAAAAFAAAkhMAAIQTAABAEgAAJhkAAK8VAABiEABB6TkLAQEAQYA6C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQeo7CwQBAAACAEGBPAteAwQDAwMDAwAAAwMAAwMAAwMDAwMDAwMDAwAFAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAMAAwBB6j0LBAEAAAIAQYE+C14DAAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAQABQAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEHgPwsNbG9zZWVlcC1hbGl2ZQBB+T8LAQEAQZDAAAvgAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5wQALAQEAQZDCAAvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBocQAC14BAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGAxgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBsMYACytyYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNClNNDQoNClRUUC9DRS9UU1AvAEHpxgALBQECAAEDAEGAxwALXwQFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAEHpyAALBQECAAEDAEGAyQALXwQFBQYFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAEHpygALBAEAAAEAQYHLAAteAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgBB6cwACwUBAgABAwBBgM0AC18EBQAABQUFBQUFBQUFBQUGBQUFBQUFBQUFBQUFAAUABwgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUABQAFAAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAAAABQBB6c4ACwUBAQABAQBBgM8ACwEBAEGazwALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEHp0AALBQEBAAEBAEGA0QALAQEAQYrRAAsGAgAAAAACAEGh0QALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQeDSAAuaAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VVRVJZT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=";
+ var wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
var wasmBuffer;
Object.defineProperty(module2, "exports", {
get: () => {
@@ -23499,13 +23713,12 @@ var require_data_url = __commonJS({
}
});
-// node_modules/undici/lib/web/fetch/webidl.js
+// node_modules/undici/lib/web/webidl/index.js
var require_webidl2 = __commonJS({
- "node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
+ "node_modules/undici/lib/web/webidl/index.js"(exports2, module2) {
"use strict";
var { types, inspect } = require("node:util");
var { markAsUncloneable } = require("node:worker_threads");
- var { toUSVString } = require_util8();
var UNDEFINED = 1;
var BOOLEAN = 2;
var STRING = 3;
@@ -23524,11 +23737,11 @@ var require_webidl2 = __commonJS({
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(", ")}.`;
+ webidl.errors.conversionFailed = function(opts) {
+ const plural = opts.types.length === 1 ? "" : " one of";
+ const message = `${opts.argument} could not be converted to${plural}: ${opts.types.join(", ")}.`;
return webidl.errors.exception({
- header: context.prefix,
+ header: opts.prefix,
message
});
};
@@ -23627,7 +23840,7 @@ var require_webidl2 = __commonJS({
};
webidl.util.markAsUncloneable = markAsUncloneable || (() => {
});
- webidl.util.ConvertToInt = function(V, bitLength, signedness, opts) {
+ webidl.util.ConvertToInt = function(V, bitLength, signedness, flags) {
let upperBound;
let lowerBound;
if (bitLength === 64) {
@@ -23648,7 +23861,7 @@ var require_webidl2 = __commonJS({
if (x === 0) {
x = 0;
}
- if (opts?.enforceRange === true) {
+ if (webidl.util.HasFlag(flags, webidl.attributes.EnforceRange)) {
if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
throw webidl.errors.exception({
header: "Integer conversion",
@@ -23664,7 +23877,7 @@ var require_webidl2 = __commonJS({
}
return x;
}
- if (!Number.isNaN(x) && opts?.clamp === true) {
+ if (!Number.isNaN(x) && webidl.util.HasFlag(flags, webidl.attributes.Clamp)) {
x = Math.min(Math.max(x, lowerBound), upperBound);
if (Math.floor(x) % 2 === 0) {
x = Math.floor(x);
@@ -23699,10 +23912,27 @@ var require_webidl2 = __commonJS({
return inspect(V);
case STRING:
return `"${V}"`;
+ case BIGINT:
+ return `${V}n`;
default:
return `${V}`;
}
};
+ webidl.util.IsResizableArrayBuffer = function(V) {
+ if (types.isArrayBuffer(V)) {
+ return V.resizable;
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ return V.growable;
+ }
+ throw webidl.errors.exception({
+ header: "IsResizableArrayBuffer",
+ message: `"${webidl.util.Stringify(V)}" is not an array buffer.`
+ });
+ };
+ webidl.util.HasFlag = function(flags, attributes) {
+ return typeof flags === "number" && (flags & attributes) === attributes;
+ };
webidl.sequenceConverter = function(converter) {
return (V, prefix, argument, Iterable) => {
if (webidl.util.Type(V) !== OBJECT) {
@@ -23818,15 +24048,21 @@ var require_webidl2 = __commonJS({
return converter(V, prefix, argument);
};
};
+ webidl.is.USVString = function(value) {
+ return typeof value === "string" && value.isWellFormed();
+ };
webidl.is.ReadableStream = webidl.util.MakeTypeAssertion(ReadableStream);
webidl.is.Blob = webidl.util.MakeTypeAssertion(Blob);
webidl.is.URLSearchParams = webidl.util.MakeTypeAssertion(URLSearchParams);
- webidl.is.File = webidl.util.MakeTypeAssertion(globalThis.File ?? require("node:buffer").File);
+ webidl.is.File = webidl.util.MakeTypeAssertion(File);
webidl.is.URL = webidl.util.MakeTypeAssertion(URL);
webidl.is.AbortSignal = webidl.util.MakeTypeAssertion(AbortSignal);
webidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort);
- webidl.converters.DOMString = function(V, prefix, argument, opts) {
- if (V === null && opts?.legacyNullToEmptyString) {
+ webidl.is.BufferSource = function(V) {
+ return types.isArrayBuffer(V) || ArrayBuffer.isView(V) && types.isArrayBuffer(V.buffer);
+ };
+ webidl.converters.DOMString = function(V, prefix, argument, flags) {
+ if (V === null && webidl.util.HasFlag(flags, webidl.attributes.LegacyNullToEmptyString)) {
return "";
}
if (typeof V === "symbol") {
@@ -23854,7 +24090,12 @@ var require_webidl2 = __commonJS({
}
return x;
};
- webidl.converters.USVString = toUSVString;
+ webidl.converters.USVString = function(value) {
+ if (typeof value === "string") {
+ return value.toWellFormed();
+ }
+ return `${value}`.toWellFormed();
+ };
webidl.converters.boolean = function(V) {
const x = Boolean(V);
return x;
@@ -23863,86 +24104,156 @@ var require_webidl2 = __commonJS({
return V;
};
webidl.converters["long long"] = function(V, prefix, argument) {
- const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument);
+ const x = webidl.util.ConvertToInt(V, 64, "signed", 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);
+ const x = webidl.util.ConvertToInt(V, 64, "unsigned", 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);
+ const x = webidl.util.ConvertToInt(V, 32, "unsigned", 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);
+ webidl.converters["unsigned short"] = function(V, prefix, argument, flags) {
+ const x = webidl.util.ConvertToInt(V, 16, "unsigned", flags, prefix, argument);
return x;
};
- webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) {
- if (webidl.util.Type(V) !== OBJECT || !types.isAnyArrayBuffer(V)) {
+ webidl.converters.ArrayBuffer = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isArrayBuffer(V)) {
throw webidl.errors.conversionFailed({
prefix,
argument: `${argument} ("${webidl.util.Stringify(V)}")`,
types: ["ArrayBuffer"]
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a resizable ArrayBuffer.`
});
}
- if (V.resizable || V.growable) {
+ return V;
+ };
+ webidl.converters.SharedArrayBuffer = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isSharedArrayBuffer(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["SharedArrayBuffer"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a resizable SharedArrayBuffer.`
});
}
return V;
};
- webidl.converters.TypedArray = function(V, T, prefix, name, opts) {
+ webidl.converters.TypedArray = function(V, T, prefix, argument, flags) {
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)}")`,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
types: [T.name]
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a view on a shared array buffer.`
});
}
- if (V.buffer.resizable || V.buffer.growable) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
return V;
};
- webidl.converters.DataView = function(V, prefix, name, opts) {
+ webidl.converters.DataView = function(V, prefix, argument, flags) {
if (webidl.util.Type(V) !== OBJECT || !types.isDataView(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["DataView"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
header: prefix,
- message: `${name} is not a DataView.`
+ message: `${argument} cannot be a view on a shared array buffer.`
});
}
- if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "SharedArrayBuffer is not allowed."
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
- if (V.buffer.resizable || V.buffer.growable) {
+ return V;
+ };
+ webidl.converters.ArrayBufferView = function(V, prefix, argument, flags) {
+ if (webidl.util.Type(V) !== OBJECT || !types.isArrayBufferView(V)) {
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBufferView"]
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {
throw webidl.errors.exception({
- header: "ArrayBuffer",
- message: "Received a resizable ArrayBuffer."
+ header: prefix,
+ message: `${argument} cannot be a view on a shared array buffer.`
+ });
+ }
+ if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {
+ throw webidl.errors.exception({
+ header: prefix,
+ message: `${argument} cannot be a view on a resizable array buffer.`
});
}
return V;
};
+ webidl.converters.BufferSource = function(V, prefix, argument, flags) {
+ if (types.isArrayBuffer(V)) {
+ return webidl.converters.ArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isArrayBufferView(V)) {
+ flags &= ~webidl.attributes.AllowShared;
+ return webidl.converters.ArrayBufferView(V, prefix, argument, flags);
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ throw webidl.errors.exception({
+ header: prefix,
+ message: `${argument} cannot be a SharedArrayBuffer.`
+ });
+ }
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBuffer", "ArrayBufferView"]
+ });
+ };
+ webidl.converters.AllowSharedBufferSource = function(V, prefix, argument, flags) {
+ if (types.isArrayBuffer(V)) {
+ return webidl.converters.ArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isSharedArrayBuffer(V)) {
+ return webidl.converters.SharedArrayBuffer(V, prefix, argument, flags);
+ }
+ if (types.isArrayBufferView(V)) {
+ flags |= webidl.attributes.AllowShared;
+ return webidl.converters.ArrayBufferView(V, prefix, argument, flags);
+ }
+ throw webidl.errors.conversionFailed({
+ prefix,
+ argument: `${argument} ("${webidl.util.Stringify(V)}")`,
+ types: ["ArrayBuffer", "SharedArrayBuffer", "ArrayBufferView"]
+ });
+ };
webidl.converters["sequence"] = webidl.sequenceConverter(
webidl.converters.ByteString
);
@@ -23958,6 +24269,23 @@ var require_webidl2 = __commonJS({
webidl.is.AbortSignal,
"AbortSignal"
);
+ webidl.converters.EventHandlerNonNull = function(V) {
+ if (webidl.util.Type(V) !== OBJECT) {
+ return null;
+ }
+ if (typeof V === "function") {
+ return V;
+ }
+ return () => {
+ };
+ };
+ webidl.attributes = {
+ Clamp: 1 << 0,
+ EnforceRange: 1 << 1,
+ AllowShared: 1 << 2,
+ AllowResizable: 1 << 3,
+ LegacyNullToEmptyString: 1 << 4
+ };
module2.exports = {
webidl
};
@@ -23978,14 +24306,6 @@ var require_util9 = __commonJS({
var assert = require("node:assert");
var { isUint8Array } = require("node:util/types");
var { webidl } = require_webidl2();
- var supportedHashes = [];
- var crypto;
- try {
- 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;
@@ -24222,7 +24542,7 @@ var require_util9 = __commonJS({
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
- return referrerOrigin;
+ return referrerURL;
}
}
}
@@ -24241,16 +24561,16 @@ var require_util9 = __commonJS({
}
return url;
}
- var potentialleTrustworthyIPv4RegExp = new RegExp("^(?:(?:127\\.)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){2}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]))$");
- var potentialleTrustworthyIPv6RegExp = new RegExp("^(?:(?:(?:0{1,4}):){7}(?:(?:0{0,3}1))|(?:(?:0{1,4}):){1,6}(?::(?:0{0,3}1))|(?:::(?:0{0,3}1))|)$");
+ var isPotentialleTrustworthyIPv4 = RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/);
+ var isPotentiallyTrustworthyIPv6 = RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);
function isOriginIPPotentiallyTrustworthy(origin) {
if (origin.includes(":")) {
if (origin[0] === "[" && origin[origin.length - 1] === "]") {
origin = origin.slice(1, -1);
}
- return potentialleTrustworthyIPv6RegExp.test(origin);
+ return isPotentiallyTrustworthyIPv6(origin);
}
- return potentialleTrustworthyIPv4RegExp.test(origin);
+ return isPotentialleTrustworthyIPv4(origin);
}
function isOriginPotentiallyTrustworthy(origin) {
if (origin == null || origin === "null") {
@@ -24285,101 +24605,6 @@ var require_util9 = __commonJS({
if (url.protocol === "blob:") return true;
return isOriginPotentiallyTrustworthy(url.origin);
}
- 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 {
- 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 token of metadata.split(" ")) {
- empty = false;
- const parsedToken = parseHashWithOptions.exec(token);
- 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(request2) {
}
function sameOrigin(A, B) {
@@ -24391,15 +24616,6 @@ var require_util9 = __commonJS({
}
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";
}
@@ -24547,14 +24763,12 @@ var require_util9 = __commonJS({
function fullyReadBody(body, processBody, processBodyError) {
const successSteps = processBody;
const errorSteps = processBodyError;
- let reader;
try {
- reader = body.stream.getReader();
+ const reader = body.stream.getReader();
+ readAllBytes(reader, successSteps, errorSteps);
} catch (e) {
errorSteps(e);
- return;
}
- readAllBytes(reader, successSteps, errorSteps);
}
function readableStreamClose(controller) {
try {
@@ -24572,9 +24786,9 @@ var require_util9 = __commonJS({
return input;
}
async function readAllBytes(reader, successSteps, failureSteps) {
- const bytes = [];
- let byteLength = 0;
try {
+ const bytes = [];
+ let byteLength = 0;
do {
const { done, value: chunk } = await reader.read();
if (done) {
@@ -24582,7 +24796,7 @@ var require_util9 = __commonJS({
return;
}
if (!isUint8Array(chunk)) {
- failureSteps(TypeError("Received non-Uint8Array chunk"));
+ failureSteps(new TypeError("Received non-Uint8Array chunk"));
return;
}
bytes.push(chunk);
@@ -24811,7 +25025,6 @@ var require_util9 = __commonJS({
isAborted,
isCancelled,
isValidEncodedURL,
- createDeferredPromise,
ReadableStreamFrom,
tryUpgradeRequestToAPotentiallyTrustworthyURL,
clampAndCoarsenConnectionTimingInfo,
@@ -24842,7 +25055,6 @@ var require_util9 = __commonJS({
isValidHeaderValue,
isErrorLike,
fullyReadBody,
- bytesMatch,
readableStreamClose,
isomorphicEncode,
urlIsLocal,
@@ -24851,7 +25063,6 @@ var require_util9 = __commonJS({
readAllBytes,
simpleRangeHeaderValue,
buildContentRange,
- parseMetadata,
createInflate,
extractMimeType,
getDecodeSplit,
@@ -24869,12 +25080,10 @@ var require_formdata2 = __commonJS({
var { iteratorMixin } = require_util9();
var { kEnumerableProperty } = require_util8();
var { webidl } = require_webidl2();
- var { File: NativeFile } = require("node:buffer");
var nodeUtil = require("node:util");
- var File = globalThis.File ?? NativeFile;
var FormData = class _FormData {
#state = [];
- constructor(form) {
+ constructor(form = void 0) {
webidl.util.markAsUncloneable(this);
if (form !== void 0) {
throw webidl.errors.conversionFailed({
@@ -25030,14 +25239,12 @@ var require_formdata2 = __commonJS({
var require_formdata_parser = __commonJS({
"node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) {
"use strict";
- var { isUSVString, bufferToLowerCasedHeaderName } = require_util8();
+ var { bufferToLowerCasedHeaderName } = require_util8();
var { utf8DecodeBytes } = require_util9();
var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
var { makeEntry } = require_formdata2();
var { webidl } = require_webidl2();
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("--");
@@ -25125,8 +25332,8 @@ var require_formdata_parser = __commonJS({
} else {
value = utf8DecodeBytes(Buffer.from(body));
}
- assert(isUSVString(name));
- assert(typeof value === "string" && isUSVString(value) || webidl.is.File(value));
+ assert(webidl.is.USVString(name));
+ assert(typeof value === "string" && webidl.is.USVString(value) || webidl.is.File(value));
entryList.push(makeEntry(name, value, filename));
}
}
@@ -25296,6 +25503,25 @@ var require_formdata_parser = __commonJS({
}
});
+// node_modules/undici/lib/util/promise.js
+var require_promise = __commonJS({
+ "node_modules/undici/lib/util/promise.js"(exports2, module2) {
+ "use strict";
+ function createDeferredPromise() {
+ let res;
+ let rej;
+ const promise = new Promise((resolve, reject) => {
+ res = resolve;
+ rej = reject;
+ });
+ return { promise, resolve: res, reject: rej };
+ }
+ module2.exports = {
+ createDeferredPromise
+ };
+ }
+});
+
// node_modules/undici/lib/web/fetch/body.js
var require_body2 = __commonJS({
"node_modules/undici/lib/web/fetch/body.js"(exports2, module2) {
@@ -25304,19 +25530,18 @@ var require_body2 = __commonJS({
var {
ReadableStreamFrom,
readableStreamClose,
- createDeferredPromise,
fullyReadBody,
extractMimeType,
utf8DecodeBytes
} = require_util9();
var { FormData, setFormDataState } = require_formdata2();
var { webidl } = require_webidl2();
- 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 { createDeferredPromise } = require_promise();
var random;
try {
const crypto = require("node:crypto");
@@ -25327,16 +25552,12 @@ var require_body2 = __commonJS({
var textEncoder = new TextEncoder();
function noop() {
}
- 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(noop);
- }
- });
- }
+ var 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(noop);
+ }
+ });
function extractBody(object, keepalive = false) {
let stream = null;
if (webidl.is.ReadableStream(object)) {
@@ -25345,7 +25566,7 @@ var require_body2 = __commonJS({
stream = object.stream();
} else {
stream = new ReadableStream({
- async pull(controller) {
+ pull(controller) {
const buffer = typeof source === "string" ? textEncoder.encode(source) : source;
if (buffer.byteLength) {
controller.enqueue(buffer);
@@ -25368,15 +25589,13 @@ var require_body2 = __commonJS({
} else if (webidl.is.URLSearchParams(object)) {
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 (webidl.is.BufferSource(object)) {
+ source = isArrayBuffer(object) ? new Uint8Array(object.slice()) : new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength));
} else if (webidl.is.FormData(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 formdataEscape = (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]);
@@ -25384,14 +25603,14 @@ Content-Disposition: form-data`;
let hasUnknownSizeValue = false;
for (const [name, value] of object) {
if (typeof value === "string") {
- const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
+ const chunk2 = textEncoder.encode(prefix + `; name="${formdataEscape(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
+ const chunk2 = textEncoder.encode(`${prefix}; name="${formdataEscape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${formdataEscape(value.name)}"` : "") + `\r
Content-Type: ${value.type || "application/octet-stream"}\r
\r
`);
@@ -25480,11 +25699,8 @@ Content-Type: ${value.type || "application/octet-stream"}\r
}
return extractBody(object, keepalive);
}
- function cloneBody(instance, body) {
- const [out1, out2] = body.stream.tee();
- if (hasFinalizationRegistry) {
- streamRegistry.register(instance, new WeakRef(out1));
- }
+ function cloneBody(body) {
+ const { 0: out1, 1: out2 } = body.stream.tee();
body.stream = out1;
return {
stream: out2,
@@ -25492,11 +25708,6 @@ Content-Type: ${value.type || "application/octet-stream"}\r
source: body.source
};
}
- function throwIfAborted(state) {
- if (state.aborted) {
- throw new DOMException("The operation was aborted.", "AbortError");
- }
- }
function bodyMixinMethods(instance, getInternalState) {
const methods = {
blob() {
@@ -25507,7 +25718,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
} else if (mimeType) {
mimeType = serializeAMimeType(mimeType);
}
- return new Blob2([bytes], { type: mimeType });
+ return new Blob([bytes], { type: mimeType });
}, instance, getInternalState);
},
arrayBuffer() {
@@ -25558,15 +25769,21 @@ Content-Type: ${value.type || "application/octet-stream"}\r
function mixinBody(prototype, getInternalState) {
Object.assign(prototype.prototype, bodyMixinMethods(prototype, getInternalState));
}
- async function consumeBody(object, convertBytesToJSValue, instance, getInternalState) {
- webidl.brandCheck(object, instance);
+ function consumeBody(object, convertBytesToJSValue, instance, getInternalState) {
+ try {
+ webidl.brandCheck(object, instance);
+ } catch (e) {
+ return Promise.reject(e);
+ }
const state = getInternalState(object);
if (bodyUnusable(state)) {
- throw new TypeError("Body is unusable: Body has already been read");
+ return Promise.reject(new TypeError("Body is unusable: Body has already been read"));
+ }
+ if (state.aborted) {
+ return Promise.reject(new DOMException("The operation was aborted.", "AbortError"));
}
- throwIfAborted(state);
const promise = createDeferredPromise();
- const errorSteps = (error) => promise.reject(error);
+ const errorSteps = promise.reject;
const successSteps = (data) => {
try {
promise.resolve(convertBytesToJSValue(data));
@@ -25602,7 +25819,6 @@ Content-Type: ${value.type || "application/octet-stream"}\r
cloneBody,
mixinBody,
streamRegistry,
- hasFinalizationRegistry,
bodyUnusable
};
}
@@ -25667,15 +25883,25 @@ var require_client_h1 = __commonJS({
var FastBuffer = Buffer[Symbol.species];
var removeAllListeners = util.removeAllListeners;
var extractBody;
- async function lazyllhttp() {
+ function lazyllhttp() {
const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm2() : void 0;
let mod;
- try {
- mod = await WebAssembly.compile(require_llhttp_simd_wasm2());
- } catch (e) {
- mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm2());
+ let useWasmSIMD = process.arch !== "ppc64";
+ if (process.env.UNDICI_NO_WASM_SIMD === "1") {
+ useWasmSIMD = true;
+ } else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
+ useWasmSIMD = false;
}
- return await WebAssembly.instantiate(mod, {
+ if (useWasmSIMD) {
+ try {
+ mod = new WebAssembly.Module(require_llhttp_simd_wasm2());
+ } catch {
+ }
+ }
+ if (!mod) {
+ mod = new WebAssembly.Module(llhttpWasmData || require_llhttp_wasm2());
+ }
+ return new WebAssembly.Instance(mod, {
env: {
/**
* @param {number} p
@@ -25761,8 +25987,6 @@ var require_client_h1 = __commonJS({
});
}
var llhttpInstance = null;
- var llhttpPromise = lazyllhttp();
- llhttpPromise.catch();
var currentParser = null;
var currentBufferRef = null;
var currentBufferSize = 0;
@@ -25812,7 +26036,7 @@ var require_client_h1 = __commonJS({
this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this));
} else {
this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this));
- this.timeout.unref();
+ this.timeout?.unref();
}
}
this.timeoutValue = delay;
@@ -25871,8 +26095,6 @@ var require_client_h1 = __commonJS({
currentBufferRef = chunk;
currentParser = this;
ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, chunk.length);
- } catch (err) {
- throw err;
} finally {
currentParser = null;
currentBufferRef = null;
@@ -26171,7 +26393,7 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new InformationalError("reset"));
return constants.ERROR.PAUSED;
} else if (client[kPipelining] == null || client[kPipelining] === 1) {
- setImmediate(() => client[kResume]());
+ setImmediate(client[kResume]);
} else {
client[kResume]();
}
@@ -26194,15 +26416,10 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new InformationalError("socket idle timeout"));
}
}
- async function connectH1(client, socket) {
+ function connectH1(client, socket) {
client[kSocket] = socket;
if (!llhttpInstance) {
- const noop = () => {
- };
- socket.on("error", noop);
- llhttpInstance = await llhttpPromise;
- llhttpPromise = null;
- socket.off("error", noop);
+ llhttpInstance = lazyllhttp();
}
if (socket.errored) {
throw socket.errored;
@@ -26535,9 +26752,9 @@ upgrade: ${upgrade}\r
}
socket.on("drain", onDrain).on("error", onFinished);
if (body.errorEmitted ?? body.errored) {
- setImmediate(() => onFinished(body.errored));
+ setImmediate(onFinished, body.errored);
} else if (body.endEmitted ?? body.readableEnded) {
- setImmediate(() => onFinished(null));
+ setImmediate(onFinished, null);
}
if (body.closeEmitted ?? body.closed) {
setImmediate(onClose);
@@ -26833,7 +27050,7 @@ var require_client_h2 = __commonJS({
}
return result;
}
- async function connectH2(client, socket) {
+ function connectH2(client, socket) {
client[kSocket] = socket;
const session = http2.connect(client[kUrl], {
createConnection: () => socket,
@@ -26977,7 +27194,7 @@ var require_client_h2 = __commonJS({
function writeH2(client, request2) {
const requestTimeout = request2.bodyTimeout ?? client[kBodyTimeout];
const session = client[kHTTP2Session];
- const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2;
+ const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request2;
let { body } = request2;
if (upgrade) {
util.errorRequest(client, request2, new Error("Upgrade not supported for H2"));
@@ -26987,14 +27204,24 @@ var require_client_h2 = __commonJS({
for (let n = 0; n < reqHeaders.length; n += 2) {
const key = reqHeaders[n + 0];
const val = reqHeaders[n + 1];
+ if (key === "cookie") {
+ if (headers[key] != null) {
+ headers[key] = Array.isArray(headers[key]) ? (headers[key].push(val), headers[key]) : [headers[key], val];
+ } else {
+ headers[key] = val;
+ }
+ continue;
+ }
if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) {
if (headers[key]) {
- headers[key] += `,${val[i]}`;
+ headers[key] += `, ${val[i]}`;
} else {
headers[key] = val[i];
}
}
+ } else if (headers[key]) {
+ headers[key] += `, ${val}`;
} else {
headers[key] = val;
}
@@ -27047,7 +27274,7 @@ var require_client_h2 = __commonJS({
return true;
}
headers[HTTP2_HEADER_PATH] = path;
- headers[HTTP2_HEADER_SCHEME] = "https";
+ headers[HTTP2_HEADER_SCHEME] = protocol === "http:" ? "http" : "https";
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
if (body && typeof body.read === "function") {
body.read(0);
@@ -27361,6 +27588,7 @@ var require_client2 = __commonJS({
var net = require("node:net");
var http = require("node:http");
var util = require_util8();
+ var { ClientStats } = require_stats();
var { channels } = require_diagnostics();
var Request = require_request3();
var DispatcherBase = require_dispatcher_base2();
@@ -27566,6 +27794,9 @@ var require_client2 = __commonJS({
this[kPipelining] = value;
this[kResume](true);
}
+ get stats() {
+ return new ClientStats(this);
+ }
get [kPending]() {
return this[kQueue].length - this[kPendingIdx];
}
@@ -27589,8 +27820,7 @@ var require_client2 = __commonJS({
this.once("connect", cb);
}
[kDispatch](opts, handler) {
- const origin = opts.origin || this[kUrl].origin;
- const request2 = new Request(origin, opts, handler);
+ const request2 = new Request(this[kUrl].origin, opts, handler);
this[kQueue].push(request2);
if (this[kResuming]) {
} else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
@@ -27604,7 +27834,7 @@ var require_client2 = __commonJS({
}
return this[kNeedDrain] < 2;
}
- async [kClose]() {
+ [kClose]() {
return new Promise((resolve) => {
if (this[kSize]) {
this[kClosedResolve] = resolve;
@@ -27613,7 +27843,7 @@ var require_client2 = __commonJS({
}
});
}
- async [kDestroy](err) {
+ [kDestroy](err) {
return new Promise((resolve) => {
const requests = this[kQueue].splice(this[kPendingIdx]);
for (let i = 0; i < requests.length; i++) {
@@ -27648,7 +27878,7 @@ var require_client2 = __commonJS({
assert(client[kSize] === 0);
}
}
- async function connect(client) {
+ function connect(client) {
assert(!client[kConnecting]);
assert(!client[kHTTPContext]);
let { host, hostname, protocol, port } = client[kUrl];
@@ -27674,33 +27904,32 @@ var require_client2 = __commonJS({
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);
- }
- });
- });
+ client[kConnector]({
+ host,
+ hostname,
+ protocol,
+ port,
+ servername: client[kServerName],
+ localAddress: client[kLocalAddress]
+ }, (err, socket) => {
+ if (err) {
+ handleConnectError(client, err, { host, hostname, protocol, port });
+ client[kResume]();
+ return;
+ }
if (client.destroyed) {
util.destroy(socket.on("error", noop), new ClientDestroyedError());
+ client[kResume]();
return;
}
assert(socket);
try {
- client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket);
- } catch (err) {
+ client[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client, socket) : connectH1(client, socket);
+ } catch (err2) {
socket.destroy().on("error", noop);
- throw err;
+ handleConnectError(client, err2, { host, hostname, protocol, port });
+ client[kResume]();
+ return;
}
client[kConnecting] = false;
socket[kCounter] = 0;
@@ -27723,38 +27952,39 @@ var require_client2 = __commonJS({
});
}
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,
- 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[kResume]();
+ });
+ }
+ function handleConnectError(client, err, { host, hostname, protocol, port }) {
+ 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);
}
- client.emit("connectionError", client[kUrl], [client], err);
+ } else {
+ onError(client, err);
}
- client[kResume]();
+ client.emit("connectionError", client[kUrl], [client], err);
}
function emitDrain(client) {
client[kNeedDrain] = 0;
@@ -27846,21 +28076,19 @@ var require_fixed_queue2 = __commonJS({
var kSize = 2048;
var kMask = kSize - 1;
var FixedCircularBuffer = class {
- constructor() {
- this.bottom = 0;
- this.top = 0;
- this.list = new Array(kSize).fill(void 0);
- this.next = null;
- }
- /**
- * @returns {boolean}
- */
+ /** @type {number} */
+ bottom = 0;
+ /** @type {number} */
+ top = 0;
+ /** @type {Array} */
+ list = new Array(kSize).fill(void 0);
+ /** @type {T|null} */
+ next = null;
+ /** @returns {boolean} */
isEmpty() {
return this.top === this.bottom;
}
- /**
- * @returns {boolean}
- */
+ /** @returns {boolean} */
isFull() {
return (this.top + 1 & kMask) === this.bottom;
}
@@ -27872,9 +28100,7 @@ var require_fixed_queue2 = __commonJS({
this.list[this.top] = data;
this.top = this.top + 1 & kMask;
}
- /**
- * @returns {T|null}
- */
+ /** @returns {T|null} */
shift() {
const nextItem = this.list[this.bottom];
if (nextItem === void 0) {
@@ -27889,24 +28115,18 @@ var require_fixed_queue2 = __commonJS({
constructor() {
this.head = this.tail = new FixedCircularBuffer();
}
- /**
- * @returns {boolean}
- */
+ /** @returns {boolean} */
isEmpty() {
return this.head.isEmpty();
}
- /**
- * @param {T} data
- */
+ /** @param {T} data */
push(data) {
if (this.head.isFull()) {
this.head = this.head.next = new FixedCircularBuffer();
}
this.head.push(data);
}
- /**
- * @returns {T|null}
- */
+ /** @returns {T|null} */
shift() {
const tail = this.tail;
const next = tail.shift();
@@ -27920,47 +28140,14 @@ var require_fixed_queue2 = __commonJS({
}
});
-// node_modules/undici/lib/dispatcher/pool-stats.js
-var require_pool_stats2 = __commonJS({
- "node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) {
- "use strict";
- var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols6();
- 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_base2 = __commonJS({
"node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) {
"use strict";
+ var { PoolStats } = require_stats();
var DispatcherBase = require_dispatcher_base2();
var FixedQueue = require_fixed_queue2();
var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols6();
- var PoolStats = require_pool_stats2();
var kClients = Symbol("clients");
var kNeedDrain = Symbol("needDrain");
var kQueue = Symbol("queue");
@@ -27972,53 +28159,60 @@ var require_pool_base2 = __commonJS({
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]);
+ [kQueue] = new FixedQueue();
+ [kQueued] = 0;
+ [kClients] = [];
+ [kNeedDrain] = false;
+ [kOnDrain](client, origin, targets) {
+ const queue = this[kQueue];
+ let needDrain = false;
+ while (!needDrain) {
+ const item = queue.shift();
+ if (!item) {
+ break;
}
- if (pool[kClosedResolve] && queue.isEmpty()) {
- Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]);
+ this[kQueued]--;
+ needDrain = !client.dispatch(item.opts, item.handler);
+ }
+ client[kNeedDrain] = needDrain;
+ if (!needDrain && this[kNeedDrain]) {
+ this[kNeedDrain] = false;
+ this.emit("drain", origin, [this, ...targets]);
+ }
+ if (this[kClosedResolve] && queue.isEmpty()) {
+ const closeAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ closeAll[i] = this[kClients][i].close();
}
- };
- 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);
+ Promise.all(closeAll).then(this[kClosedResolve]);
+ }
}
+ [kOnConnect] = (origin, targets) => {
+ this.emit("connect", origin, [this, ...targets]);
+ };
+ [kOnDisconnect] = (origin, targets, err) => {
+ this.emit("disconnect", origin, [this, ...targets], err);
+ };
+ [kOnConnectionError] = (origin, targets, err) => {
+ this.emit("connectionError", origin, [this, ...targets], err);
+ };
get [kBusy]() {
return this[kNeedDrain];
}
get [kConnected]() {
- return this[kClients].filter((client) => client[kConnected]).length;
+ let ret = 0;
+ for (const { [kConnected]: connected } of this[kClients]) {
+ ret += connected;
+ }
+ return ret;
}
get [kFree]() {
- return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length;
+ let ret = 0;
+ for (const { [kConnected]: connected, [kNeedDrain]: needDrain } of this[kClients]) {
+ ret += connected && !needDrain;
+ }
+ return ret;
}
get [kPending]() {
let ret = this[kQueued];
@@ -28042,18 +28236,22 @@ var require_pool_base2 = __commonJS({
return ret;
}
get stats() {
- return this[kStats];
+ return new PoolStats(this);
}
- async [kClose]() {
+ [kClose]() {
if (this[kQueue].isEmpty()) {
- await Promise.all(this[kClients].map((c) => c.close()));
+ const closeAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ closeAll[i] = this[kClients][i].close();
+ }
+ return Promise.all(closeAll);
} else {
- await new Promise((resolve) => {
+ return new Promise((resolve) => {
this[kClosedResolve] = resolve;
});
}
}
- async [kDestroy](err) {
+ [kDestroy](err) {
while (true) {
const item = this[kQueue].shift();
if (!item) {
@@ -28061,7 +28259,11 @@ var require_pool_base2 = __commonJS({
}
item.handler.onError(err);
}
- await Promise.all(this[kClients].map((c) => c.destroy(err)));
+ const destroyAll = new Array(this[kClients].length);
+ for (let i = 0; i < this[kClients].length; i++) {
+ destroyAll[i] = this[kClients][i].destroy(err);
+ }
+ return Promise.all(destroyAll);
}
[kDispatch](opts, handler) {
const dispatcher = this[kGetDispatcher]();
@@ -28076,12 +28278,12 @@ var require_pool_base2 = __commonJS({
return !this[kNeedDrain];
}
[kAddClient](client) {
- client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]);
+ client.on("drain", this[kOnDrain].bind(this, client)).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]);
+ this[kOnDrain](client, client[kUrl], [client, this]);
}
});
}
@@ -28117,7 +28319,8 @@ var require_pool2 = __commonJS({
kClients,
kNeedDrain,
kAddClient,
- kGetDispatcher
+ kGetDispatcher,
+ kRemoveClient
} = require_pool_base2();
var Client = require_client2();
var {
@@ -28144,6 +28347,7 @@ var require_pool2 = __commonJS({
autoSelectFamily,
autoSelectFamilyAttemptTimeout,
allowH2,
+ clientTtl,
...options
} = {}) {
if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
@@ -28155,7 +28359,6 @@ var require_pool2 = __commonJS({
if (connect != null && typeof connect !== "function" && typeof connect !== "object") {
throw new InvalidArgumentError("connect must be a function or an object");
}
- super();
if (typeof connect !== "function") {
connect = buildConnector({
...tls,
@@ -28167,11 +28370,19 @@ var require_pool2 = __commonJS({
...connect
});
}
+ super();
this[kConnections] = connections || null;
this[kUrl] = util.parseOrigin(origin);
- this[kOptions] = { ...util.deepClone(options), connect, allowH2 };
+ this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl };
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
this[kFactory] = factory;
+ this.on("connect", (origin2, targets) => {
+ if (clientTtl != null && clientTtl > 0) {
+ for (const target of targets) {
+ Object.assign(target, { ttl: Date.now() });
+ }
+ }
+ });
this.on("connectionError", (origin2, targets, error) => {
for (const target of targets) {
const idx = this[kClients].indexOf(target);
@@ -28182,8 +28393,11 @@ var require_pool2 = __commonJS({
});
}
[kGetDispatcher]() {
+ const clientTtlOption = this[kOptions].clientTtl;
for (const client of this[kClients]) {
- if (!client[kNeedDrain]) {
+ if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) {
+ this[kRemoveClient](client);
+ } else if (!client[kNeedDrain]) {
return client;
}
}
@@ -28345,8 +28559,8 @@ var require_balanced_pool2 = __commonJS({
var require_agent2 = __commonJS({
"node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) {
"use strict";
- var { InvalidArgumentError } = require_errors2();
- var { kClients, kRunning, kClose, kDestroy, kDispatch } = require_symbols6();
+ var { InvalidArgumentError, MaxOriginsReachedError } = require_errors2();
+ var { kClients, kRunning, kClose, kDestroy, kDispatch, kUrl } = require_symbols6();
var DispatcherBase = require_dispatcher_base2();
var Pool = require_pool2();
var Client = require_client2();
@@ -28357,24 +28571,29 @@ var require_agent2 = __commonJS({
var kOnDrain = Symbol("onDrain");
var kFactory = Symbol("factory");
var kOptions = Symbol("options");
+ var kOrigins = Symbol("origins");
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, connect, ...options } = {}) {
+ constructor({ factory = defaultFactory, maxOrigins = Infinity, connect, ...options } = {}) {
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 maxOrigins !== "number" || Number.isNaN(maxOrigins) || maxOrigins <= 0) {
+ throw new InvalidArgumentError("maxOrigins must be a number greater than 0");
+ }
super();
if (connect && typeof connect !== "function") {
connect = { ...connect };
}
- this[kOptions] = { ...util.deepClone(options), connect };
+ this[kOptions] = { ...util.deepClone(options), maxOrigins, connect };
this[kFactory] = factory;
this[kClients] = /* @__PURE__ */ new Map();
+ this[kOrigins] = /* @__PURE__ */ new Set();
this[kOnDrain] = (origin, targets) => {
this.emit("drain", origin, [this, ...targets]);
};
@@ -28390,8 +28609,8 @@ var require_agent2 = __commonJS({
}
get [kRunning]() {
let ret = 0;
- for (const client of this[kClients].values()) {
- ret += client[kRunning];
+ for (const { dispatcher } of this[kClients].values()) {
+ ret += dispatcher[kRunning];
}
return ret;
}
@@ -28402,28 +28621,65 @@ var require_agent2 = __commonJS({
} else {
throw new InvalidArgumentError("opts.origin must be a non-empty string or URL.");
}
- let dispatcher = this[kClients].get(key);
+ if (this[kOrigins].size >= this[kOptions].maxOrigins && !this[kOrigins].has(key)) {
+ throw new MaxOriginsReachedError();
+ }
+ const result = this[kClients].get(key);
+ let dispatcher = result && result.dispatcher;
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);
+ const closeClientIfUnused = (connected) => {
+ const result2 = this[kClients].get(key);
+ if (result2) {
+ if (connected) result2.count -= 1;
+ if (result2.count <= 0) {
+ this[kClients].delete(key);
+ result2.dispatcher.close();
+ }
+ this[kOrigins].delete(key);
+ }
+ };
+ dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", (origin, targets) => {
+ const result2 = this[kClients].get(key);
+ if (result2) {
+ result2.count += 1;
+ }
+ this[kOnConnect](origin, targets);
+ }).on("disconnect", (origin, targets, err) => {
+ closeClientIfUnused(true);
+ this[kOnDisconnect](origin, targets, err);
+ }).on("connectionError", (origin, targets, err) => {
+ closeClientIfUnused(false);
+ this[kOnConnectionError](origin, targets, err);
+ });
+ this[kClients].set(key, { count: 0, dispatcher });
+ this[kOrigins].add(key);
}
return dispatcher.dispatch(opts, handler);
}
- async [kClose]() {
+ [kClose]() {
const closePromises = [];
- for (const client of this[kClients].values()) {
- closePromises.push(client.close());
+ for (const { dispatcher } of this[kClients].values()) {
+ closePromises.push(dispatcher.close());
}
this[kClients].clear();
- await Promise.all(closePromises);
+ return Promise.all(closePromises);
}
- async [kDestroy](err) {
+ [kDestroy](err) {
const destroyPromises = [];
- for (const client of this[kClients].values()) {
- destroyPromises.push(client.destroy(err));
+ for (const { dispatcher } of this[kClients].values()) {
+ destroyPromises.push(dispatcher.destroy(err));
}
this[kClients].clear();
- await Promise.all(destroyPromises);
+ return Promise.all(destroyPromises);
+ }
+ get stats() {
+ const allClientStats = {};
+ for (const { dispatcher } of this[kClients].values()) {
+ if (dispatcher.stats) {
+ allClientStats[dispatcher[kUrl].origin] = dispatcher.stats;
+ }
+ }
+ return allClientStats;
}
};
module2.exports = Agent;
@@ -28434,19 +28690,20 @@ var require_agent2 = __commonJS({
var require_proxy_agent2 = __commonJS({
"node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) {
"use strict";
- var { kProxy, kClose, kDestroy } = require_symbols6();
- var { URL: URL2 } = require("node:url");
+ var { kProxy, kClose, kDestroy, kDispatch } = require_symbols6();
var Agent = require_agent2();
var Pool = require_pool2();
var DispatcherBase = require_dispatcher_base2();
var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors2();
var buildConnector = require_connect2();
+ var Client = require_client2();
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;
}
@@ -28455,15 +28712,67 @@ var require_proxy_agent2 = __commonJS({
}
var noop = () => {
};
+ 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(proxyUrl2, { headers = {}, connect, factory }) {
+ if (!proxyUrl2) {
+ throw new InvalidArgumentError("Proxy URL is mandatory");
+ }
+ super();
+ this[kProxyHeaders] = headers;
+ if (factory) {
+ this.#client = factory(proxyUrl2, { connect });
+ } else {
+ this.#client = new Client(proxyUrl2, { connect });
+ }
+ }
+ [kDispatch](opts, handler) {
+ const onHeaders = handler.onHeaders;
+ handler.onHeaders = function(statusCode, data, resume) {
+ if (statusCode === 407) {
+ if (typeof handler.onError === "function") {
+ handler.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 URL(origin);
+ headers.host = host;
+ }
+ opts.headers = { ...this[kProxyHeaders], ...headers };
+ return this.#client[kDispatch](opts, handler);
+ }
+ [kClose]() {
+ return this.#client.close();
+ }
+ [kDestroy](err) {
+ return this.#client.destroy(err);
+ }
+ };
var ProxyAgent2 = class extends DispatcherBase {
constructor(opts) {
- if (!opts || typeof opts === "object" && !(opts instanceof URL2) && !opts.uri) {
+ if (!opts || typeof opts === "object" && !(opts instanceof URL) && !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;
super();
const url = this.#getUrl(opts);
const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url;
@@ -28471,6 +28780,7 @@ var require_proxy_agent2 = __commonJS({
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) {
@@ -28482,9 +28792,22 @@ var require_proxy_agent2 = __commonJS({
}
const connect = buildConnector({ ...opts.proxyTls });
this[kConnectEndpoint] = buildConnector({ ...opts.requestTls });
+ const agentFactory = opts.factory || defaultAgentFactory;
+ const factory = (origin2, options) => {
+ const { protocol: protocol2 } = new URL(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) {
@@ -28498,7 +28821,8 @@ var require_proxy_agent2 = __commonJS({
signal: opts2.signal,
headers: {
...this[kProxyHeaders],
- host: opts2.host
+ host: opts2.host,
+ ...opts2.connections == null || opts2.connections > 0 ? { "proxy-connection": "keep-alive" } : {}
},
servername: this[kProxyTls]?.servername || proxyHostname
});
@@ -28531,7 +28855,7 @@ var require_proxy_agent2 = __commonJS({
const headers = buildHeaders(opts.headers);
throwIfProxyAuthIsSent(headers);
if (headers && !("host" in headers) && !("Host" in headers)) {
- const { host } = new URL2(opts.origin);
+ const { host } = new URL(opts.origin);
headers.host = host;
}
return this[kAgent].dispatch(
@@ -28543,25 +28867,29 @@ var require_proxy_agent2 = __commonJS({
);
}
/**
- * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts
+ * @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 new URL(opts);
+ } else if (opts instanceof URL) {
return opts;
} else {
- return new URL2(opts.uri);
+ return new URL(opts.uri);
}
}
- async [kClose]() {
- await this[kAgent].close();
- await this[kClient].close();
+ [kClose]() {
+ return Promise.all([
+ this[kAgent].close(),
+ this[kClient].close()
+ ]);
}
- async [kDestroy]() {
- await this[kAgent].destroy();
- await this[kClient].destroy();
+ [kDestroy]() {
+ return Promise.all([
+ this[kAgent].destroy(),
+ this[kClient].destroy()
+ ]);
}
};
function buildHeaders(headers) {
@@ -28624,23 +28952,19 @@ var require_env_http_proxy_agent = __commonJS({
const agent = this.#getProxyAgentForUrl(url);
return agent.dispatch(opts, handler);
}
- async [kClose]() {
- await this[kNoProxyAgent].close();
- if (!this[kHttpProxyAgent][kClosed]) {
- await this[kHttpProxyAgent].close();
- }
- if (!this[kHttpsProxyAgent][kClosed]) {
- await this[kHttpsProxyAgent].close();
- }
+ [kClose]() {
+ return Promise.all([
+ this[kNoProxyAgent].close(),
+ !this[kHttpProxyAgent][kClosed] && this[kHttpProxyAgent].close(),
+ !this[kHttpsProxyAgent][kClosed] && this[kHttpsProxyAgent].close()
+ ]);
}
- 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);
- }
+ [kDestroy](err) {
+ return Promise.all([
+ this[kNoProxyAgent].destroy(err),
+ !this[kHttpProxyAgent][kDestroyed] && this[kHttpProxyAgent].destroy(err),
+ !this[kHttpsProxyAgent][kDestroyed] && this[kHttpsProxyAgent].destroy(err)
+ ]);
}
#getProxyAgentForUrl(url) {
let { protocol, host: hostname, port } = url;
@@ -28744,12 +29068,15 @@ var require_retry_handler = __commonJS({
methods,
errorCodes,
retryAfter,
- statusCodes
+ statusCodes,
+ throwOnError
} = retryOptions ?? {};
+ this.error = null;
this.dispatch = dispatch;
this.handler = WrapHandler.wrap(handler);
this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) };
this.retryOpts = {
+ throwOnError: throwOnError ?? true,
retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry],
retryAfter: retryAfter ?? true,
maxTimeout: maxTimeout ?? 30 * 1e3,
@@ -28782,6 +29109,42 @@ var require_retry_handler = __commonJS({
this.end = null;
this.etag = null;
}
+ onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err) {
+ if (this.retryOpts.throwOnError) {
+ if (this.retryOpts.statusCodes.includes(statusCode) === false) {
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ } else {
+ this.error = err;
+ }
+ return;
+ }
+ if (isDisturbed(this.opts.body)) {
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ return;
+ }
+ function shouldRetry(passedErr) {
+ if (passedErr) {
+ this.headersSent = true;
+ this.headersSent = true;
+ this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
+ controller.resume();
+ return;
+ }
+ this.error = err;
+ controller.resume();
+ }
+ controller.pause();
+ this.retryOpts.retry(
+ err,
+ {
+ state: { counter: this.retryCount },
+ opts: { retryOptions: this.retryOpts, ...this.opts }
+ },
+ shouldRetry.bind(this)
+ );
+ }
onRequestStart(controller, context) {
if (!this.headersSent) {
this.handler.onRequestStart?.(controller, context);
@@ -28828,25 +29191,17 @@ var require_retry_handler = __commonJS({
setTimeout(() => cb(null), retryTimeout);
}
onResponseStart(controller, statusCode, headers, statusMessage) {
+ this.error = null;
this.retryCount += 1;
if (statusCode >= 300) {
- if (this.retryOpts.statusCodes.includes(statusCode) === false) {
- this.headersSent = true;
- this.handler.onResponseStart?.(
- controller,
- statusCode,
- headers,
- statusMessage
- );
- return;
- } else {
- throw new RequestRetryError("Request failed", statusCode, {
- headers,
- data: {
- count: this.retryCount
- }
- });
- }
+ const err = new RequestRetryError("Request failed", statusCode, {
+ headers,
+ data: {
+ count: this.retryCount
+ }
+ });
+ this.onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err);
+ return;
}
if (this.headersSent) {
if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) {
@@ -28924,18 +29279,55 @@ var require_retry_handler = __commonJS({
}
}
onResponseData(controller, chunk) {
+ if (this.error) {
+ return;
+ }
this.start += chunk.length;
this.handler.onResponseData?.(controller, chunk);
}
onResponseEnd(controller, trailers) {
- this.retryCount = 0;
- return this.handler.onResponseEnd?.(controller, trailers);
+ if (this.error && this.retryOpts.throwOnError) {
+ throw this.error;
+ }
+ if (!this.error) {
+ this.retryCount = 0;
+ return this.handler.onResponseEnd?.(controller, trailers);
+ }
+ this.retry(controller);
+ }
+ retry(controller) {
+ 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 (err) {
+ this.handler.onResponseError?.(controller, err);
+ }
}
onResponseError(controller, err) {
if (controller?.aborted || isDisturbed(this.opts.body)) {
this.handler.onResponseError?.(controller, err);
return;
}
+ function shouldRetry(returnedErr) {
+ if (!returnedErr) {
+ this.retry(controller);
+ return;
+ }
+ this.handler?.onResponseError?.(controller, returnedErr);
+ }
if (this.retryCount - this.retryCountCheckpoint > 0) {
this.retryCount = this.retryCountCheckpoint + (this.retryCount - this.retryCountCheckpoint);
} else {
@@ -28947,32 +29339,8 @@ var require_retry_handler = __commonJS({
state: { counter: this.retryCount },
opts: { retryOptions: this.retryOpts, ...this.opts }
},
- onRetry.bind(this)
+ shouldRetry.bind(this)
);
- function onRetry(err2) {
- if (err2 != null || controller?.aborted || isDisturbed(this.opts.body)) {
- return this.handler.onResponseError?.(controller, 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.onResponseError?.(controller, err3);
- }
- }
}
};
module2.exports = RetryHandler;
@@ -29027,7 +29395,6 @@ var require_h2c_client = __commonJS({
var H2CClient = class extends DispatcherBase {
#client = null;
constructor(origin, clientOpts) {
- super();
if (typeof origin === "string") {
origin = new URL(origin);
}
@@ -29050,6 +29417,7 @@ var require_h2c_client = __commonJS({
"h2c-client: pipelining cannot be greater than maxConcurrentStreams"
);
}
+ super();
this.#client = new Client(origin, {
...opts,
connect: this.#buildConnector(connect2),
@@ -29098,11 +29466,11 @@ var require_h2c_client = __commonJS({
dispatch(opts, handler) {
return this.#client.dispatch(opts, handler);
}
- async [kClose]() {
- await this.#client.close();
+ [kClose]() {
+ return this.#client.close();
}
- async [kDestroy]() {
- await this.#client.destroy();
+ [kDestroy]() {
+ return this.#client.destroy();
}
};
module2.exports = H2CClient;
@@ -29173,15 +29541,13 @@ var require_readable2 = __commonJS({
this[kAbort]();
}
if (!this[kUsed]) {
- setImmediate(() => {
- callback(err);
- });
+ setImmediate(callback, err);
} else {
callback(err);
}
}
/**
- * @param {string} event
+ * @param {string|symbol} event
* @param {(...args: any[]) => void} listener
* @returns {this}
*/
@@ -29193,7 +29559,7 @@ var require_readable2 = __commonJS({
return super.on(event, listener);
}
/**
- * @param {string} event
+ * @param {string|symbol} event
* @param {(...args: any[]) => void} listener
* @returns {this}
*/
@@ -29225,10 +29591,12 @@ var require_readable2 = __commonJS({
* @returns {boolean}
*/
push(chunk) {
- this[kBytesRead] += chunk ? chunk.length : 0;
- if (this[kConsume] && chunk !== null) {
- consumePush(this[kConsume], chunk);
- return this[kReading] ? super.push(chunk) : true;
+ if (chunk) {
+ this[kBytesRead] += chunk.length;
+ if (this[kConsume]) {
+ consumePush(this[kConsume], chunk);
+ return this[kReading] ? super.push(chunk) : true;
+ }
}
return super.push(chunk);
}
@@ -29319,17 +29687,19 @@ var require_readable2 = __commonJS({
* @param {AbortSignal} [opts.signal] An AbortSignal to cancel the dump.
* @returns {Promise}
*/
- async dump(opts) {
+ dump(opts) {
const signal = opts?.signal;
if (signal != null && (typeof signal !== "object" || !("aborted" in signal))) {
- throw new InvalidArgumentError("signal must be an AbortSignal");
+ return Promise.reject(new InvalidArgumentError("signal must be an AbortSignal"));
}
const limit = opts?.limit && Number.isFinite(opts.limit) ? opts.limit : 128 * 1024;
- signal?.throwIfAborted();
+ if (signal?.aborted) {
+ return Promise.reject(signal.reason ?? new AbortError());
+ }
if (this._readableState.closeEmitted) {
- return null;
+ return Promise.resolve(null);
}
- return await new Promise((resolve, reject) => {
+ return new Promise((resolve, reject) => {
if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
this.destroy(new AbortError());
}
@@ -29379,9 +29749,7 @@ var require_readable2 = __commonJS({
if (isUnusable(stream)) {
const rState = stream._readableState;
if (rState.destroyed && rState.closeEmitted === false) {
- stream.on("error", (err) => {
- reject(err);
- }).on("close", () => {
+ stream.on("error", reject).on("close", () => {
reject(new TypeError("unusable"));
});
} else {
@@ -29612,14 +29980,22 @@ var require_api_request2 = __commonJS({
this.callback = null;
this.res = res;
if (callback !== null) {
- this.runInAsyncScope(callback, null, null, {
- statusCode,
- headers,
- trailers: this.trailers,
- opaque,
- body: res,
- context
- });
+ try {
+ this.runInAsyncScope(callback, null, null, {
+ statusCode,
+ headers,
+ trailers: this.trailers,
+ opaque,
+ body: res,
+ context
+ });
+ } catch (err) {
+ this.res = null;
+ util.destroy(res.on("error", noop), err);
+ queueMicrotask(() => {
+ throw err;
+ });
+ }
}
}
onData(chunk) {
@@ -29824,7 +30200,7 @@ var require_api_stream2 = __commonJS({
finished(res, { readable: false }, (err) => {
const { callback, res: res2, opaque: opaque2, trailers, abort } = this;
this.res = null;
- if (err || !res2.readable) {
+ if (err || !res2?.readable) {
util.destroy(res2, err);
}
this.callback = null;
@@ -30295,6 +30671,7 @@ var require_mock_errors2 = __commonJS({
"node_modules/undici/lib/mock/mock-errors.js"(exports2, module2) {
"use strict";
var { UndiciError } = require_errors2();
+ var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");
var MockNotMatchedError = class extends UndiciError {
constructor(message) {
super(message);
@@ -30302,6 +30679,12 @@ var require_mock_errors2 = __commonJS({
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;
+ }
+ get [kMockNotMatchedError]() {
+ return true;
+ }
};
module2.exports = {
MockNotMatchedError
@@ -30339,6 +30722,7 @@ var require_mock_symbols2 = __commonJS({
kMockAgentRegisterCallHistory: Symbol("mock agent register mock call history"),
kMockAgentAddCallHistoryLog: Symbol("mock agent add call history log"),
kMockAgentIsCallHistoryEnabled: Symbol("mock agent is call history enabled"),
+ kMockAgentAcceptsNonStandardSearchParameters: Symbol("mock agent accepts non standard search parameters"),
kMockCallHistoryAddLog: Symbol("mock call history add log")
};
}
@@ -30426,6 +30810,30 @@ var require_mock_utils2 = __commonJS({
}
return true;
}
+ function normalizeSearchParams(query) {
+ if (typeof query !== "string") {
+ return query;
+ }
+ const originalQp = new URLSearchParams(query);
+ const normalizedQp = new URLSearchParams();
+ for (let [key, value] of originalQp.entries()) {
+ key = key.replace("[]", "");
+ const valueRepresentsString = /^(['"]).*\1$/.test(value);
+ if (valueRepresentsString) {
+ normalizedQp.append(key, value);
+ continue;
+ }
+ if (value.includes(",")) {
+ const values = value.split(",");
+ for (const v of values) {
+ normalizedQp.append(key, v);
+ }
+ continue;
+ }
+ normalizedQp.append(key, value);
+ }
+ return normalizedQp;
+ }
function safeUrl(path) {
if (typeof path !== "string") {
return path;
@@ -30601,7 +31009,7 @@ var require_mock_utils2 = __commonJS({
try {
mockDispatch.call(this, opts, handler);
} catch (error) {
- if (error instanceof MockNotMatchedError) {
+ if (error.code === "UND_MOCK_ERR_MOCK_NOT_MATCHED") {
const netConnect = agent[kGetNetConnect]();
if (netConnect === false) {
throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`);
@@ -30630,13 +31038,17 @@ var require_mock_utils2 = __commonJS({
return false;
}
function buildAndValidateMockOptions(opts) {
- if (opts) {
- const { agent, ...mockOptions } = opts;
- if ("enableCallHistory" in mockOptions && typeof mockOptions.enableCallHistory !== "boolean") {
- throw new InvalidArgumentError("options.enableCallHistory must to be a boolean");
- }
- return mockOptions;
+ const { agent, ...mockOptions } = opts;
+ if ("enableCallHistory" in mockOptions && typeof mockOptions.enableCallHistory !== "boolean") {
+ throw new InvalidArgumentError("options.enableCallHistory must to be a boolean");
+ }
+ if ("acceptNonStandardSearchParameters" in mockOptions && typeof mockOptions.acceptNonStandardSearchParameters !== "boolean") {
+ throw new InvalidArgumentError("options.acceptNonStandardSearchParameters must to be a boolean");
+ }
+ if ("ignoreTrailingSlash" in mockOptions && typeof mockOptions.ignoreTrailingSlash !== "boolean") {
+ throw new InvalidArgumentError("options.ignoreTrailingSlash must to be a boolean");
}
+ return mockOptions;
}
module2.exports = {
getResponseData: getResponseData2,
@@ -30653,7 +31065,8 @@ var require_mock_utils2 = __commonJS({
checkNetConnect,
buildAndValidateMockOptions,
getHeaderByName,
- buildHeadersFromArray
+ buildHeadersFromArray,
+ normalizeSearchParams
};
}
});
@@ -30870,6 +31283,9 @@ var require_mock_client2 = __commonJS({
this[kDispatches]
);
}
+ cleanMocks() {
+ this[kDispatches] = [];
+ }
async [kClose]() {
await promisify(this[kOriginalClose])();
this[kConnected] = 0;
@@ -31128,6 +31544,9 @@ var require_mock_pool2 = __commonJS({
this[kDispatches]
);
}
+ cleanMocks() {
+ this[kDispatches] = [];
+ }
async [kClose]() {
await promisify(this[kOriginalClose])();
this[kConnected] = 0;
@@ -31199,22 +31618,26 @@ var require_mock_agent2 = __commonJS({
kMockAgentIsCallHistoryEnabled,
kMockAgentAddCallHistoryLog,
kMockAgentMockCallHistoryInstance,
- kMockCallHistoryAddLog
+ kMockAgentAcceptsNonStandardSearchParameters,
+ kMockCallHistoryAddLog,
+ kIgnoreTrailingSlash
} = require_mock_symbols2();
var MockClient = require_mock_client2();
var MockPool = require_mock_pool2();
- var { matchValue, buildAndValidateMockOptions } = require_mock_utils2();
+ var { matchValue, normalizeSearchParams, buildAndValidateMockOptions } = require_mock_utils2();
var { InvalidArgumentError, UndiciError } = require_errors2();
var Dispatcher = require_dispatcher2();
var PendingInterceptorsFormatter = require_pending_interceptors_formatter2();
var { MockCallHistory } = require_mock_call_history();
var MockAgent = class extends Dispatcher {
- constructor(opts) {
+ constructor(opts = {}) {
super(opts);
const mockOptions = buildAndValidateMockOptions(opts);
this[kNetConnect] = true;
this[kIsMockActive] = true;
- this[kMockAgentIsCallHistoryEnabled] = mockOptions?.enableCallHistory ?? false;
+ this[kMockAgentIsCallHistoryEnabled] = mockOptions.enableCallHistory ?? false;
+ this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions.acceptNonStandardSearchParameters ?? false;
+ this[kIgnoreTrailingSlash] = mockOptions.ignoreTrailingSlash ?? false;
if (opts?.agent && typeof opts.agent.dispatch !== "function") {
throw new InvalidArgumentError("Argument opts.agent must implement Agent");
}
@@ -31227,17 +31650,25 @@ var require_mock_agent2 = __commonJS({
}
}
get(origin) {
- let dispatcher = this[kMockAgentGet](origin);
+ const originKey = this[kIgnoreTrailingSlash] ? origin.replace(/\/$/, "") : origin;
+ let dispatcher = this[kMockAgentGet](originKey);
if (!dispatcher) {
- dispatcher = this[kFactory](origin);
- this[kMockAgentSet](origin, dispatcher);
+ dispatcher = this[kFactory](originKey);
+ this[kMockAgentSet](originKey, dispatcher);
}
return dispatcher;
}
dispatch(opts, handler) {
this.get(opts.origin);
this[kMockAgentAddCallHistoryLog](opts);
- return this[kAgent].dispatch(opts, handler);
+ const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters];
+ const dispatchOpts = { ...opts };
+ if (acceptNonStandardSearchParameters && dispatchOpts.path) {
+ const [path, searchParams] = dispatchOpts.path.split("?");
+ const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters);
+ dispatchOpts.path = `${path}?${normalizedSearchParams}`;
+ }
+ return this[kAgent].dispatch(dispatchOpts, handler);
}
async close() {
this.clearCallHistory();
@@ -31299,27 +31730,27 @@ var require_mock_agent2 = __commonJS({
}
}
[kMockAgentSet](origin, dispatcher) {
- this[kClients].set(origin, dispatcher);
+ this[kClients].set(origin, { count: 0, 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 client = this[kClients].get(origin);
- if (client) {
- return client;
+ const result = this[kClients].get(origin);
+ if (result?.dispatcher) {
+ return result.dispatcher;
}
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)) {
+ for (const [keyMatcher, result2] of Array.from(this[kClients])) {
+ if (result2 && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) {
const dispatcher = this[kFactory](origin);
this[kMockAgentSet](origin, dispatcher);
- dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches];
+ dispatcher[kDispatches] = result2.dispatcher[kDispatches];
return dispatcher;
}
}
@@ -31329,7 +31760,7 @@ var require_mock_agent2 = __commonJS({
}
pendingInterceptors() {
const mockAgentClients = this[kClients];
- return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending);
+ return Array.from(mockAgentClients.entries()).flatMap(([origin, result]) => result.dispatcher[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending);
}
assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {
const pending = this.pendingInterceptors();
@@ -31349,6 +31780,752 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim()
}
});
+// node_modules/undici/lib/mock/snapshot-utils.js
+var require_snapshot_utils = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-utils.js"(exports2, module2) {
+ "use strict";
+ var { InvalidArgumentError } = require_errors2();
+ function createHeaderFilters(matchOptions = {}) {
+ const { ignoreHeaders = [], excludeHeaders = [], matchHeaders = [], caseSensitive = false } = matchOptions;
+ return {
+ ignore: new Set(ignoreHeaders.map((header) => caseSensitive ? header : header.toLowerCase())),
+ exclude: new Set(excludeHeaders.map((header) => caseSensitive ? header : header.toLowerCase())),
+ match: new Set(matchHeaders.map((header) => caseSensitive ? header : header.toLowerCase()))
+ };
+ }
+ var crypto;
+ try {
+ crypto = require("node:crypto");
+ } catch {
+ }
+ var hashId = crypto?.hash ? (value) => crypto.hash("sha256", value, "base64url") : (value) => Buffer.from(value).toString("base64url");
+ function isUndiciHeaders(headers) {
+ return Array.isArray(headers) && (headers.length & 1) === 0;
+ }
+ function isUrlExcludedFactory(excludePatterns = []) {
+ if (excludePatterns.length === 0) {
+ return () => false;
+ }
+ return function isUrlExcluded(url) {
+ let urlLowerCased;
+ for (const pattern of excludePatterns) {
+ if (typeof pattern === "string") {
+ if (!urlLowerCased) {
+ urlLowerCased = url.toLowerCase();
+ }
+ if (urlLowerCased.includes(pattern.toLowerCase())) {
+ return true;
+ }
+ } else if (pattern instanceof RegExp) {
+ if (pattern.test(url)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+ }
+ function normalizeHeaders(headers) {
+ const normalizedHeaders = {};
+ if (!headers) return normalizedHeaders;
+ if (isUndiciHeaders(headers)) {
+ for (let i = 0; i < headers.length; i += 2) {
+ const key = headers[i];
+ const value = headers[i + 1];
+ if (key && value !== void 0) {
+ const keyStr = Buffer.isBuffer(key) ? key.toString() : key;
+ const valueStr = Buffer.isBuffer(value) ? value.toString() : value;
+ normalizedHeaders[keyStr.toLowerCase()] = valueStr;
+ }
+ }
+ return normalizedHeaders;
+ }
+ if (headers && typeof headers === "object") {
+ for (const [key, value] of Object.entries(headers)) {
+ if (key && typeof key === "string") {
+ normalizedHeaders[key.toLowerCase()] = Array.isArray(value) ? value.join(", ") : String(value);
+ }
+ }
+ }
+ return normalizedHeaders;
+ }
+ var validSnapshotModes = (
+ /** @type {const} */
+ ["record", "playback", "update"]
+ );
+ function validateSnapshotMode(mode) {
+ if (!validSnapshotModes.includes(mode)) {
+ throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be one of: ${validSnapshotModes.join(", ")}`);
+ }
+ }
+ module2.exports = {
+ createHeaderFilters,
+ hashId,
+ isUndiciHeaders,
+ normalizeHeaders,
+ isUrlExcludedFactory,
+ validateSnapshotMode
+ };
+ }
+});
+
+// node_modules/undici/lib/mock/snapshot-recorder.js
+var require_snapshot_recorder = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-recorder.js"(exports2, module2) {
+ "use strict";
+ var { writeFile, readFile, mkdir } = require("node:fs/promises");
+ var { dirname, resolve } = require("node:path");
+ var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = require("node:timers");
+ var { InvalidArgumentError, UndiciError } = require_errors2();
+ var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
+ function formatRequestKey(opts, headerFilters, matchOptions = {}) {
+ const url = new URL(opts.path, opts.origin);
+ const normalized = opts._normalizedHeaders || normalizeHeaders(opts.headers);
+ if (!opts._normalizedHeaders) {
+ opts._normalizedHeaders = normalized;
+ }
+ return {
+ method: opts.method || "GET",
+ url: matchOptions.matchQuery !== false ? url.toString() : `${url.origin}${url.pathname}`,
+ headers: filterHeadersForMatching(normalized, headerFilters, matchOptions),
+ body: matchOptions.matchBody !== false && opts.body ? String(opts.body) : ""
+ };
+ }
+ function filterHeadersForMatching(headers, headerFilters, matchOptions = {}) {
+ if (!headers || typeof headers !== "object") return {};
+ const {
+ caseSensitive = false
+ } = matchOptions;
+ const filtered = {};
+ const { ignore, exclude, match } = headerFilters;
+ for (const [key, value] of Object.entries(headers)) {
+ const headerKey = caseSensitive ? key : key.toLowerCase();
+ if (exclude.has(headerKey)) continue;
+ if (ignore.has(headerKey)) continue;
+ if (match.size !== 0) {
+ if (!match.has(headerKey)) continue;
+ }
+ filtered[headerKey] = value;
+ }
+ return filtered;
+ }
+ function filterHeadersForStorage(headers, headerFilters, matchOptions = {}) {
+ if (!headers || typeof headers !== "object") return {};
+ const {
+ caseSensitive = false
+ } = matchOptions;
+ const filtered = {};
+ const { exclude: excludeSet } = headerFilters;
+ for (const [key, value] of Object.entries(headers)) {
+ const headerKey = caseSensitive ? key : key.toLowerCase();
+ if (excludeSet.has(headerKey)) continue;
+ filtered[headerKey] = value;
+ }
+ return filtered;
+ }
+ function createRequestHash(formattedRequest) {
+ const parts = [
+ formattedRequest.method,
+ formattedRequest.url
+ ];
+ if (formattedRequest.headers && typeof formattedRequest.headers === "object") {
+ const headerKeys = Object.keys(formattedRequest.headers).sort();
+ for (const key of headerKeys) {
+ const values = Array.isArray(formattedRequest.headers[key]) ? formattedRequest.headers[key] : [formattedRequest.headers[key]];
+ parts.push(key);
+ for (const value of values.sort()) {
+ parts.push(String(value));
+ }
+ }
+ }
+ parts.push(formattedRequest.body);
+ const content = parts.join("|");
+ return hashId(content);
+ }
+ var SnapshotRecorder = class {
+ /** @type {NodeJS.Timeout | null} */
+ #flushTimeout;
+ /** @type {import('./snapshot-utils').IsUrlExcluded} */
+ #isUrlExcluded;
+ /** @type {Map} */
+ #snapshots = /* @__PURE__ */ new Map();
+ /** @type {string|undefined} */
+ #snapshotPath;
+ /** @type {number} */
+ #maxSnapshots = Infinity;
+ /** @type {boolean} */
+ #autoFlush = false;
+ /** @type {import('./snapshot-utils').HeaderFilters} */
+ #headerFilters;
+ /**
+ * Creates a new SnapshotRecorder instance
+ * @param {SnapshotRecorderOptions&SnapshotRecorderMatchOptions} [options={}] - Configuration options for the recorder
+ */
+ constructor(options = {}) {
+ this.#snapshotPath = options.snapshotPath;
+ this.#maxSnapshots = options.maxSnapshots || Infinity;
+ this.#autoFlush = options.autoFlush || false;
+ this.flushInterval = options.flushInterval || 3e4;
+ this._flushTimer = null;
+ this.matchOptions = {
+ matchHeaders: options.matchHeaders || [],
+ // empty means match all headers
+ ignoreHeaders: options.ignoreHeaders || [],
+ excludeHeaders: options.excludeHeaders || [],
+ matchBody: options.matchBody !== false,
+ // default: true
+ matchQuery: options.matchQuery !== false,
+ // default: true
+ caseSensitive: options.caseSensitive || false
+ };
+ this.#headerFilters = createHeaderFilters(this.matchOptions);
+ this.shouldRecord = options.shouldRecord || (() => true);
+ this.shouldPlayback = options.shouldPlayback || (() => true);
+ this.#isUrlExcluded = isUrlExcludedFactory(options.excludeUrls);
+ if (this.#autoFlush && this.#snapshotPath) {
+ this.#startAutoFlush();
+ }
+ }
+ /**
+ * Records a request-response interaction
+ * @param {SnapshotRequestOptions} requestOpts - Request options
+ * @param {SnapshotEntryResponse} response - Response data to record
+ * @return {Promise} - Resolves when the recording is complete
+ */
+ async record(requestOpts, response) {
+ if (!this.shouldRecord(requestOpts)) {
+ return;
+ }
+ const url = new URL(requestOpts.path, requestOpts.origin).toString();
+ if (this.#isUrlExcluded(url)) {
+ return;
+ }
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
+ const normalizedHeaders = normalizeHeaders(response.headers);
+ const responseData = {
+ statusCode: response.statusCode,
+ headers: filterHeadersForStorage(normalizedHeaders, this.#headerFilters, this.matchOptions),
+ body: Buffer.isBuffer(response.body) ? response.body.toString("base64") : Buffer.from(String(response.body || "")).toString("base64"),
+ trailers: response.trailers
+ };
+ if (this.#snapshots.size >= this.#maxSnapshots && !this.#snapshots.has(hash)) {
+ const oldestKey = this.#snapshots.keys().next().value;
+ this.#snapshots.delete(oldestKey);
+ }
+ const existingSnapshot = this.#snapshots.get(hash);
+ if (existingSnapshot && existingSnapshot.responses) {
+ existingSnapshot.responses.push(responseData);
+ existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString();
+ } else {
+ this.#snapshots.set(hash, {
+ request: request2,
+ responses: [responseData],
+ // Always store as array for consistency
+ callCount: 0,
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
+ });
+ }
+ if (this.#autoFlush && this.#snapshotPath) {
+ this.#scheduleFlush();
+ }
+ }
+ /**
+ * Finds a matching snapshot for the given request
+ * Returns the appropriate response based on call count for sequential responses
+ *
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {SnapshotEntry&Record<'response', SnapshotEntryResponse>|undefined} - Matching snapshot response or undefined if not found
+ */
+ findSnapshot(requestOpts) {
+ if (!this.shouldPlayback(requestOpts)) {
+ return void 0;
+ }
+ const url = new URL(requestOpts.path, requestOpts.origin).toString();
+ if (this.#isUrlExcluded(url)) {
+ return void 0;
+ }
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
+ const snapshot = this.#snapshots.get(hash);
+ if (!snapshot) return void 0;
+ const currentCallCount = snapshot.callCount || 0;
+ const responseIndex = Math.min(currentCallCount, snapshot.responses.length - 1);
+ snapshot.callCount = currentCallCount + 1;
+ return {
+ ...snapshot,
+ response: snapshot.responses[responseIndex]
+ };
+ }
+ /**
+ * Loads snapshots from file
+ * @param {string} [filePath] - Optional file path to load snapshots from
+ * @return {Promise} - Resolves when snapshots are loaded
+ */
+ async loadSnapshots(filePath) {
+ const path = filePath || this.#snapshotPath;
+ if (!path) {
+ throw new InvalidArgumentError("Snapshot path is required");
+ }
+ try {
+ const data = await readFile(resolve(path), "utf8");
+ const parsed = JSON.parse(data);
+ if (Array.isArray(parsed)) {
+ this.#snapshots.clear();
+ for (const { hash, snapshot } of parsed) {
+ this.#snapshots.set(hash, snapshot);
+ }
+ } else {
+ this.#snapshots = new Map(Object.entries(parsed));
+ }
+ } catch (error) {
+ if (error.code === "ENOENT") {
+ this.#snapshots.clear();
+ } else {
+ throw new UndiciError(`Failed to load snapshots from ${path}`, { cause: error });
+ }
+ }
+ }
+ /**
+ * Saves snapshots to file
+ *
+ * @param {string} [filePath] - Optional file path to save snapshots
+ * @returns {Promise} - Resolves when snapshots are saved
+ */
+ async saveSnapshots(filePath) {
+ const path = filePath || this.#snapshotPath;
+ if (!path) {
+ throw new InvalidArgumentError("Snapshot path is required");
+ }
+ const resolvedPath = resolve(path);
+ await mkdir(dirname(resolvedPath), { recursive: true });
+ const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({
+ hash,
+ snapshot
+ }));
+ await writeFile(resolvedPath, JSON.stringify(data, null, 2), { flush: true });
+ }
+ /**
+ * Clears all recorded snapshots
+ * @returns {void}
+ */
+ clear() {
+ this.#snapshots.clear();
+ }
+ /**
+ * Gets all recorded snapshots
+ * @return {Array} - Array of all recorded snapshots
+ */
+ getSnapshots() {
+ return Array.from(this.#snapshots.values());
+ }
+ /**
+ * Gets snapshot count
+ * @return {number} - Number of recorded snapshots
+ */
+ size() {
+ return this.#snapshots.size;
+ }
+ /**
+ * Resets call counts for all snapshots (useful for test cleanup)
+ * @returns {void}
+ */
+ resetCallCounts() {
+ for (const snapshot of this.#snapshots.values()) {
+ snapshot.callCount = 0;
+ }
+ }
+ /**
+ * Deletes a specific snapshot by request options
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {boolean} - True if snapshot was deleted, false if not found
+ */
+ deleteSnapshot(requestOpts) {
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
+ return this.#snapshots.delete(hash);
+ }
+ /**
+ * Gets information about a specific snapshot
+ * @param {SnapshotRequestOptions} requestOpts - Request options to match
+ * @returns {SnapshotInfo|null} - Snapshot information or null if not found
+ */
+ getSnapshotInfo(requestOpts) {
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
+ const snapshot = this.#snapshots.get(hash);
+ if (!snapshot) return null;
+ return {
+ hash,
+ request: snapshot.request,
+ responseCount: snapshot.responses ? snapshot.responses.length : snapshot.response ? 1 : 0,
+ // .response for legacy snapshots
+ callCount: snapshot.callCount || 0,
+ timestamp: snapshot.timestamp
+ };
+ }
+ /**
+ * Replaces all snapshots with new data (full replacement)
+ * @param {Array<{hash: string; snapshot: SnapshotEntry}>|Record} snapshotData - New snapshot data to replace existing ones
+ * @returns {void}
+ */
+ replaceSnapshots(snapshotData) {
+ this.#snapshots.clear();
+ if (Array.isArray(snapshotData)) {
+ for (const { hash, snapshot } of snapshotData) {
+ this.#snapshots.set(hash, snapshot);
+ }
+ } else if (snapshotData && typeof snapshotData === "object") {
+ this.#snapshots = new Map(Object.entries(snapshotData));
+ }
+ }
+ /**
+ * Starts the auto-flush timer
+ * @returns {void}
+ */
+ #startAutoFlush() {
+ return this.#scheduleFlush();
+ }
+ /**
+ * Stops the auto-flush timer
+ * @returns {void}
+ */
+ #stopAutoFlush() {
+ if (this.#flushTimeout) {
+ clearTimeout2(this.#flushTimeout);
+ this.saveSnapshots().catch(() => {
+ });
+ this.#flushTimeout = null;
+ }
+ }
+ /**
+ * Schedules a flush (debounced to avoid excessive writes)
+ */
+ #scheduleFlush() {
+ this.#flushTimeout = setTimeout2(() => {
+ this.saveSnapshots().catch(() => {
+ });
+ if (this.#autoFlush) {
+ this.#flushTimeout?.refresh();
+ } else {
+ this.#flushTimeout = null;
+ }
+ }, 1e3);
+ }
+ /**
+ * Cleanup method to stop timers
+ * @returns {void}
+ */
+ destroy() {
+ this.#stopAutoFlush();
+ if (this.#flushTimeout) {
+ clearTimeout2(this.#flushTimeout);
+ this.#flushTimeout = null;
+ }
+ }
+ /**
+ * Async close method that saves all recordings and performs cleanup
+ * @returns {Promise}
+ */
+ async close() {
+ if (this.#snapshotPath && this.#snapshots.size !== 0) {
+ await this.saveSnapshots();
+ }
+ this.destroy();
+ }
+ };
+ module2.exports = { SnapshotRecorder, formatRequestKey, createRequestHash, filterHeadersForMatching, filterHeadersForStorage, createHeaderFilters };
+ }
+});
+
+// node_modules/undici/lib/mock/snapshot-agent.js
+var require_snapshot_agent = __commonJS({
+ "node_modules/undici/lib/mock/snapshot-agent.js"(exports2, module2) {
+ "use strict";
+ var Agent = require_agent2();
+ var MockAgent = require_mock_agent2();
+ var { SnapshotRecorder } = require_snapshot_recorder();
+ var WrapHandler = require_wrap_handler();
+ var { InvalidArgumentError, UndiciError } = require_errors2();
+ var { validateSnapshotMode } = require_snapshot_utils();
+ var kSnapshotRecorder = Symbol("kSnapshotRecorder");
+ var kSnapshotMode = Symbol("kSnapshotMode");
+ var kSnapshotPath = Symbol("kSnapshotPath");
+ var kSnapshotLoaded = Symbol("kSnapshotLoaded");
+ var kRealAgent = Symbol("kRealAgent");
+ var warningEmitted = false;
+ var SnapshotAgent = class extends MockAgent {
+ constructor(opts = {}) {
+ if (!warningEmitted) {
+ process.emitWarning(
+ "SnapshotAgent is experimental and subject to change",
+ "ExperimentalWarning"
+ );
+ warningEmitted = true;
+ }
+ const {
+ mode = "record",
+ snapshotPath = null,
+ ...mockAgentOpts
+ } = opts;
+ super(mockAgentOpts);
+ validateSnapshotMode(mode);
+ if ((mode === "playback" || mode === "update") && !snapshotPath) {
+ throw new InvalidArgumentError(`snapshotPath is required when mode is '${mode}'`);
+ }
+ this[kSnapshotMode] = mode;
+ this[kSnapshotPath] = snapshotPath;
+ this[kSnapshotRecorder] = new SnapshotRecorder({
+ snapshotPath: this[kSnapshotPath],
+ mode: this[kSnapshotMode],
+ maxSnapshots: opts.maxSnapshots,
+ autoFlush: opts.autoFlush,
+ flushInterval: opts.flushInterval,
+ matchHeaders: opts.matchHeaders,
+ ignoreHeaders: opts.ignoreHeaders,
+ excludeHeaders: opts.excludeHeaders,
+ matchBody: opts.matchBody,
+ matchQuery: opts.matchQuery,
+ caseSensitive: opts.caseSensitive,
+ shouldRecord: opts.shouldRecord,
+ shouldPlayback: opts.shouldPlayback,
+ excludeUrls: opts.excludeUrls
+ });
+ this[kSnapshotLoaded] = false;
+ if (this[kSnapshotMode] === "record" || this[kSnapshotMode] === "update") {
+ this[kRealAgent] = new Agent(opts);
+ }
+ if ((this[kSnapshotMode] === "playback" || this[kSnapshotMode] === "update") && this[kSnapshotPath]) {
+ this.loadSnapshots().catch(() => {
+ });
+ }
+ }
+ dispatch(opts, handler) {
+ handler = WrapHandler.wrap(handler);
+ const mode = this[kSnapshotMode];
+ if (mode === "playback" || mode === "update") {
+ if (!this[kSnapshotLoaded]) {
+ return this.#asyncDispatch(opts, handler);
+ }
+ const snapshot = this[kSnapshotRecorder].findSnapshot(opts);
+ if (snapshot) {
+ return this.#replaySnapshot(snapshot, handler);
+ } else if (mode === "update") {
+ return this.#recordAndReplay(opts, handler);
+ } else {
+ const error = new UndiciError(`No snapshot found for ${opts.method || "GET"} ${opts.path}`);
+ if (handler.onError) {
+ handler.onError(error);
+ return;
+ }
+ throw error;
+ }
+ } else if (mode === "record") {
+ return this.#recordAndReplay(opts, handler);
+ }
+ }
+ /**
+ * Async version of dispatch for when we need to load snapshots first
+ */
+ async #asyncDispatch(opts, handler) {
+ await this.loadSnapshots();
+ return this.dispatch(opts, handler);
+ }
+ /**
+ * Records a real request and replays the response
+ */
+ #recordAndReplay(opts, handler) {
+ const responseData = {
+ statusCode: null,
+ headers: {},
+ trailers: {},
+ body: []
+ };
+ const self = this;
+ const recordingHandler = {
+ onRequestStart(controller, context) {
+ return handler.onRequestStart(controller, { ...context, history: this.history });
+ },
+ onRequestUpgrade(controller, statusCode, headers, socket) {
+ return handler.onRequestUpgrade(controller, statusCode, headers, socket);
+ },
+ onResponseStart(controller, statusCode, headers, statusMessage) {
+ responseData.statusCode = statusCode;
+ responseData.headers = headers;
+ return handler.onResponseStart(controller, statusCode, headers, statusMessage);
+ },
+ onResponseData(controller, chunk) {
+ responseData.body.push(chunk);
+ return handler.onResponseData(controller, chunk);
+ },
+ onResponseEnd(controller, trailers) {
+ responseData.trailers = trailers;
+ const responseBody = Buffer.concat(responseData.body);
+ self[kSnapshotRecorder].record(opts, {
+ statusCode: responseData.statusCode,
+ headers: responseData.headers,
+ body: responseBody,
+ trailers: responseData.trailers
+ }).then(() => {
+ handler.onResponseEnd(controller, trailers);
+ }).catch((error) => {
+ handler.onResponseError(controller, error);
+ });
+ }
+ };
+ const agent = this[kRealAgent];
+ return agent.dispatch(opts, recordingHandler);
+ }
+ /**
+ * Replays a recorded response
+ *
+ * @param {Object} snapshot - The recorded snapshot to replay.
+ * @param {Object} handler - The handler to call with the response data.
+ * @returns {void}
+ */
+ #replaySnapshot(snapshot, handler) {
+ try {
+ const { response } = snapshot;
+ const controller = {
+ pause() {
+ },
+ resume() {
+ },
+ abort(reason) {
+ this.aborted = true;
+ this.reason = reason;
+ },
+ aborted: false,
+ paused: false
+ };
+ handler.onRequestStart(controller);
+ handler.onResponseStart(controller, response.statusCode, response.headers);
+ const body = Buffer.from(response.body, "base64");
+ handler.onResponseData(controller, body);
+ handler.onResponseEnd(controller, response.trailers);
+ } catch (error) {
+ handler.onError?.(error);
+ }
+ }
+ /**
+ * Loads snapshots from file
+ *
+ * @param {string} [filePath] - Optional file path to load snapshots from.
+ * @returns {Promise} - Resolves when snapshots are loaded.
+ */
+ async loadSnapshots(filePath) {
+ await this[kSnapshotRecorder].loadSnapshots(filePath || this[kSnapshotPath]);
+ this[kSnapshotLoaded] = true;
+ if (this[kSnapshotMode] === "playback") {
+ this.#setupMockInterceptors();
+ }
+ }
+ /**
+ * Saves snapshots to file
+ *
+ * @param {string} [filePath] - Optional file path to save snapshots to.
+ * @returns {Promise} - Resolves when snapshots are saved.
+ */
+ async saveSnapshots(filePath) {
+ return this[kSnapshotRecorder].saveSnapshots(filePath || this[kSnapshotPath]);
+ }
+ /**
+ * Sets up MockAgent interceptors based on recorded snapshots.
+ *
+ * This method creates MockAgent interceptors for each recorded snapshot,
+ * allowing the SnapshotAgent to fall back to MockAgent's standard intercept
+ * mechanism in playback mode. Each interceptor is configured to persist
+ * (remain active for multiple requests) and responds with the recorded
+ * response data.
+ *
+ * Called automatically when loading snapshots in playback mode.
+ *
+ * @returns {void}
+ */
+ #setupMockInterceptors() {
+ for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {
+ const { request: request2, responses, response } = snapshot;
+ const url = new URL(request2.url);
+ const mockPool = this.get(url.origin);
+ const responseData = responses ? responses[0] : response;
+ if (!responseData) continue;
+ mockPool.intercept({
+ path: url.pathname + url.search,
+ method: request2.method,
+ headers: request2.headers,
+ body: request2.body
+ }).reply(responseData.statusCode, responseData.body, {
+ headers: responseData.headers,
+ trailers: responseData.trailers
+ }).persist();
+ }
+ }
+ /**
+ * Gets the snapshot recorder
+ * @return {SnapshotRecorder} - The snapshot recorder instance
+ */
+ getRecorder() {
+ return this[kSnapshotRecorder];
+ }
+ /**
+ * Gets the current mode
+ * @return {import('./snapshot-utils').SnapshotMode} - The current snapshot mode
+ */
+ getMode() {
+ return this[kSnapshotMode];
+ }
+ /**
+ * Clears all snapshots
+ * @returns {void}
+ */
+ clearSnapshots() {
+ this[kSnapshotRecorder].clear();
+ }
+ /**
+ * Resets call counts for all snapshots (useful for test cleanup)
+ * @returns {void}
+ */
+ resetCallCounts() {
+ this[kSnapshotRecorder].resetCallCounts();
+ }
+ /**
+ * Deletes a specific snapshot by request options
+ * @param {import('./snapshot-recorder').SnapshotRequestOptions} requestOpts - Request options to identify the snapshot
+ * @return {Promise} - Returns true if the snapshot was deleted, false if not found
+ */
+ deleteSnapshot(requestOpts) {
+ return this[kSnapshotRecorder].deleteSnapshot(requestOpts);
+ }
+ /**
+ * Gets information about a specific snapshot
+ * @returns {import('./snapshot-recorder').SnapshotInfo|null} - Snapshot information or null if not found
+ */
+ getSnapshotInfo(requestOpts) {
+ return this[kSnapshotRecorder].getSnapshotInfo(requestOpts);
+ }
+ /**
+ * Replaces all snapshots with new data (full replacement)
+ * @param {Array<{hash: string; snapshot: import('./snapshot-recorder').SnapshotEntryshotEntry}>|Record} snapshotData - New snapshot data to replace existing snapshots
+ * @returns {void}
+ */
+ replaceSnapshots(snapshotData) {
+ this[kSnapshotRecorder].replaceSnapshots(snapshotData);
+ }
+ /**
+ * Closes the agent, saving snapshots and cleaning up resources.
+ *
+ * @returns {Promise}
+ */
+ async close() {
+ await this[kSnapshotRecorder].close();
+ await this[kRealAgent]?.close();
+ await super.close();
+ }
+ };
+ module2.exports = SnapshotAgent;
+ }
+});
+
// node_modules/undici/lib/global.js
var require_global4 = __commonJS({
"node_modules/undici/lib/global.js"(exports2, module2) {
@@ -31373,9 +32550,25 @@ var require_global4 = __commonJS({
function getGlobalDispatcher() {
return globalThis[globalDispatcher];
}
+ var installedExports = (
+ /** @type {const} */
+ [
+ "fetch",
+ "Headers",
+ "Response",
+ "Request",
+ "FormData",
+ "WebSocket",
+ "CloseEvent",
+ "ErrorEvent",
+ "MessageEvent",
+ "EventSource"
+ ]
+ );
module2.exports = {
setGlobalDispatcher,
- getGlobalDispatcher
+ getGlobalDispatcher,
+ installedExports
};
}
});
@@ -31474,7 +32667,8 @@ var require_redirect_handler = __commonJS({
}
this.dispatch = dispatch;
this.location = null;
- this.opts = { ...opts, maxRedirections: 0 };
+ const { maxRedirections: _, ...cleanOpts } = opts;
+ this.opts = cleanOpts;
this.maxRedirections = maxRedirections;
this.handler = handler;
this.history = [];
@@ -31530,10 +32724,15 @@ var require_redirect_handler = __commonJS({
}
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;
+ const redirectUrlString = `${origin}${path}`;
+ for (const historyUrl of this.history) {
+ if (historyUrl.toString() === redirectUrlString) {
+ throw new InvalidArgumentError(`Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);
+ }
+ }
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;
}
onResponseData(controller, chunk) {
@@ -31602,7 +32801,7 @@ var require_redirect = __commonJS({
if (maxRedirections == null || maxRedirections === 0) {
return dispatch(opts, handler);
}
- const dispatchOpts = { ...rest, maxRedirections: 0 };
+ const dispatchOpts = { ...rest };
const redirectHandler = new RedirectHandler(dispatch, maxRedirections, dispatchOpts, handler);
return dispatch(dispatchOpts, redirectHandler);
};
@@ -31763,7 +32962,7 @@ var require_dump = __commonJS({
if (this.#dumped) {
return;
}
- err = this.#controller.reason ?? err;
+ err = this.#controller?.reason ?? err;
super.onResponseError(controller, err);
}
onResponseData(controller, chunk) {
@@ -32144,21 +33343,26 @@ var require_cache2 = __commonJS({
"node_modules/undici/lib/util/cache.js"(exports2, module2) {
"use strict";
var {
- safeHTTPMethods
+ safeHTTPMethods,
+ pathHasQueryOrFragment
} = require_util8();
+ var { serializePathWithQuery } = require_util8();
function makeCacheKey(opts) {
if (!opts.origin) {
throw new Error("opts.origin is undefined");
}
- const headers = normaliseHeaders(opts);
+ let fullPath = opts.path || "/";
+ if (opts.query && !pathHasQueryOrFragment(opts.path)) {
+ fullPath = serializePathWithQuery(fullPath, opts.query);
+ }
return {
origin: opts.origin.toString(),
method: opts.method,
- path: opts.path,
- headers
+ path: fullPath,
+ headers: opts.headers
};
}
- function normaliseHeaders(opts) {
+ function normalizeHeaders(opts) {
let headers;
if (opts.headers == null) {
headers = {};
@@ -32375,7 +33579,7 @@ var require_cache2 = __commonJS({
}
module2.exports = {
makeCacheKey,
- normaliseHeaders,
+ normalizeHeaders,
assertCacheKey,
assertCacheValue,
parseCacheControlHeader,
@@ -32391,175 +33595,491 @@ var require_cache2 = __commonJS({
var require_date = __commonJS({
"node_modules/undici/lib/util/date.js"(exports2, module2) {
"use strict";
- var IMF_DAYS = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
- var IMF_SPACES = [4, 7, 11, 16, 25];
- var IMF_MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
- var IMF_COLONS = [19, 22];
- var ASCTIME_SPACES = [3, 7, 10, 19];
- var RFC850_DAYS = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
- function parseHttpDate(date, now) {
- date = date.toLowerCase();
+ function parseHttpDate(date) {
switch (date[3]) {
case ",":
return parseImfDate(date);
case " ":
return parseAscTimeDate(date);
default:
- return parseRfc850Date(date, now);
+ return parseRfc850Date(date);
}
}
function parseImfDate(date) {
- if (date.length !== 29) {
+ if (date.length !== 29 || date[4] !== " " || date[7] !== " " || date[11] !== " " || date[16] !== " " || date[19] !== ":" || date[22] !== ":" || date[25] !== " " || date[26] !== "G" || date[27] !== "M" || date[28] !== "T") {
return void 0;
}
- if (!date.endsWith("gmt")) {
+ let weekday = -1;
+ if (date[0] === "S" && date[1] === "u" && date[2] === "n") {
+ weekday = 0;
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n") {
+ weekday = 1;
+ } else if (date[0] === "T" && date[1] === "u" && date[2] === "e") {
+ weekday = 2;
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d") {
+ weekday = 3;
+ } else if (date[0] === "T" && date[1] === "h" && date[2] === "u") {
+ weekday = 4;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i") {
+ weekday = 5;
+ } else if (date[0] === "S" && date[1] === "a" && date[2] === "t") {
+ weekday = 6;
+ } else {
return void 0;
}
- for (const spaceInx of IMF_SPACES) {
- if (date[spaceInx] !== " ") {
+ let day = 0;
+ if (date[5] === "0") {
+ const code = date.charCodeAt(6);
+ if (code < 49 || code > 57) {
return void 0;
}
- }
- for (const colonIdx of IMF_COLONS) {
- if (date[colonIdx] !== ":") {
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(5);
+ if (code1 < 49 || code1 > 51) {
return void 0;
}
- }
- const dayName = date.substring(0, 3);
- if (!IMF_DAYS.includes(dayName)) {
- return void 0;
- }
- const dayString = date.substring(5, 7);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== "0") {
+ const code2 = date.charCodeAt(6);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let monthIdx = -1;
+ if (date[8] === "J" && date[9] === "a" && date[10] === "n") {
+ monthIdx = 0;
+ } else if (date[8] === "F" && date[9] === "e" && date[10] === "b") {
+ monthIdx = 1;
+ } else if (date[8] === "M" && date[9] === "a") {
+ if (date[10] === "r") {
+ monthIdx = 2;
+ } else if (date[10] === "y") {
+ monthIdx = 4;
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "J") {
+ if (date[9] === "a" && date[10] === "n") {
+ monthIdx = 0;
+ } else if (date[9] === "u") {
+ if (date[10] === "n") {
+ monthIdx = 5;
+ } else if (date[10] === "l") {
+ monthIdx = 6;
+ } else {
+ return void 0;
+ }
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "A") {
+ if (date[9] === "p" && date[10] === "r") {
+ monthIdx = 3;
+ } else if (date[9] === "u" && date[10] === "g") {
+ monthIdx = 7;
+ } else {
+ return void 0;
+ }
+ } else if (date[8] === "S" && date[9] === "e" && date[10] === "p") {
+ monthIdx = 8;
+ } else if (date[8] === "O" && date[9] === "c" && date[10] === "t") {
+ monthIdx = 9;
+ } else if (date[8] === "N" && date[9] === "o" && date[10] === "v") {
+ monthIdx = 10;
+ } else if (date[8] === "D" && date[9] === "e" && date[10] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const month = date.substring(8, 11);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ const yearDigit1 = date.charCodeAt(12);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- const year = Number.parseInt(date.substring(12, 16));
- if (isNaN(year)) {
+ const yearDigit2 = date.charCodeAt(13);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const hourString = date.substring(17, 19);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
+ const yearDigit3 = date.charCodeAt(14);
+ if (yearDigit3 < 48 || yearDigit3 > 57) {
return void 0;
}
- const minuteString = date.substring(20, 22);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
+ const yearDigit4 = date.charCodeAt(15);
+ if (yearDigit4 < 48 || yearDigit4 > 57) {
return void 0;
}
- const secondString = date.substring(23, 25);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48);
+ let hour = 0;
+ if (date[17] === "0") {
+ const code = date.charCodeAt(18);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
+ } else {
+ const code1 = date.charCodeAt(17);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(18);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
- }
- function parseAscTimeDate(date) {
- if (date.length !== 24) {
- return void 0;
+ let minute = 0;
+ if (date[20] === "0") {
+ const code = date.charCodeAt(21);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(20);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(21);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
}
- for (const spaceIdx of ASCTIME_SPACES) {
- if (date[spaceIdx] !== " ") {
+ let second = 0;
+ if (date[23] === "0") {
+ const code = date.charCodeAt(24);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(23);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(24);
+ if (code2 < 48 || code2 > 57) {
return void 0;
}
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- const dayName = date.substring(0, 3);
- if (!IMF_DAYS.includes(dayName)) {
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
+ }
+ function parseAscTimeDate(date) {
+ if (date.length !== 24 || date[7] !== " " || date[10] !== " " || date[19] !== " ") {
return void 0;
}
- const month = date.substring(4, 7);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ let weekday = -1;
+ if (date[0] === "S" && date[1] === "u" && date[2] === "n") {
+ weekday = 0;
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n") {
+ weekday = 1;
+ } else if (date[0] === "T" && date[1] === "u" && date[2] === "e") {
+ weekday = 2;
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d") {
+ weekday = 3;
+ } else if (date[0] === "T" && date[1] === "h" && date[2] === "u") {
+ weekday = 4;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i") {
+ weekday = 5;
+ } else if (date[0] === "S" && date[1] === "a" && date[2] === "t") {
+ weekday = 6;
+ } else {
return void 0;
}
- const dayString = date.substring(8, 10);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== " ") {
+ let monthIdx = -1;
+ if (date[4] === "J" && date[5] === "a" && date[6] === "n") {
+ monthIdx = 0;
+ } else if (date[4] === "F" && date[5] === "e" && date[6] === "b") {
+ monthIdx = 1;
+ } else if (date[4] === "M" && date[5] === "a") {
+ if (date[6] === "r") {
+ monthIdx = 2;
+ } else if (date[6] === "y") {
+ monthIdx = 4;
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "J") {
+ if (date[5] === "a" && date[6] === "n") {
+ monthIdx = 0;
+ } else if (date[5] === "u") {
+ if (date[6] === "n") {
+ monthIdx = 5;
+ } else if (date[6] === "l") {
+ monthIdx = 6;
+ } else {
+ return void 0;
+ }
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "A") {
+ if (date[5] === "p" && date[6] === "r") {
+ monthIdx = 3;
+ } else if (date[5] === "u" && date[6] === "g") {
+ monthIdx = 7;
+ } else {
+ return void 0;
+ }
+ } else if (date[4] === "S" && date[5] === "e" && date[6] === "p") {
+ monthIdx = 8;
+ } else if (date[4] === "O" && date[5] === "c" && date[6] === "t") {
+ monthIdx = 9;
+ } else if (date[4] === "N" && date[5] === "o" && date[6] === "v") {
+ monthIdx = 10;
+ } else if (date[4] === "D" && date[5] === "e" && date[6] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const hourString = date.substring(11, 13);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
- return void 0;
+ let day = 0;
+ if (date[8] === " ") {
+ const code = date.charCodeAt(9);
+ if (code < 49 || code > 57) {
+ return void 0;
+ }
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(8);
+ if (code1 < 49 || code1 > 51) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(9);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
}
- const minuteString = date.substring(14, 16);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
- return void 0;
+ let hour = 0;
+ if (date[11] === "0") {
+ const code = date.charCodeAt(12);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
+ } else {
+ const code1 = date.charCodeAt(11);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(12);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- const secondString = date.substring(17, 19);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ let minute = 0;
+ if (date[14] === "0") {
+ const code = date.charCodeAt(15);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(14);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(15);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let second = 0;
+ if (date[17] === "0") {
+ const code = date.charCodeAt(18);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(17);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(18);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- const year = Number.parseInt(date.substring(20, 24));
- if (isNaN(year)) {
+ const yearDigit1 = date.charCodeAt(20);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
- }
- function parseRfc850Date(date, now = /* @__PURE__ */ new Date()) {
- if (!date.endsWith("gmt")) {
+ const yearDigit2 = date.charCodeAt(21);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const commaIndex = date.indexOf(",");
- if (commaIndex === -1) {
+ const yearDigit3 = date.charCodeAt(22);
+ if (yearDigit3 < 48 || yearDigit3 > 57) {
return void 0;
}
- if (date.length - commaIndex - 1 !== 23) {
+ const yearDigit4 = date.charCodeAt(23);
+ if (yearDigit4 < 48 || yearDigit4 > 57) {
return void 0;
}
- const dayName = date.substring(0, commaIndex);
- if (!RFC850_DAYS.includes(dayName)) {
+ const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48);
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
+ }
+ function parseRfc850Date(date) {
+ let commaIndex = -1;
+ let weekday = -1;
+ if (date[0] === "S") {
+ if (date[1] === "u" && date[2] === "n" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 0;
+ commaIndex = 6;
+ } else if (date[1] === "a" && date[2] === "t" && date[3] === "u" && date[4] === "r" && date[5] === "d" && date[6] === "a" && date[7] === "y") {
+ weekday = 6;
+ commaIndex = 8;
+ }
+ } else if (date[0] === "M" && date[1] === "o" && date[2] === "n" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 1;
+ commaIndex = 6;
+ } else if (date[0] === "T") {
+ if (date[1] === "u" && date[2] === "e" && date[3] === "s" && date[4] === "d" && date[5] === "a" && date[6] === "y") {
+ weekday = 2;
+ commaIndex = 7;
+ } else if (date[1] === "h" && date[2] === "u" && date[3] === "r" && date[4] === "s" && date[5] === "d" && date[6] === "a" && date[7] === "y") {
+ weekday = 4;
+ commaIndex = 8;
+ }
+ } else if (date[0] === "W" && date[1] === "e" && date[2] === "d" && date[3] === "n" && date[4] === "e" && date[5] === "s" && date[6] === "d" && date[7] === "a" && date[8] === "y") {
+ weekday = 3;
+ commaIndex = 9;
+ } else if (date[0] === "F" && date[1] === "r" && date[2] === "i" && date[3] === "d" && date[4] === "a" && date[5] === "y") {
+ weekday = 5;
+ commaIndex = 6;
+ } else {
return void 0;
}
- if (date[commaIndex + 1] !== " " || date[commaIndex + 4] !== "-" || date[commaIndex + 8] !== "-" || date[commaIndex + 11] !== " " || date[commaIndex + 14] !== ":" || date[commaIndex + 17] !== ":" || date[commaIndex + 20] !== " ") {
+ if (date[commaIndex] !== "," || date.length - commaIndex - 1 !== 23 || date[commaIndex + 1] !== " " || date[commaIndex + 4] !== "-" || date[commaIndex + 8] !== "-" || date[commaIndex + 11] !== " " || date[commaIndex + 14] !== ":" || date[commaIndex + 17] !== ":" || date[commaIndex + 20] !== " " || date[commaIndex + 21] !== "G" || date[commaIndex + 22] !== "M" || date[commaIndex + 23] !== "T") {
return void 0;
}
- const dayString = date.substring(commaIndex + 2, commaIndex + 4);
- const day = Number.parseInt(dayString);
- if (isNaN(day) || day < 10 && dayString[0] !== "0") {
+ let day = 0;
+ if (date[commaIndex + 2] === "0") {
+ const code = date.charCodeAt(commaIndex + 3);
+ if (code < 49 || code > 57) {
+ return void 0;
+ }
+ day = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 2);
+ if (code1 < 49 || code1 > 51) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 3);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ day = (code1 - 48) * 10 + (code2 - 48);
+ }
+ let monthIdx = -1;
+ if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "n") {
+ monthIdx = 0;
+ } else if (date[commaIndex + 5] === "F" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "b") {
+ monthIdx = 1;
+ } else if (date[commaIndex + 5] === "M" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "r") {
+ monthIdx = 2;
+ } else if (date[commaIndex + 5] === "A" && date[commaIndex + 6] === "p" && date[commaIndex + 7] === "r") {
+ monthIdx = 3;
+ } else if (date[commaIndex + 5] === "M" && date[commaIndex + 6] === "a" && date[commaIndex + 7] === "y") {
+ monthIdx = 4;
+ } else if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "n") {
+ monthIdx = 5;
+ } else if (date[commaIndex + 5] === "J" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "l") {
+ monthIdx = 6;
+ } else if (date[commaIndex + 5] === "A" && date[commaIndex + 6] === "u" && date[commaIndex + 7] === "g") {
+ monthIdx = 7;
+ } else if (date[commaIndex + 5] === "S" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "p") {
+ monthIdx = 8;
+ } else if (date[commaIndex + 5] === "O" && date[commaIndex + 6] === "c" && date[commaIndex + 7] === "t") {
+ monthIdx = 9;
+ } else if (date[commaIndex + 5] === "N" && date[commaIndex + 6] === "o" && date[commaIndex + 7] === "v") {
+ monthIdx = 10;
+ } else if (date[commaIndex + 5] === "D" && date[commaIndex + 6] === "e" && date[commaIndex + 7] === "c") {
+ monthIdx = 11;
+ } else {
return void 0;
}
- const month = date.substring(commaIndex + 5, commaIndex + 8);
- const monthIdx = IMF_MONTHS.indexOf(month);
- if (monthIdx === -1) {
+ const yearDigit1 = date.charCodeAt(commaIndex + 9);
+ if (yearDigit1 < 48 || yearDigit1 > 57) {
return void 0;
}
- let year = Number.parseInt(date.substring(commaIndex + 9, commaIndex + 11));
- if (isNaN(year)) {
+ const yearDigit2 = date.charCodeAt(commaIndex + 10);
+ if (yearDigit2 < 48 || yearDigit2 > 57) {
return void 0;
}
- const currentYear = now.getUTCFullYear();
- const currentDecade = currentYear % 100;
- const currentCentury = Math.floor(currentYear / 100);
- if (year > currentDecade && year - currentDecade >= 50) {
- year += (currentCentury - 1) * 100;
+ let year = (yearDigit1 - 48) * 10 + (yearDigit2 - 48);
+ year += year < 70 ? 2e3 : 1900;
+ let hour = 0;
+ if (date[commaIndex + 12] === "0") {
+ const code = date.charCodeAt(commaIndex + 13);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ hour = code - 48;
} else {
- year += currentCentury * 100;
- }
- const hourString = date.substring(commaIndex + 12, commaIndex + 14);
- const hour = Number.parseInt(hourString);
- if (isNaN(hour) || hour < 10 && hourString[0] !== "0") {
- return void 0;
+ const code1 = date.charCodeAt(commaIndex + 12);
+ if (code1 < 48 || code1 > 50) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 13);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ if (code1 === 50 && code2 > 51) {
+ return void 0;
+ }
+ hour = (code1 - 48) * 10 + (code2 - 48);
}
- const minuteString = date.substring(commaIndex + 15, commaIndex + 17);
- const minute = Number.parseInt(minuteString);
- if (isNaN(minute) || minute < 10 && minuteString[0] !== "0") {
- return void 0;
+ let minute = 0;
+ if (date[commaIndex + 15] === "0") {
+ const code = date.charCodeAt(commaIndex + 16);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ minute = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 15);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 16);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ minute = (code1 - 48) * 10 + (code2 - 48);
}
- const secondString = date.substring(commaIndex + 18, commaIndex + 20);
- const second = Number.parseInt(secondString);
- if (isNaN(second) || second < 10 && secondString[0] !== "0") {
- return void 0;
+ let second = 0;
+ if (date[commaIndex + 18] === "0") {
+ const code = date.charCodeAt(commaIndex + 19);
+ if (code < 48 || code > 57) {
+ return void 0;
+ }
+ second = code - 48;
+ } else {
+ const code1 = date.charCodeAt(commaIndex + 18);
+ if (code1 < 48 || code1 > 53) {
+ return void 0;
+ }
+ const code2 = date.charCodeAt(commaIndex + 19);
+ if (code2 < 48 || code2 > 57) {
+ return void 0;
+ }
+ second = (code1 - 48) * 10 + (code2 - 48);
}
- return new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second));
+ return result.getUTCDay() === weekday ? result : void 0;
}
module2.exports = {
parseHttpDate
@@ -32594,6 +34114,10 @@ var require_cache_handler = __commonJS({
414,
501
];
+ var NOT_UNDERSTOOD_STATUS_CODES = [
+ 206,
+ 304
+ ];
var MAX_RESPONSE_AGE = 2147483647e3;
var CacheHandler = class {
/**
@@ -32739,7 +34263,11 @@ var require_cache_handler = __commonJS({
}
};
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives) {
- if (statusCode !== 200 && statusCode !== 307) {
+ if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {
+ return false;
+ }
+ if (!HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode) && !resHeaders["expires"] && !cacheControlDirectives.public && cacheControlDirectives["max-age"] === void 0 && // RFC 9111: a private response directive, if the cache is not shared
+ !(cacheControlDirectives.private && cacheType === "private") && !(cacheControlDirectives["s-maxage"] !== void 0 && cacheType === "shared")) {
return false;
}
if (cacheControlDirectives["no-store"]) {
@@ -32873,18 +34401,23 @@ var require_memory_cache_store = __commonJS({
"node_modules/undici/lib/cache/memory-cache-store.js"(exports2, module2) {
"use strict";
var { Writable } = require("node:stream");
+ var { EventEmitter } = require("node:events");
var { assertCacheKey, assertCacheValue } = require_cache2();
- var MemoryCacheStore = class {
- #maxCount = Infinity;
- #maxSize = Infinity;
- #maxEntrySize = Infinity;
+ var MemoryCacheStore = class extends EventEmitter {
+ #maxCount = 1024;
+ #maxSize = 104857600;
+ // 100MB
+ #maxEntrySize = 5242880;
+ // 5MB
#size = 0;
#count = 0;
#entries = /* @__PURE__ */ new Map();
+ #hasEmittedMaxSizeEvent = false;
/**
* @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts]
*/
constructor(opts) {
+ super();
if (opts) {
if (typeof opts !== "object") {
throw new TypeError("MemoryCacheStore options must be an object");
@@ -32909,6 +34442,20 @@ var require_memory_cache_store = __commonJS({
}
}
}
+ /**
+ * Get the current size of the cache in bytes
+ * @returns {number} The current size of the cache in bytes
+ */
+ get size() {
+ return this.#size;
+ }
+ /**
+ * Check if the cache is full (either max size or max count reached)
+ * @returns {boolean} True if the cache is full, false otherwise
+ */
+ isFull() {
+ return this.#size >= this.#maxSize || this.#count >= this.#maxCount;
+ }
/**
* @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req
* @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined}
@@ -32917,12 +34464,8 @@ var require_memory_cache_store = __commonJS({
assertCacheKey(key);
const topLevelKey = `${key.origin}:${key.path}`;
const now = Date.now();
- const entry = this.#entries.get(topLevelKey)?.find((entry2) => entry2.deleteAt > now && entry2.method === key.method && (entry2.vary == null || Object.keys(entry2.vary).every((headerName) => {
- if (entry2.vary[headerName] === null) {
- return key.headers[headerName] === void 0;
- }
- return entry2.vary[headerName] === key.headers[headerName];
- })));
+ const entries = this.#entries.get(topLevelKey);
+ const entry = entries ? findEntry(key, entries, now) : null;
return entry == null ? void 0 : {
statusMessage: entry.statusMessage,
statusCode: entry.statusCode,
@@ -32966,10 +34509,26 @@ var require_memory_cache_store = __commonJS({
entries = [];
store.#entries.set(topLevelKey, entries);
}
- entries.push(entry);
+ const previousEntry = findEntry(key, entries, Date.now());
+ if (previousEntry) {
+ const index = entries.indexOf(previousEntry);
+ entries.splice(index, 1, entry);
+ store.#size -= previousEntry.size;
+ } else {
+ entries.push(entry);
+ store.#count += 1;
+ }
store.#size += entry.size;
- store.#count += 1;
if (store.#size > store.#maxSize || store.#count > store.#maxCount) {
+ if (!store.#hasEmittedMaxSizeEvent) {
+ store.emit("maxSizeExceeded", {
+ size: store.#size,
+ maxSize: store.#maxSize,
+ count: store.#count,
+ maxCount: store.#maxCount
+ });
+ store.#hasEmittedMaxSizeEvent = true;
+ }
for (const [key2, entries2] of store.#entries) {
for (const entry2 of entries2.splice(0, entries2.length / 2)) {
store.#size -= entry2.size;
@@ -32979,6 +34538,9 @@ var require_memory_cache_store = __commonJS({
store.#entries.delete(key2);
}
}
+ if (store.#size < store.#maxSize && store.#count < store.#maxCount) {
+ store.#hasEmittedMaxSizeEvent = false;
+ }
}
callback(null);
}
@@ -32999,6 +34561,14 @@ var require_memory_cache_store = __commonJS({
this.#entries.delete(topLevelKey);
}
};
+ function findEntry(key, entries, now) {
+ return entries.find((entry) => entry.deleteAt > now && entry.method === key.method && (entry.vary == null || Object.keys(entry.vary).every((headerName) => {
+ if (entry.vary[headerName] === null) {
+ return key.headers[headerName] === void 0;
+ }
+ return entry.vary[headerName] === key.headers[headerName];
+ })));
+ }
module2.exports = MemoryCacheStore;
}
});
@@ -33100,12 +34670,15 @@ var require_cache3 = __commonJS({
var CacheHandler = require_cache_handler();
var MemoryCacheStore = require_memory_cache_store();
var CacheRevalidationHandler = require_cache_revalidation_handler();
- var { assertCacheStore, assertCacheMethods, makeCacheKey, normaliseHeaders, parseCacheControlHeader } = require_cache2();
+ var { assertCacheStore, assertCacheMethods, makeCacheKey, normalizeHeaders, parseCacheControlHeader } = require_cache2();
var { AbortError } = require_errors2();
function needsRevalidation(result, cacheControlDirectives) {
if (cacheControlDirectives?.["no-cache"]) {
return true;
}
+ if (result.cacheControlDirectives?.["no-cache"] && !Array.isArray(result.cacheControlDirectives["no-cache"])) {
+ return true;
+ }
const now = Date.now();
if (now > result.staleAt) {
if (cacheControlDirectives?.["max-stale"]) {
@@ -33121,6 +34694,15 @@ var require_cache3 = __commonJS({
}
return false;
}
+ function withinStaleWhileRevalidateWindow(result) {
+ const staleWhileRevalidate = result.cacheControlDirectives?.["stale-while-revalidate"];
+ if (!staleWhileRevalidate) {
+ return false;
+ }
+ const now = Date.now();
+ const staleWhileRevalidateExpiry = result.staleAt + staleWhileRevalidate * 1e3;
+ return now <= staleWhileRevalidateExpiry;
+ }
function handleUncachedResponse(dispatch, globalOpts, cacheKey, handler, opts, reqCacheControl) {
if (reqCacheControl?.["only-if-cached"]) {
let aborted = false;
@@ -33222,13 +34804,53 @@ var require_cache3 = __commonJS({
if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) {
return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler));
}
+ if (withinStaleWhileRevalidateWindow(result)) {
+ sendCachedValue(handler, opts, result, age, null, true);
+ queueMicrotask(() => {
+ let headers2 = {
+ ...opts.headers,
+ "if-modified-since": new Date(result.cachedAt).toUTCString()
+ };
+ if (result.etag) {
+ headers2["if-none-match"] = result.etag;
+ }
+ if (result.vary) {
+ headers2 = {
+ ...headers2,
+ ...result.vary
+ };
+ }
+ dispatch(
+ {
+ ...opts,
+ headers: headers2
+ },
+ new CacheHandler(globalOpts, cacheKey, {
+ // Silent handler that just updates the cache
+ onRequestStart() {
+ },
+ onRequestUpgrade() {
+ },
+ onResponseStart() {
+ },
+ onResponseData() {
+ },
+ onResponseEnd() {
+ },
+ onResponseError() {
+ }
+ })
+ );
+ });
+ return true;
+ }
let withinStaleIfErrorThreshold = false;
const staleIfErrorExpiry = result.cacheControlDirectives["stale-if-error"] ?? reqCacheControl?.["stale-if-error"];
if (staleIfErrorExpiry) {
withinStaleIfErrorThreshold = now < result.staleAt + staleIfErrorExpiry * 1e3;
}
let headers = {
- ...normaliseHeaders(opts),
+ ...opts.headers,
"if-modified-since": new Date(result.cachedAt).toUTCString()
};
if (result.etag) {
@@ -33278,10 +34900,10 @@ var require_cache3 = __commonJS({
assertCacheStore(store, "opts.store");
assertCacheMethods(methods, "opts.methods");
if (typeof cacheByDefault !== "undefined" && typeof cacheByDefault !== "number") {
- throw new TypeError(`exepcted opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`);
+ throw new TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`);
}
if (typeof type !== "undefined" && type !== "shared" && type !== "private") {
- throw new TypeError(`exepcted opts.type to be shared, private, or undefined, got ${typeof type}`);
+ throw new TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof type}`);
}
const globalOpts = {
store,
@@ -33295,6 +34917,10 @@ var require_cache3 = __commonJS({
if (!opts2.origin || safeMethodsToNotCache.includes(opts2.method)) {
return dispatch(opts2, handler);
}
+ opts2 = {
+ ...opts2,
+ headers: normalizeHeaders(opts2)
+ };
const reqCacheControl = opts2.headers?.["cache-control"] ? parseCacheControlHeader(opts2.headers["cache-control"]) : void 0;
if (reqCacheControl?.["no-store"]) {
return dispatch(opts2, handler);
@@ -33331,11 +34957,222 @@ var require_cache3 = __commonJS({
}
});
+// node_modules/undici/lib/interceptor/decompress.js
+var require_decompress = __commonJS({
+ "node_modules/undici/lib/interceptor/decompress.js"(exports2, module2) {
+ "use strict";
+ var { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require("node:zlib");
+ var { pipeline } = require("node:stream");
+ var DecoratorHandler = require_decorator_handler();
+ var supportedEncodings = {
+ gzip: createGunzip,
+ "x-gzip": createGunzip,
+ br: createBrotliDecompress,
+ deflate: createInflate,
+ compress: createInflate,
+ "x-compress": createInflate,
+ ...createZstdDecompress ? { zstd: createZstdDecompress } : {}
+ };
+ var defaultSkipStatusCodes = (
+ /** @type {const} */
+ [204, 304]
+ );
+ var warningEmitted = (
+ /** @type {boolean} */
+ false
+ );
+ var DecompressHandler = class extends DecoratorHandler {
+ /** @type {Transform[]} */
+ #decompressors = [];
+ /** @type {NodeJS.WritableStream&NodeJS.ReadableStream|null} */
+ #pipelineStream;
+ /** @type {Readonly} */
+ #skipStatusCodes;
+ /** @type {boolean} */
+ #skipErrorResponses;
+ constructor(handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) {
+ super(handler);
+ this.#skipStatusCodes = skipStatusCodes;
+ this.#skipErrorResponses = skipErrorResponses;
+ }
+ /**
+ * Determines if decompression should be skipped based on encoding and status code
+ * @param {string} contentEncoding - Content-Encoding header value
+ * @param {number} statusCode - HTTP status code of the response
+ * @returns {boolean} - True if decompression should be skipped
+ */
+ #shouldSkipDecompression(contentEncoding, statusCode) {
+ if (!contentEncoding || statusCode < 200) return true;
+ if (this.#skipStatusCodes.includes(statusCode)) return true;
+ if (this.#skipErrorResponses && statusCode >= 400) return true;
+ return false;
+ }
+ /**
+ * Creates a chain of decompressors for multiple content encodings
+ *
+ * @param {string} encodings - Comma-separated list of content encodings
+ * @returns {Array} - Array of decompressor streams
+ */
+ #createDecompressionChain(encodings) {
+ const parts = encodings.split(",");
+ const decompressors = [];
+ for (let i = parts.length - 1; i >= 0; i--) {
+ const encoding = parts[i].trim();
+ if (!encoding) continue;
+ if (!supportedEncodings[encoding]) {
+ decompressors.length = 0;
+ return decompressors;
+ }
+ decompressors.push(supportedEncodings[encoding]());
+ }
+ return decompressors;
+ }
+ /**
+ * Sets up event handlers for a decompressor stream using readable events
+ * @param {DecompressorStream} decompressor - The decompressor stream
+ * @param {Controller} controller - The controller to coordinate with
+ * @returns {void}
+ */
+ #setupDecompressorEvents(decompressor, controller) {
+ decompressor.on("readable", () => {
+ let chunk;
+ while ((chunk = decompressor.read()) !== null) {
+ const result = super.onResponseData(controller, chunk);
+ if (result === false) {
+ break;
+ }
+ }
+ });
+ decompressor.on("error", (error) => {
+ super.onResponseError(controller, error);
+ });
+ }
+ /**
+ * Sets up event handling for a single decompressor
+ * @param {Controller} controller - The controller to handle events
+ * @returns {void}
+ */
+ #setupSingleDecompressor(controller) {
+ const decompressor = this.#decompressors[0];
+ this.#setupDecompressorEvents(decompressor, controller);
+ decompressor.on("end", () => {
+ super.onResponseEnd(controller, {});
+ });
+ }
+ /**
+ * Sets up event handling for multiple chained decompressors using pipeline
+ * @param {Controller} controller - The controller to handle events
+ * @returns {void}
+ */
+ #setupMultipleDecompressors(controller) {
+ const lastDecompressor = this.#decompressors[this.#decompressors.length - 1];
+ this.#setupDecompressorEvents(lastDecompressor, controller);
+ this.#pipelineStream = pipeline(this.#decompressors, (err) => {
+ if (err) {
+ super.onResponseError(controller, err);
+ return;
+ }
+ super.onResponseEnd(controller, {});
+ });
+ }
+ /**
+ * Cleans up decompressor references to prevent memory leaks
+ * @returns {void}
+ */
+ #cleanupDecompressors() {
+ this.#decompressors.length = 0;
+ this.#pipelineStream = null;
+ }
+ /**
+ * @param {Controller} controller
+ * @param {number} statusCode
+ * @param {Record} headers
+ * @param {string} statusMessage
+ * @returns {void}
+ */
+ onResponseStart(controller, statusCode, headers, statusMessage) {
+ const contentEncoding = headers["content-encoding"];
+ if (this.#shouldSkipDecompression(contentEncoding, statusCode)) {
+ return super.onResponseStart(controller, statusCode, headers, statusMessage);
+ }
+ const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase());
+ if (decompressors.length === 0) {
+ this.#cleanupDecompressors();
+ return super.onResponseStart(controller, statusCode, headers, statusMessage);
+ }
+ this.#decompressors = decompressors;
+ const { "content-encoding": _, "content-length": __, ...newHeaders } = headers;
+ if (this.#decompressors.length === 1) {
+ this.#setupSingleDecompressor(controller);
+ } else {
+ this.#setupMultipleDecompressors(controller);
+ }
+ super.onResponseStart(controller, statusCode, newHeaders, statusMessage);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Buffer} chunk
+ * @returns {void}
+ */
+ onResponseData(controller, chunk) {
+ if (this.#decompressors.length > 0) {
+ this.#decompressors[0].write(chunk);
+ return;
+ }
+ super.onResponseData(controller, chunk);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Record | undefined} trailers
+ * @returns {void}
+ */
+ onResponseEnd(controller, trailers) {
+ if (this.#decompressors.length > 0) {
+ this.#decompressors[0].end();
+ this.#cleanupDecompressors();
+ return;
+ }
+ super.onResponseEnd(controller, trailers);
+ }
+ /**
+ * @param {Controller} controller
+ * @param {Error} err
+ * @returns {void}
+ */
+ onResponseError(controller, err) {
+ if (this.#decompressors.length > 0) {
+ for (const decompressor of this.#decompressors) {
+ decompressor.destroy(err);
+ }
+ this.#cleanupDecompressors();
+ }
+ super.onResponseError(controller, err);
+ }
+ };
+ function createDecompressInterceptor(options = {}) {
+ if (!warningEmitted) {
+ process.emitWarning(
+ "DecompressInterceptor is experimental and subject to change",
+ "ExperimentalWarning"
+ );
+ warningEmitted = true;
+ }
+ return (dispatch) => {
+ return (opts, handler) => {
+ const decompressHandler = new DecompressHandler(handler, options);
+ return dispatch(opts, decompressHandler);
+ };
+ };
+ }
+ module2.exports = createDecompressInterceptor;
+ }
+});
+
// node_modules/undici/lib/cache/sqlite-cache-store.js
var require_sqlite_cache_store = __commonJS({
"node_modules/undici/lib/cache/sqlite-cache-store.js"(exports2, module2) {
"use strict";
- var { Writable } = require("stream");
+ var { Writable } = require("node:stream");
var { assertCacheKey, assertCacheValue } = require_cache2();
var DatabaseSync;
var VERSION3 = 3;
@@ -34156,7 +35993,7 @@ var require_response2 = __commonJS({
"node_modules/undici/lib/web/fetch/response.js"(exports2, module2) {
"use strict";
var { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers2();
- var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body2();
+ var { extractBody, cloneBody, mixinBody, streamRegistry, bodyUnusable } = require_body2();
var util = require_util8();
var nodeUtil = require("node:util");
var { kEnumerableProperty } = util;
@@ -34177,7 +36014,6 @@ var require_response2 = __commonJS({
var { URLSerializer } = require_data_url();
var { kConstruct } = require_symbols6();
var assert = require("node:assert");
- var { types } = require("node:util");
var textEncoder = new TextEncoder("utf-8");
var Response = class _Response {
/** @type {Headers} */
@@ -34229,7 +36065,7 @@ var require_response2 = __commonJS({
return;
}
if (body !== null) {
- body = webidl.converters.BodyInit(body);
+ body = webidl.converters.BodyInit(body, "Response", "body");
}
init = webidl.converters.ResponseInit(init);
this.#state = makeResponse({});
@@ -34301,6 +36137,9 @@ var require_response2 = __commonJS({
});
}
const clonedResponse = cloneResponse(this.#state);
+ if (this.#state.body?.stream) {
+ streamRegistry.register(this, new WeakRef(this.#state.body.stream));
+ }
return fromInnerResponse(clonedResponse, getHeadersGuard(this.#headers));
}
[nodeUtil.inspect.custom](depth, options) {
@@ -34384,7 +36223,7 @@ var require_response2 = __commonJS({
}
const newResponse = makeResponse({ ...response, body: null });
if (response.body != null) {
- newResponse.body = cloneBody(newResponse, response.body);
+ newResponse.body = cloneBody(response.body);
}
return newResponse;
}
@@ -34509,7 +36348,7 @@ var require_response2 = __commonJS({
setResponseHeaders(response, headers);
setHeadersList(headers, innerResponse.headersList);
setHeadersGuard(headers, guard);
- if (hasFinalizationRegistry && innerResponse.body?.stream) {
+ if (innerResponse.body?.stream) {
streamRegistry.register(response, new WeakRef(innerResponse.body.stream));
}
return response;
@@ -34521,7 +36360,7 @@ var require_response2 = __commonJS({
if (webidl.is.Blob(V)) {
return V;
}
- if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
+ if (webidl.is.BufferSource(V)) {
return V;
}
if (webidl.is.FormData(V)) {
@@ -34572,55 +36411,12 @@ var require_response2 = __commonJS({
}
});
-// node_modules/undici/lib/web/fetch/dispatcher-weakref.js
-var require_dispatcher_weakref2 = __commonJS({
- "node_modules/undici/lib/web/fetch/dispatcher-weakref.js"(exports2, module2) {
- "use strict";
- var { kConnected, kSize } = require_symbols6();
- 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);
- }
- });
- }
- }
- 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_request4 = __commonJS({
"node_modules/undici/lib/web/fetch/request.js"(exports2, module2) {
"use strict";
var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body2();
var { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers2();
- var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref2()();
var util = require_util8();
var nodeUtil = require("node:util");
var {
@@ -34645,7 +36441,7 @@ var require_request4 = __commonJS({
var assert = require("node:assert");
var { getMaxListeners, setMaxListeners, defaultMaxListeners } = require("node:events");
var kAbortController = Symbol("abortController");
- var requestFinalizer = new FinalizationRegistry2(({ signal, abort }) => {
+ var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
signal.removeEventListener("abort", abort);
});
var dependentControllerMap = /* @__PURE__ */ new WeakMap();
@@ -34696,8 +36492,8 @@ var require_request4 = __commonJS({
}
const prefix = "Request constructor";
webidl.argumentLengthCheck(arguments, 1, prefix);
- input = webidl.converters.RequestInfo(input, prefix, "input");
- init = webidl.converters.RequestInit(init, prefix, "init");
+ input = webidl.converters.RequestInfo(input);
+ init = webidl.converters.RequestInit(init);
let request2 = null;
let fallbackMode = null;
const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl;
@@ -35219,7 +37015,7 @@ var require_request4 = __commonJS({
function cloneRequest(request2) {
const newRequest = makeRequest({ ...request2, body: null });
if (request2.body != null) {
- newRequest.body = cloneBody(newRequest, request2.body);
+ newRequest.body = cloneBody(request2.body);
}
return newRequest;
}
@@ -35261,7 +37057,7 @@ var require_request4 = __commonJS({
}
});
webidl.is.Request = webidl.util.MakeTypeAssertion(Request);
- webidl.converters.RequestInfo = function(V, prefix, argument) {
+ webidl.converters.RequestInfo = function(V) {
if (typeof V === "string") {
return webidl.converters.USVString(V);
}
@@ -35363,6 +37159,144 @@ var require_request4 = __commonJS({
}
});
+// node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js
+var require_subresource_integrity = __commonJS({
+ "node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js"(exports2, module2) {
+ "use strict";
+ var assert = require("node:assert");
+ var validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
+ var crypto;
+ try {
+ crypto = require("node:crypto");
+ const cryptoHashes = crypto.getHashes();
+ if (cryptoHashes.length === 0) {
+ validSRIHashAlgorithmTokenSet.clear();
+ }
+ for (const algorithm of validSRIHashAlgorithmTokenSet.keys()) {
+ if (cryptoHashes.includes(algorithm) === false) {
+ validSRIHashAlgorithmTokenSet.delete(algorithm);
+ }
+ }
+ } catch {
+ validSRIHashAlgorithmTokenSet.clear();
+ }
+ var getSRIHashAlgorithmIndex = (
+ /** @type {GetSRIHashAlgorithmIndex} */
+ Map.prototype.get.bind(
+ validSRIHashAlgorithmTokenSet
+ )
+ );
+ var isValidSRIHashAlgorithm = (
+ /** @type {IsValidSRIHashAlgorithm} */
+ Map.prototype.has.bind(validSRIHashAlgorithmTokenSet)
+ );
+ var bytesMatch = crypto === void 0 || validSRIHashAlgorithmTokenSet.size === 0 ? () => true : (bytes, metadataList) => {
+ const parsedMetadata = parseMetadata(metadataList);
+ if (parsedMetadata.length === 0) {
+ return true;
+ }
+ const metadata = getStrongestMetadata(parsedMetadata);
+ for (const item of metadata) {
+ const algorithm = item.alg;
+ const expectedValue = item.val;
+ const actualValue = applyAlgorithmToBytes(algorithm, bytes);
+ if (caseSensitiveMatch(actualValue, expectedValue)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ function getStrongestMetadata(metadataList) {
+ const result = [];
+ let strongest = null;
+ for (const item of metadataList) {
+ assert(isValidSRIHashAlgorithm(item.alg), "Invalid SRI hash algorithm token");
+ if (result.length === 0) {
+ result.push(item);
+ strongest = item;
+ continue;
+ }
+ const currentAlgorithm = (
+ /** @type {Metadata} */
+ strongest.alg
+ );
+ const currentAlgorithmIndex = getSRIHashAlgorithmIndex(currentAlgorithm);
+ const newAlgorithm = item.alg;
+ const newAlgorithmIndex = getSRIHashAlgorithmIndex(newAlgorithm);
+ if (newAlgorithmIndex < currentAlgorithmIndex) {
+ continue;
+ } else if (newAlgorithmIndex > currentAlgorithmIndex) {
+ strongest = item;
+ result[0] = item;
+ result.length = 1;
+ } else {
+ result.push(item);
+ }
+ }
+ return result;
+ }
+ function parseMetadata(metadata) {
+ const result = [];
+ for (const item of metadata.split(" ")) {
+ const expressionAndOptions = item.split("?", 1);
+ const algorithmExpression = expressionAndOptions[0];
+ let base64Value = "";
+ const algorithmAndValue = [algorithmExpression.slice(0, 6), algorithmExpression.slice(7)];
+ const algorithm = algorithmAndValue[0];
+ if (!isValidSRIHashAlgorithm(algorithm)) {
+ continue;
+ }
+ if (algorithmAndValue[1]) {
+ base64Value = algorithmAndValue[1];
+ }
+ const metadata2 = {
+ alg: algorithm,
+ val: base64Value
+ };
+ result.push(metadata2);
+ }
+ return result;
+ }
+ var applyAlgorithmToBytes = (algorithm, bytes) => {
+ return crypto.hash(algorithm, bytes, "base64");
+ };
+ function caseSensitiveMatch(actualValue, expectedValue) {
+ let actualValueLength = actualValue.length;
+ if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === "=") {
+ actualValueLength -= 1;
+ }
+ if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === "=") {
+ actualValueLength -= 1;
+ }
+ let expectedValueLength = expectedValue.length;
+ if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === "=") {
+ expectedValueLength -= 1;
+ }
+ if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === "=") {
+ expectedValueLength -= 1;
+ }
+ if (actualValueLength !== expectedValueLength) {
+ return false;
+ }
+ for (let i = 0; i < actualValueLength; ++i) {
+ if (actualValue[i] === expectedValue[i] || actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") {
+ continue;
+ }
+ return false;
+ }
+ return true;
+ }
+ module2.exports = {
+ applyAlgorithmToBytes,
+ bytesMatch,
+ caseSensitiveMatch,
+ isValidSRIHashAlgorithm,
+ getStrongestMetadata,
+ parseMetadata
+ };
+ }
+});
+
// node_modules/undici/lib/web/fetch/index.js
var require_fetch2 = __commonJS({
"node_modules/undici/lib/web/fetch/index.js"(exports2, module2) {
@@ -35379,7 +37313,6 @@ var require_fetch2 = __commonJS({
var { Request, cloneRequest, getRequestDispatcher, getRequestState } = require_request4();
var zlib = require("node:zlib");
var {
- bytesMatch,
makePolicyContainer,
clonePolicyContainer,
requestBadPort,
@@ -35395,7 +37328,6 @@ var require_fetch2 = __commonJS({
crossOriginResourcePolicyCheck,
determineRequestsReferrer,
coarsenedSharedCurrentTime,
- createDeferredPromise,
sameOrigin,
isCancelled,
isAborted,
@@ -35428,6 +37360,9 @@ var require_fetch2 = __commonJS({
var { getGlobalDispatcher } = require_global4();
var { webidl } = require_webidl2();
var { STATUS_CODES } = require("node:http");
+ var { bytesMatch } = require_subresource_integrity();
+ var { createDeferredPromise } = require_promise();
+ var hasZstd = typeof zlib.createZstdDecompress === "function";
var GET_OR_HEAD = ["GET", "HEAD"];
var defaultUserAgent = typeof __UNDICI_IS_NODE__ !== "undefined" || typeof esbuildDetection !== "undefined" ? "node" : "undici";
var resolveObjectURL;
@@ -35643,103 +37578,105 @@ var require_fetch2 = __commonJS({
}
if (subresourceSet.has(request2.destination)) {
}
- mainFetch(fetchParams).catch((err) => {
- fetchParams.controller.terminate(err);
- });
+ mainFetch(fetchParams, false);
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) {
- 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";
- response = await schemeFetch(fetchParams);
- } else if (request2.mode === "same-origin") {
- response = makeNetworkError('request mode cannot be "same-origin"');
- } else if (request2.mode === "no-cors") {
- if (request2.redirect !== "follow") {
- response = makeNetworkError(
- 'redirect mode cannot be "follow" for "no-cors" request'
- );
- } else {
- request2.responseTainting = "opaque";
+ async function mainFetch(fetchParams, recursive) {
+ try {
+ 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) {
+ 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";
response = await schemeFetch(fetchParams);
+ } else if (request2.mode === "same-origin") {
+ response = makeNetworkError('request mode cannot be "same-origin"');
+ } else if (request2.mode === "no-cors") {
+ if (request2.redirect !== "follow") {
+ response = makeNetworkError(
+ 'redirect mode cannot be "follow" for "no-cors" request'
+ );
+ } else {
+ request2.responseTainting = "opaque";
+ response = await schemeFetch(fetchParams);
+ }
+ } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
+ response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
+ } else {
+ request2.responseTainting = "cors";
+ response = await httpFetch(fetchParams);
}
- } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
- response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
- } else {
- request2.responseTainting = "cors";
- response = await httpFetch(fetchParams);
}
- }
- if (recursive) {
- return response;
- }
- if (response.status !== 0 && !response.internalResponse) {
- if (request2.responseTainting === "cors") {
+ if (recursive) {
+ return response;
}
- 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);
+ 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;
+ let internalResponse = response.status === 0 ? response : response.internalResponse;
+ if (internalResponse.urlList.length === 0) {
+ internalResponse.urlList.push(...request2.urlList);
}
- const processBody = (bytes) => {
- if (!bytesMatch(bytes, request2.integrity)) {
- processBodyError("integrity mismatch");
+ 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;
}
- response.body = safelyExtractBody(bytes)[0];
+ const processBody = (bytes) => {
+ if (!bytesMatch(bytes, request2.integrity)) {
+ processBodyError("integrity mismatch");
+ return;
+ }
+ response.body = safelyExtractBody(bytes)[0];
+ fetchFinale(fetchParams, response);
+ };
+ fullyReadBody(response.body, processBody, processBodyError);
+ } else {
fetchFinale(fetchParams, response);
- };
- await fullyReadBody(response.body, processBody, processBodyError);
- } else {
- fetchFinale(fetchParams, response);
+ }
+ } catch (err) {
+ fetchParams.controller.terminate(err);
}
}
function schemeFetch(fetchParams) {
@@ -36209,15 +38146,11 @@ var require_fetch2 = __commonJS({
};
const stream = new ReadableStream(
{
- async start(controller) {
+ start(controller) {
fetchParams.controller.controller = controller;
},
- async pull(controller) {
- await pullAlgorithm(controller);
- },
- async cancel(reason) {
- await cancelAlgorithm(reason);
- },
+ pull: pullAlgorithm,
+ cancel: cancelAlgorithm,
type: "bytes"
}
);
@@ -36316,25 +38249,21 @@ var require_fetch2 = __commonJS({
},
onHeaders(status, rawHeaders, resume, statusText) {
if (status < 200) {
- return;
+ return false;
}
- let codings = [];
- 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);
}
- const contentEncoding = headersList.get("content-encoding", true);
- if (contentEncoding) {
- codings = contentEncoding.toLowerCase().split(",").map((x) => x.trim());
- }
- location = headersList.get("location", true);
+ const location = headersList.get("location", true);
this.body = new Readable({ read: resume });
- const decoders = [];
const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status);
- if (codings.length !== 0 && request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const decoders = [];
+ if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const contentEncoding = headersList.get("content-encoding", true);
+ const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
for (let i = codings.length - 1; i >= 0; --i) {
- const coding = codings[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
@@ -36354,6 +38283,11 @@ var require_fetch2 = __commonJS({
flush: zlib.constants.BROTLI_OPERATION_FLUSH,
finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH
}));
+ } else if (coding === "zstd" && hasZstd) {
+ decoders.push(zlib.createZstdDecompress({
+ flush: zlib.constants.ZSTD_e_continue,
+ finishFlush: zlib.constants.ZSTD_e_end
+ }));
} else {
decoders.length = 0;
break;
@@ -36459,6 +38393,7 @@ var require_util10 = __commonJS({
var require_cache4 = __commonJS({
"node_modules/undici/lib/web/cache/cache.js"(exports2, module2) {
"use strict";
+ var assert = require("node:assert");
var { kConstruct } = require_symbols6();
var { urlEquals, getFieldValues } = require_util10();
var { kEnumerableProperty, isDisturbed } = require_util8();
@@ -36466,8 +38401,8 @@ var require_cache4 = __commonJS({
var { cloneResponse, fromInnerResponse, getResponseState } = require_response2();
var { Request, fromInnerRequest, getRequestState } = require_request4();
var { fetching } = require_fetch2();
- var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util9();
- var assert = require("node:assert");
+ var { urlIsHttpHttpsScheme, readAllBytes } = require_util9();
+ var { createDeferredPromise } = require_promise();
var Cache = class _Cache {
/**
* @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list
@@ -36485,7 +38420,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.match";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
const p = this.#internalMatchAll(request2, options, 1);
if (p.length === 0) {
@@ -36496,7 +38431,7 @@ var require_cache4 = __commonJS({
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");
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
return this.#internalMatchAll(request2, options);
}
@@ -36504,7 +38439,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.add";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request2 = webidl.converters.RequestInfo(request2);
const requests = [request2];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
@@ -36618,7 +38553,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.put";
webidl.argumentLengthCheck(arguments, 2, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request2 = webidl.converters.RequestInfo(request2);
response = webidl.converters.Response(response, prefix, "response");
let innerRequest = null;
if (webidl.is.Request(request2)) {
@@ -36699,7 +38634,7 @@ var require_cache4 = __commonJS({
webidl.brandCheck(this, _Cache);
const prefix = "Cache.delete";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request2 = webidl.converters.RequestInfo(request2, prefix, "request");
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
if (webidl.is.Request(request2)) {
@@ -36738,13 +38673,13 @@ var require_cache4 = __commonJS({
/**
* @see https://w3c.github.io/ServiceWorker/#dom-cache-keys
* @param {any} request
- * @param {import('../../types/cache').CacheQueryOptions} options
+ * @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");
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
if (request2 !== void 0) {
@@ -36869,7 +38804,7 @@ var require_cache4 = __commonJS({
/**
* @see https://w3c.github.io/ServiceWorker/#query-cache
* @param {any} requestQuery
- * @param {import('../../types/cache').CacheQueryOptions} options
+ * @param {import('../../../types/cache').CacheQueryOptions} options
* @param {requestResponseList} targetStorage
* @returns {requestResponseList}
*/
@@ -36889,7 +38824,7 @@ var require_cache4 = __commonJS({
* @param {any} requestQuery
* @param {any} request
* @param {any | null} response
- * @param {import('../../types/cache').CacheQueryOptions | undefined} options
+ * @param {import('../../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
#requestMatchesCachedItem(requestQuery, request2, response = null, options) {
@@ -37304,7 +39239,7 @@ var require_parse2 = __commonJS({
var { isCTLExcludingHtab } = require_util11();
var { collectASequenceOfCodePointsFast } = require_data_url();
var assert = require("node:assert");
- var { unescape } = require("node:querystring");
+ var { unescape: qsUnescape } = require("node:querystring");
function parseSetCookie(header) {
if (isCTLExcludingHtab(header)) {
return null;
@@ -37338,7 +39273,7 @@ var require_parse2 = __commonJS({
}
return {
name,
- value: unescape(value),
+ value: qsUnescape(value),
...parseUnparsedAttributes(unparsedAttributes)
};
}
@@ -37559,7 +39494,7 @@ var require_cookies2 = __commonJS({
{
converter: webidl.sequenceConverter(webidl.converters.DOMString),
key: "unparsed",
- defaultValue: () => new Array(0)
+ defaultValue: () => []
}
]);
module2.exports = {
@@ -37783,7 +39718,7 @@ var require_events2 = __commonJS({
{
key: "ports",
converter: webidl.converters["sequence"],
- defaultValue: () => new Array(0)
+ defaultValue: () => []
}
]);
webidl.converters.CloseEventInit = webidl.dictionaryConverter([
@@ -38173,7 +40108,9 @@ var require_frame2 = __commonJS({
}
};
module2.exports = {
- WebsocketFrameSend
+ WebsocketFrameSend,
+ generateMask
+ // for benchmark
};
}
});
@@ -38184,7 +40121,6 @@ var require_connection2 = __commonJS({
"use strict";
var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants10();
var { parseExtensions, isClosed, isClosing, isEstablished, validateCloseCodeAndReason } = require_util12();
- var { channels } = require_diagnostics();
var { makeRequest } = require_request4();
var { fetching } = require_fetch2();
var { Headers, getHeadersList } = require_headers2();
@@ -38230,7 +40166,7 @@ var require_connection2 = __commonJS({
handler.readyState = states.CLOSED;
}
if (response.type === "error" || response.status !== 101) {
- failWebsocketConnection(handler, 1002, "Received network error or non-101 status code.");
+ failWebsocketConnection(handler, 1002, "Received network error or non-101 status code.", response.error);
return;
}
if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) {
@@ -38271,13 +40207,6 @@ var require_connection2 = __commonJS({
response.socket.on("data", handler.onSocketData);
response.socket.on("close", handler.onSocketClose);
response.socket.on("error", handler.onSocketError);
- if (channels.open.hasSubscribers) {
- channels.open.publish({
- address: response.socket.address(),
- protocol: secProtocol,
- extensions: secExtension
- });
- }
handler.wasEverConnected = true;
handler.onConnectionEstablished(response, extensions);
}
@@ -38317,15 +40246,16 @@ var require_connection2 = __commonJS({
object.readyState = states.CLOSING;
}
}
- function failWebsocketConnection(handler, code, reason) {
+ function failWebsocketConnection(handler, code, reason, cause) {
if (isEstablished(handler.readyState)) {
closeWebSocketConnection(handler, code, reason, false);
}
handler.controller.abort();
- if (handler.socket?.destroyed === false) {
+ if (!handler.socket) {
+ handler.onSocketClose();
+ } else if (handler.socket.destroyed === false) {
handler.socket.destroy();
}
- handler.onFail(code, reason);
}
module2.exports = {
establishWebSocketConnection,
@@ -38397,7 +40327,6 @@ var require_receiver2 = __commonJS({
var { Writable } = require("node:stream");
var assert = require("node:assert");
var { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require_constants10();
- var { channels } = require_diagnostics();
var {
isValidStatusCode,
isValidOpcode,
@@ -38686,18 +40615,10 @@ var require_receiver2 = __commonJS({
if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
const frame = new WebsocketFrameSend(body);
this.#handler.socket.write(frame.createFrame(opcodes.PONG));
- if (channels.ping.hasSubscribers) {
- channels.ping.publish({
- payload: body
- });
- }
+ this.#handler.onPing(body);
}
} else if (opcode === opcodes.PONG) {
- if (channels.pong.hasSubscribers) {
- channels.pong.publish({
- payload: body
- });
- }
+ this.#handler.onPong(body);
}
return true;
}
@@ -38802,6 +40723,7 @@ var require_sender = __commonJS({
var require_websocket2 = __commonJS({
"node_modules/undici/lib/web/websocket/websocket.js"(exports2, module2) {
"use strict";
+ var { isArrayBuffer } = require("node:util/types");
var { webidl } = require_webidl2();
var { URLSerializer } = require_data_url();
var { environmentSettingsObject } = require_util9();
@@ -38810,6 +40732,7 @@ var require_websocket2 = __commonJS({
isConnecting,
isEstablished,
isClosing,
+ isClosed,
isValidSubprotocol,
fireEvent,
utf8Decode,
@@ -38820,9 +40743,9 @@ var require_websocket2 = __commonJS({
var { ByteParser } = require_receiver2();
var { kEnumerableProperty } = require_util8();
var { getGlobalDispatcher } = require_global4();
- var { types } = require("node:util");
var { ErrorEvent, CloseEvent, createFastMessageEvent } = require_events2();
var { SendQueue } = require_sender();
+ var { WebsocketFrameSend } = require_frame2();
var { channels } = require_diagnostics();
var WebSocket = class _WebSocket extends EventTarget {
#events = {
@@ -38839,7 +40762,6 @@ var require_websocket2 = __commonJS({
/** @type {Handler} */
#handler = {
onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),
- onFail: (code, reason) => this.#onFail(code, reason),
onMessage: (opcode, data) => this.#onMessage(opcode, data),
onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),
onParserDrain: () => this.#onParserDrain(),
@@ -38856,6 +40778,22 @@ var require_websocket2 = __commonJS({
this.#handler.socket.destroy();
},
onSocketClose: () => this.#onSocketClose(),
+ onPing: (body) => {
+ if (channels.ping.hasSubscribers) {
+ channels.ping.publish({
+ payload: body,
+ websocket: this
+ });
+ }
+ },
+ onPong: (body) => {
+ if (channels.pong.hasSubscribers) {
+ channels.pong.publish({
+ payload: body,
+ websocket: this
+ });
+ }
+ },
readyState: states.CONNECTING,
socket: null,
closeState: /* @__PURE__ */ new Set(),
@@ -38910,7 +40848,7 @@ var require_websocket2 = __commonJS({
webidl.brandCheck(this, _WebSocket);
const prefix = "WebSocket.close";
if (code !== void 0) {
- code = webidl.converters["unsigned short"](code, prefix, "code", { clamp: true });
+ code = webidl.converters["unsigned short"](code, prefix, "code", webidl.attributes.Clamp);
}
if (reason !== void 0) {
reason = webidl.converters.USVString(reason);
@@ -38940,7 +40878,7 @@ var require_websocket2 = __commonJS({
this.#sendQueue.add(buffer, () => {
this.#bufferedAmount -= buffer.byteLength;
}, sendHints.text);
- } else if (types.isArrayBuffer(data)) {
+ } else if (isArrayBuffer(data)) {
this.#bufferedAmount += data.byteLength;
this.#sendQueue.add(data, () => {
this.#bufferedAmount -= data.byteLength;
@@ -38986,9 +40924,10 @@ var require_websocket2 = __commonJS({
if (this.#events.open) {
this.removeEventListener("open", this.#events.open);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("open", listener);
this.#events.open = fn;
- this.addEventListener("open", fn);
} else {
this.#events.open = null;
}
@@ -39002,9 +40941,10 @@ var require_websocket2 = __commonJS({
if (this.#events.error) {
this.removeEventListener("error", this.#events.error);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("error", listener);
this.#events.error = fn;
- this.addEventListener("error", fn);
} else {
this.#events.error = null;
}
@@ -39018,9 +40958,10 @@ var require_websocket2 = __commonJS({
if (this.#events.close) {
this.removeEventListener("close", this.#events.close);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("close", listener);
this.#events.close = fn;
- this.addEventListener("close", fn);
} else {
this.#events.close = null;
}
@@ -39034,9 +40975,10 @@ var require_websocket2 = __commonJS({
if (this.#events.message) {
this.removeEventListener("message", this.#events.message);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("message", listener);
this.#events.message = fn;
- this.addEventListener("message", fn);
} else {
this.#events.message = null;
}
@@ -39073,20 +41015,18 @@ var require_websocket2 = __commonJS({
this.#protocol = protocol;
}
fireEvent("open", this);
- }
- #onFail(code, reason) {
- if (reason) {
- fireEvent("error", this, (type, init) => new ErrorEvent(type, init), {
- error: new Error(reason),
- message: reason
- });
- }
- if (!this.#handler.wasEverConnected) {
- this.#handler.readyState = states.CLOSED;
- fireEvent("close", this, (type, init) => new CloseEvent(type, init), {
- wasClean: false,
- code,
- reason
+ if (channels.open.hasSubscribers) {
+ const headers = response.headersList.entries;
+ channels.open.publish({
+ address: response.socket.address(),
+ protocol: this.#protocol,
+ extensions: this.#extensions,
+ websocket: this,
+ handshakeResponse: {
+ status: response.status,
+ statusText: response.statusText,
+ headers
+ }
});
}
}
@@ -39125,14 +41065,18 @@ var require_websocket2 = __commonJS({
const wasClean = this.#handler.closeState.has(sentCloseFrameState.SENT) && this.#handler.closeState.has(sentCloseFrameState.RECEIVED);
let code = 1005;
let reason = "";
- const result = this.#parser.closingInfo;
+ const result = this.#parser?.closingInfo;
if (result && !result.error) {
code = result.code ?? 1005;
reason = result.reason;
- } else if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
- code = 1006;
}
this.#handler.readyState = states.CLOSED;
+ if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {
+ code = 1006;
+ fireEvent("error", this, (type, init) => new ErrorEvent(type, init), {
+ error: new TypeError(reason)
+ });
+ }
fireEvent("close", this, (type, init) => new CloseEvent(type, init), {
wasClean,
code,
@@ -39146,7 +41090,27 @@ var require_websocket2 = __commonJS({
});
}
}
+ /**
+ * @param {WebSocket} ws
+ * @param {Buffer|undefined} buffer
+ */
+ static ping(ws, buffer) {
+ if (Buffer.isBuffer(buffer)) {
+ if (buffer.length > 125) {
+ throw new TypeError("A PING frame cannot have a body larger than 125 bytes.");
+ }
+ } else if (buffer !== void 0) {
+ throw new TypeError("Expected buffer payload");
+ }
+ const readyState = ws.#handler.readyState;
+ if (isEstablished(readyState) && !isClosing(readyState) && !isClosed(readyState)) {
+ const frame = new WebsocketFrameSend(buffer);
+ ws.#handler.socket.write(frame.createFrame(opcodes.PING));
+ }
+ }
};
+ var { ping } = WebSocket;
+ Reflect.deleteProperty(WebSocket, "ping");
WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING;
WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN;
WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING;
@@ -39194,7 +41158,7 @@ var require_websocket2 = __commonJS({
{
key: "protocols",
converter: webidl.converters["DOMString or sequence"],
- defaultValue: () => new Array(0)
+ defaultValue: () => []
},
{
key: "dispatcher",
@@ -39217,14 +41181,15 @@ var require_websocket2 = __commonJS({
if (webidl.is.Blob(V)) {
return V;
}
- if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {
+ if (webidl.is.BufferSource(V)) {
return V;
}
}
return webidl.converters.USVString(V);
};
module2.exports = {
- WebSocket
+ WebSocket,
+ ping
};
}
});
@@ -39237,7 +41202,24 @@ var require_websocketerror = __commonJS({
var { validateCloseCodeAndReason } = require_util12();
var { kConstruct } = require_symbols6();
var { kEnumerableProperty } = require_util8();
- var WebSocketError = class _WebSocketError extends DOMException {
+ function createInheritableDOMException() {
+ class Test extends DOMException {
+ get reason() {
+ return "";
+ }
+ }
+ if (new Test().reason !== void 0) {
+ return DOMException;
+ }
+ return new Proxy(DOMException, {
+ construct(target, args, newTarget) {
+ const instance = Reflect.construct(target, args, target);
+ Object.setPrototypeOf(instance, newTarget.prototype);
+ return instance;
+ }
+ });
+ }
+ var WebSocketError = class _WebSocketError extends createInheritableDOMException() {
#closeCode;
#reason;
constructor(message = "", init = void 0) {
@@ -39296,12 +41278,12 @@ var require_websocketerror = __commonJS({
var require_websocketstream = __commonJS({
"node_modules/undici/lib/web/websocket/stream/websocketstream.js"(exports2, module2) {
"use strict";
- var { createDeferredPromise, environmentSettingsObject } = require_util9();
+ var { createDeferredPromise } = require_promise();
+ var { environmentSettingsObject } = require_util9();
var { states, opcodes, sentCloseFrameState } = require_constants10();
var { webidl } = require_webidl2();
var { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require_util12();
var { establishWebSocketConnection, failWebsocketConnection, closeWebSocketConnection } = require_connection2();
- var { types } = require("node:util");
var { channels } = require_diagnostics();
var { WebsocketFrameSend } = require_frame2();
var { ByteParser } = require_receiver2();
@@ -39314,10 +41296,10 @@ var require_websocketstream = __commonJS({
/** @type {URL} */
#url;
// Each WebSocketStream object has an associated opened promise , which is a promise.
- /** @type {ReturnType} */
+ /** @type {import('../../../util/promise').DeferredPromise} */
#openedPromise;
// Each WebSocketStream object has an associated closed promise , which is a promise.
- /** @type {ReturnType} */
+ /** @type {import('../../../util/promise').DeferredPromise} */
#closedPromise;
// Each WebSocketStream object has an associated readable stream , which is a ReadableStream .
/** @type {ReadableStream} */
@@ -39333,8 +41315,6 @@ var require_websocketstream = __commonJS({
#handler = {
// https://whatpr.org/websockets/48/7b748d3...d5570f3.html#feedback-to-websocket-stream-from-the-protocol
onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),
- onFail: (_code, _reason) => {
- },
onMessage: (opcode, data) => this.#onMessage(opcode, data),
onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),
onParserDrain: () => this.#handler.socket.resume(),
@@ -39351,6 +41331,10 @@ var require_websocketstream = __commonJS({
this.#handler.socket.destroy();
},
onSocketClose: () => this.#onSocketClose(),
+ onPing: () => {
+ },
+ onPong: () => {
+ },
readyState: states.CONNECTING,
socket: null,
closeState: /* @__PURE__ */ new Set(),
@@ -39431,11 +41415,12 @@ var require_websocketstream = __commonJS({
closeWebSocketConnection(this.#handler, code, reason, true);
}
#write(chunk) {
+ chunk = webidl.converters.WebSocketStreamWrite(chunk);
const promise = createDeferredPromise();
let data = null;
let opcode = null;
- if (ArrayBuffer.isView(chunk) || types.isArrayBuffer(chunk)) {
- data = new Uint8Array(ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk);
+ if (webidl.is.BufferSource(chunk)) {
+ data = new Uint8Array(ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk.slice());
opcode = opcodes.BINARY;
} else {
let string;
@@ -39443,7 +41428,7 @@ var require_websocketstream = __commonJS({
string = webidl.converters.DOMString(chunk);
} catch (e) {
promise.reject(e);
- return;
+ return promise.promise;
}
data = new TextEncoder().encode(string);
opcode = opcodes.TEXT;
@@ -39454,7 +41439,7 @@ var require_websocketstream = __commonJS({
promise.resolve(void 0);
});
}
- return promise;
+ return promise.promise;
}
/** @type {import('../websocket').Handler['onConnectionEstablished']} */
#onConnectionEstablished(response, parsedExtensions) {
@@ -39527,8 +41512,7 @@ var require_websocketstream = __commonJS({
}
const reason = result?.reason == null ? "" : utf8DecodeBytes(Buffer.from(result.reason));
if (wasClean) {
- this.#readableStream.cancel().catch(() => {
- });
+ this.#readableStreamController.close();
if (!this.#writableStream.locked) {
this.#writableStream.abort(new DOMException("A closed WebSocketStream cannot be written to", "InvalidStateError"));
}
@@ -39584,7 +41568,7 @@ var require_websocketstream = __commonJS({
webidl.converters.WebSocketCloseInfo = webidl.dictionaryConverter([
{
key: "closeCode",
- converter: (V) => webidl.converters["unsigned short"](V, { enforceRange: true })
+ converter: (V) => webidl.converters["unsigned short"](V, webidl.attributes.EnforceRange)
},
{
key: "reason",
@@ -39592,6 +41576,12 @@ var require_websocketstream = __commonJS({
defaultValue: () => ""
}
]);
+ webidl.converters.WebSocketStreamWrite = function(V) {
+ if (typeof V === "string") {
+ return webidl.converters.USVString(V);
+ }
+ return webidl.converters.BufferSource(V);
+ };
module2.exports = { WebSocketStream };
}
});
@@ -39610,15 +41600,9 @@ var require_util13 = __commonJS({
}
return true;
}
- function delay(ms) {
- return new Promise((resolve) => {
- setTimeout(resolve, ms).unref();
- });
- }
module2.exports = {
isValidLastEventId,
- isASCIINumber,
- delay
+ isASCIINumber
};
}
});
@@ -39744,7 +41728,7 @@ var require_eventsource_stream = __commonJS({
}
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) {
+ if (this.event.data !== void 0 || this.event.event || this.event.id !== void 0 || this.event.retry) {
this.processEvent(this.event);
}
this.clearEvent();
@@ -39825,7 +41809,7 @@ ${value}`;
if (event.retry && isASCIINumber(event.retry)) {
this.state.reconnectionTime = parseInt(event.retry, 10);
}
- if (event.id && isValidLastEventId(event.id)) {
+ if (event.id !== void 0 && isValidLastEventId(event.id)) {
this.state.lastEventId = event.id;
}
if (event.data !== void 0) {
@@ -39866,7 +41850,6 @@ var require_eventsource = __commonJS({
var { parseMIMEType } = require_data_url();
var { createFastMessageEvent } = require_events2();
var { isNetworkError } = require_response2();
- var { delay } = require_util13();
var { kEnumerableProperty } = require_util8();
var { environmentSettingsObject } = require_util9();
var experimentalWarned = false;
@@ -39914,10 +41897,10 @@ var require_eventsource = __commonJS({
}
url = webidl.converters.USVString(url);
eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, "eventSourceInitDict");
- this.#dispatcher = eventSourceInitDict.dispatcher;
+ this.#dispatcher = eventSourceInitDict.node.dispatcher || eventSourceInitDict.dispatcher;
this.#state = {
lastEventId: "",
- reconnectionTime: defaultReconnectionTime
+ reconnectionTime: eventSourceInitDict.node.reconnectionTime
};
const settings = environmentSettingsObject;
let urlRecord;
@@ -39981,11 +41964,9 @@ var require_eventsource = __commonJS({
dispatcher: this.#dispatcher
};
const processEventSourceEndOfBody = (response) => {
- if (isNetworkError(response)) {
- this.dispatchEvent(new Event("error"));
- this.close();
+ if (!isNetworkError(response)) {
+ return this.#reconnect();
}
- this.#reconnect();
};
fetchParams.processResponseEndOfBody = processEventSourceEndOfBody;
fetchParams.processResponse = (response) => {
@@ -40034,18 +42015,19 @@ var require_eventsource = __commonJS({
}
/**
* @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model
- * @returns {Promise}
+ * @returns {void}
*/
- async #reconnect() {
+ #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();
+ setTimeout(() => {
+ if (this.#readyState !== CONNECTING) return;
+ if (this.#state.lastEventId.length) {
+ this.#request.headersList.set("last-event-id", this.#state.lastEventId, true);
+ }
+ this.#connect();
+ }, this.#state.reconnectionTime)?.unref();
}
/**
* Closes the connection, if any, and sets the readyState attribute to
@@ -40065,9 +42047,10 @@ var require_eventsource = __commonJS({
if (this.#events.open) {
this.removeEventListener("open", this.#events.open);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("open", listener);
this.#events.open = fn;
- this.addEventListener("open", fn);
} else {
this.#events.open = null;
}
@@ -40079,9 +42062,10 @@ var require_eventsource = __commonJS({
if (this.#events.message) {
this.removeEventListener("message", this.#events.message);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("message", listener);
this.#events.message = fn;
- this.addEventListener("message", fn);
} else {
this.#events.message = null;
}
@@ -40093,9 +42077,10 @@ var require_eventsource = __commonJS({
if (this.#events.error) {
this.removeEventListener("error", this.#events.error);
}
- if (typeof fn === "function") {
+ const listener = webidl.converters.EventHandlerNonNull(fn);
+ if (listener !== null) {
+ this.addEventListener("error", listener);
this.#events.error = fn;
- this.addEventListener("error", fn);
} else {
this.#events.error = null;
}
@@ -40145,6 +42130,22 @@ var require_eventsource = __commonJS({
key: "dispatcher",
// undici only
converter: webidl.converters.any
+ },
+ {
+ key: "node",
+ // undici only
+ converter: webidl.dictionaryConverter([
+ {
+ key: "reconnectionTime",
+ converter: webidl.converters["unsigned long"],
+ defaultValue: () => defaultReconnectionTime
+ },
+ {
+ key: "dispatcher",
+ converter: webidl.converters.any
+ }
+ ]),
+ defaultValue: () => ({})
}
]);
module2.exports = {
@@ -40176,6 +42177,7 @@ var require_undici2 = __commonJS({
var { MockCallHistory, MockCallHistoryLog } = require_mock_call_history();
var MockAgent = require_mock_agent2();
var MockPool = require_mock_pool2();
+ var SnapshotAgent = require_snapshot_agent();
var mockErrors = require_mock_errors2();
var RetryHandler = require_retry_handler();
var { getGlobalDispatcher, setGlobalDispatcher } = require_global4();
@@ -40200,7 +42202,8 @@ var require_undici2 = __commonJS({
retry: require_retry(),
dump: require_dump(),
dns: require_dns(),
- cache: require_cache3()
+ cache: require_cache3(),
+ decompress: require_decompress()
};
module2.exports.cacheStores = {
MemoryCacheStore: require_memory_cache_store()
@@ -40255,15 +42258,13 @@ var require_undici2 = __commonJS({
module2.exports.setGlobalDispatcher = setGlobalDispatcher;
module2.exports.getGlobalDispatcher = getGlobalDispatcher;
var fetchImpl = require_fetch2().fetch;
- module2.exports.fetch = async function fetch(init, options = void 0) {
- try {
- return await fetchImpl(init, options);
- } catch (err) {
+ module2.exports.fetch = function fetch(init, options = void 0) {
+ return fetchImpl(init, options).catch((err) => {
if (err && typeof err === "object") {
Error.captureStackTrace(err);
}
throw err;
- }
+ });
};
module2.exports.Headers = require_headers2().Headers;
module2.exports.Response = require_response2().Response;
@@ -40285,10 +42286,12 @@ var require_undici2 = __commonJS({
module2.exports.parseMIMEType = parseMIMEType;
module2.exports.serializeAMimeType = serializeAMimeType;
var { CloseEvent, ErrorEvent, MessageEvent } = require_events2();
- module2.exports.WebSocket = require_websocket2().WebSocket;
+ var { WebSocket, ping } = require_websocket2();
+ module2.exports.WebSocket = WebSocket;
module2.exports.CloseEvent = CloseEvent;
module2.exports.ErrorEvent = ErrorEvent;
module2.exports.MessageEvent = MessageEvent;
+ module2.exports.ping = ping;
module2.exports.WebSocketStream = require_websocketstream().WebSocketStream;
module2.exports.WebSocketError = require_websocketerror().WebSocketError;
module2.exports.request = makeDispatcher(api.request);
@@ -40301,9 +42304,23 @@ var require_undici2 = __commonJS({
module2.exports.MockCallHistoryLog = MockCallHistoryLog;
module2.exports.MockPool = MockPool;
module2.exports.MockAgent = MockAgent;
+ module2.exports.SnapshotAgent = SnapshotAgent;
module2.exports.mockErrors = mockErrors;
var { EventSource } = require_eventsource();
module2.exports.EventSource = EventSource;
+ function install() {
+ globalThis.fetch = module2.exports.fetch;
+ globalThis.Headers = module2.exports.Headers;
+ globalThis.Response = module2.exports.Response;
+ globalThis.Request = module2.exports.Request;
+ globalThis.FormData = module2.exports.FormData;
+ globalThis.WebSocket = module2.exports.WebSocket;
+ globalThis.CloseEvent = module2.exports.CloseEvent;
+ globalThis.ErrorEvent = module2.exports.ErrorEvent;
+ globalThis.MessageEvent = module2.exports.MessageEvent;
+ globalThis.EventSource = module2.exports.EventSource;
+ }
+ module2.exports.install = install;
}
});
diff --git a/package-lock.json b/package-lock.json
index b172f04e..d7117ddd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "create-github-app-token",
- "version": "2.1.2",
+ "version": "2.1.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-github-app-token",
- "version": "2.1.2",
+ "version": "2.1.3",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
diff --git a/package.json b/package.json
index 0601ed11..82ce77ca 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "create-github-app-token",
"private": true,
"type": "module",
- "version": "2.1.2",
+ "version": "2.1.3",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
"scripts": {
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0 --packages=bundle",
From bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 13 Sep 2025 00:16:26 +0000
Subject: [PATCH 10/27] fix(deps): bump @octokit/auth-app from 7.2.1 to 8.0.1
(#257)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [@octokit/auth-app](https://github.com/octokit/auth-app.js) from
7.2.1 to 8.0.1.
Release notes
Sourced from @octokit/auth-app's
releases.
v8.0.1
8.0.1
(2025-05-20)
Bug Fixes
v8.0.0
8.0.0
(2025-05-20)
Continuous Integration
BREAKING CHANGES
-
Drop support for NodeJS v18
-
build: set minimal node version in build script to v20
-
ci: stop testing against NodeJS v18
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 317 ++++++----------------------------------------
package.json | 2 +-
2 files changed, 41 insertions(+), 278 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index d7117ddd..3925d6b5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^7.2.1",
+ "@octokit/auth-app": "^8.1.0",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.16.0"
@@ -694,251 +694,71 @@
}
},
"node_modules/@octokit/auth-app": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.2.1.tgz",
- "integrity": "sha512-4jaopCVOtWN0V8qCx/1s2pkRqC6tcvIQM3kFB99eIpsP53GfsoIKO08D94b83n/V3iGihHmxWR2lXzE0NicUGg==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-8.1.0.tgz",
+ "integrity": "sha512-6bWhyvLXqCSfHiqlwzn9pScLZ+Qnvh/681GR/UEEPCMIVwfpRDBw0cCzy3/t2Dq8B7W2X/8pBgmw6MOiyE0DXQ==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-app": "^8.1.4",
- "@octokit/auth-oauth-user": "^5.1.4",
- "@octokit/request": "^9.2.3",
- "@octokit/request-error": "^6.1.8",
+ "@octokit/auth-oauth-app": "^9.0.1",
+ "@octokit/auth-oauth-user": "^6.0.0",
+ "@octokit/request": "^10.0.2",
+ "@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
"toad-cache": "^3.7.0",
"universal-github-app-jwt": "^2.2.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-app/node_modules/@octokit/request": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
- "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
- "node_modules/@octokit/auth-app/node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/@octokit/auth-oauth-app": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.4.tgz",
- "integrity": "sha512-71iBa5SflSXcclk/OL3lJzdt4iFs56OJdpBGEBl1wULp7C58uiswZLV6TdRaiAzHP1LT8ezpbHlKuxADb+4NkQ==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-9.0.1.tgz",
+ "integrity": "sha512-TthWzYxuHKLAbmxdFZwFlmwVyvynpyPmjwc+2/cI3cvbT7mHtsAW9b1LvQaNnAuWL+pFnqtxdmrU8QpF633i1g==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^7.1.5",
- "@octokit/auth-oauth-user": "^5.1.4",
- "@octokit/request": "^9.2.3",
+ "@octokit/auth-oauth-device": "^8.0.1",
+ "@octokit/auth-oauth-user": "^6.0.0",
+ "@octokit/request": "^10.0.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
- "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
- "node_modules/@octokit/auth-oauth-app/node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/@octokit/auth-oauth-device": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.5.tgz",
- "integrity": "sha512-lR00+k7+N6xeECj0JuXeULQ2TSBB/zjTAmNF2+vyGPDEFx1dgk1hTDmL13MjbSmzusuAmuJD8Pu39rjp9jH6yw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-8.0.1.tgz",
+ "integrity": "sha512-TOqId/+am5yk9zor0RGibmlqn4V0h8vzjxlw/wYr3qzkQxl8aBPur384D1EyHtqvfz0syeXji4OUvKkHvxk/Gw==",
"license": "MIT",
"dependencies": {
- "@octokit/oauth-methods": "^5.1.5",
- "@octokit/request": "^9.2.3",
+ "@octokit/oauth-methods": "^6.0.0",
+ "@octokit/request": "^10.0.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
- "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
- "node_modules/@octokit/auth-oauth-device/node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/@octokit/auth-oauth-user": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.4.tgz",
- "integrity": "sha512-4tJRofMHm6ZCd3O2PVgboBbQ/lNtacREeaihet0+wCATZmvPK+jjg2K6NjBfY69An3yzQdmkcMeiaOOoxOPr7Q==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-6.0.0.tgz",
+ "integrity": "sha512-GV9IW134PHsLhtUad21WIeP9mlJ+QNpFd6V9vuPWmaiN25HEJeEQUcS4y5oRuqCm9iWDLtfIs+9K8uczBXKr6A==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^7.1.5",
- "@octokit/oauth-methods": "^5.1.5",
- "@octokit/request": "^9.2.3",
+ "@octokit/auth-oauth-device": "^8.0.1",
+ "@octokit/oauth-methods": "^6.0.0",
+ "@octokit/request": "^10.0.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
- "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
- "node_modules/@octokit/auth-oauth-user/node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/@octokit/endpoint": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
@@ -953,74 +773,29 @@
}
},
"node_modules/@octokit/oauth-authorization-url": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz",
- "integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-8.0.0.tgz",
+ "integrity": "sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ==",
"license": "MIT",
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@octokit/oauth-methods": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.5.tgz",
- "integrity": "sha512-Ev7K8bkYrYLhoOSZGVAGsLEscZQyq7XQONCBBAl2JdMg7IT3PQn/y8P0KjloPoYpI5UylqYrLeUcScaYWXwDvw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-6.0.0.tgz",
+ "integrity": "sha512-Q8nFIagNLIZgM2odAraelMcDssapc+lF+y3OlcIPxyAU+knefO8KmozGqfnma1xegRDP4z5M73ABsamn72bOcA==",
"license": "MIT",
"dependencies": {
- "@octokit/oauth-authorization-url": "^7.0.0",
- "@octokit/request": "^9.2.3",
- "@octokit/request-error": "^6.1.8",
+ "@octokit/oauth-authorization-url": "^8.0.0",
+ "@octokit/request": "^10.0.2",
+ "@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0"
},
"engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz",
- "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
- "node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/@octokit/openapi": {
"version": "19.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi/-/openapi-19.1.0.tgz",
@@ -1054,18 +829,6 @@
}
},
"node_modules/@octokit/request-error": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz",
- "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/request/node_modules/@octokit/request-error": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
"integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
diff --git a/package.json b/package.json
index 82ce77ca..9fa02929 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^7.2.1",
+ "@octokit/auth-app": "^8.1.0",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.16.0"
From 67018539274d69449ef7c02e8e71183d1719ab42 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 13 Sep 2025 00:16:56 +0000
Subject: [PATCH 11/27] build(release): 2.1.4 [skip ci]
## [2.1.4](https://github.com/actions/create-github-app-token/compare/v2.1.3...v2.1.4) (2025-09-13)
### Bug Fixes
* **deps:** bump @octokit/auth-app from 7.2.1 to 8.0.1 ([#257](https://github.com/actions/create-github-app-token/issues/257)) ([bef1eaf](https://github.com/actions/create-github-app-token/commit/bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1))
---
dist/main.cjs | 5231 ++++++++++-----------------------------------
dist/post.cjs | 2 +-
package-lock.json | 4 +-
package.json | 2 +-
4 files changed, 1144 insertions(+), 4095 deletions(-)
diff --git a/dist/main.cjs b/dist/main.cjs
index d6cb5782..97ecc2da 100644
--- a/dist/main.cjs
+++ b/dist/main.cjs
@@ -3646,11 +3646,11 @@ var require_util2 = __commonJS({
}
return location;
}
- function requestCurrentURL(request7) {
- return request7.urlList[request7.urlList.length - 1];
+ function requestCurrentURL(request2) {
+ return request2.urlList[request2.urlList.length - 1];
}
- function requestBadPort(request7) {
- const url = requestCurrentURL(request7);
+ function requestBadPort(request2) {
+ const url = requestCurrentURL(request2);
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
return "blocked";
}
@@ -3717,7 +3717,7 @@ var require_util2 = __commonJS({
}
return true;
}
- function setRequestReferrerPolicyOnRedirect(request7, actualResponse) {
+ function setRequestReferrerPolicyOnRedirect(request2, actualResponse) {
const { headersList } = actualResponse;
const policyHeader = (headersList.get("referrer-policy") ?? "").split(",");
let policy = "";
@@ -3731,7 +3731,7 @@ var require_util2 = __commonJS({
}
}
if (policy !== "") {
- request7.referrerPolicy = policy;
+ request2.referrerPolicy = policy;
}
}
function crossOriginResourcePolicyCheck() {
@@ -3748,33 +3748,33 @@ var require_util2 = __commonJS({
header = httpRequest.mode;
httpRequest.headersList.set("sec-fetch-mode", header);
}
- function appendRequestOriginHeader(request7) {
- let serializedOrigin = request7.origin;
- if (request7.responseTainting === "cors" || request7.mode === "websocket") {
+ function appendRequestOriginHeader(request2) {
+ let serializedOrigin = request2.origin;
+ if (request2.responseTainting === "cors" || request2.mode === "websocket") {
if (serializedOrigin) {
- request7.headersList.append("origin", serializedOrigin);
+ request2.headersList.append("origin", serializedOrigin);
}
- } else if (request7.method !== "GET" && request7.method !== "HEAD") {
- switch (request7.referrerPolicy) {
+ } 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 (request7.origin && urlHasHttpsScheme(request7.origin) && !urlHasHttpsScheme(requestCurrentURL(request7))) {
+ if (request2.origin && urlHasHttpsScheme(request2.origin) && !urlHasHttpsScheme(requestCurrentURL(request2))) {
serializedOrigin = null;
}
break;
case "same-origin":
- if (!sameOrigin(request7, requestCurrentURL(request7))) {
+ if (!sameOrigin(request2, requestCurrentURL(request2))) {
serializedOrigin = null;
}
break;
default:
}
if (serializedOrigin) {
- request7.headersList.append("origin", serializedOrigin);
+ request2.headersList.append("origin", serializedOrigin);
}
}
}
@@ -3806,26 +3806,26 @@ var require_util2 = __commonJS({
referrerPolicy: policyContainer.referrerPolicy
};
}
- function determineRequestsReferrer(request7) {
- const policy = request7.referrerPolicy;
+ function determineRequestsReferrer(request2) {
+ const policy = request2.referrerPolicy;
assert(policy);
let referrerSource = null;
- if (request7.referrer === "client") {
+ if (request2.referrer === "client") {
const globalOrigin = getGlobalOrigin();
if (!globalOrigin || globalOrigin.origin === "null") {
return "no-referrer";
}
referrerSource = new URL(globalOrigin);
- } else if (request7.referrer instanceof URL) {
- referrerSource = request7.referrer;
+ } else if (request2.referrer instanceof URL) {
+ referrerSource = request2.referrer;
}
let referrerURL = stripURLForReferrer(referrerSource);
const referrerOrigin = stripURLForReferrer(referrerSource, true);
if (referrerURL.toString().length > 4096) {
referrerURL = referrerOrigin;
}
- const areSameOrigin = sameOrigin(request7, referrerURL);
- const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request7.url);
+ const areSameOrigin = sameOrigin(request2, referrerURL);
+ const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request2.url);
switch (policy) {
case "origin":
return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true);
@@ -3836,7 +3836,7 @@ var require_util2 = __commonJS({
case "origin-when-cross-origin":
return areSameOrigin ? referrerURL : referrerOrigin;
case "strict-origin-when-cross-origin": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
if (sameOrigin(referrerURL, currentURL)) {
return referrerURL;
}
@@ -3996,7 +3996,7 @@ var require_util2 = __commonJS({
}
return true;
}
- function tryUpgradeRequestToAPotentiallyTrustworthyURL(request7) {
+ function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
}
function sameOrigin(A, B) {
if (A.origin === B.origin && A.origin === "null") {
@@ -5884,25 +5884,25 @@ var require_request = __commonJS({
static [kHTTP2BuildRequest](origin, opts, handler) {
const headers = opts.headers;
opts = { ...opts, headers: null };
- const request7 = new _Request(origin, opts, handler);
- request7.headers = {};
+ const request2 = new _Request(origin, opts, handler);
+ request2.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(request7, headers[i], headers[i + 1], true);
+ processHeader(request2, 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(request7, key, headers[key], true);
+ processHeader(request2, key, headers[key], true);
}
} else if (headers != null) {
throw new InvalidArgumentError("headers must be an object or an array");
}
- return request7;
+ return request2;
}
static [kHTTP2CopyHeaders](raw) {
const rawHeaders = raw.split("\r\n");
@@ -5927,26 +5927,26 @@ var require_request = __commonJS({
return skipAppend ? val : `${key}: ${val}\r
`;
}
- function processHeader(request7, key, val, skipAppend = false) {
+ function processHeader(request2, 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 (request7.host === null && key.length === 4 && key.toLowerCase() === "host") {
+ if (request2.host === null && key.length === 4 && key.toLowerCase() === "host") {
if (headerCharRegex.exec(val) !== null) {
throw new InvalidArgumentError(`invalid ${key} header`);
}
- request7.host = val;
- } else if (request7.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {
- request7.contentLength = parseInt(val, 10);
- if (!Number.isFinite(request7.contentLength)) {
+ request2.host = val;
+ } else if (request2.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") {
+ request2.contentLength = parseInt(val, 10);
+ if (!Number.isFinite(request2.contentLength)) {
throw new InvalidArgumentError("invalid content-length header");
}
- } else if (request7.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {
- request7.contentType = val;
- if (skipAppend) request7.headers[key] = processHeaderValue(key, val, skipAppend);
- else request7.headers += processHeaderValue(key, val);
+ } else if (request2.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") {
+ request2.contentType = val;
+ if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
+ else request2.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") {
@@ -5954,7 +5954,7 @@ var require_request = __commonJS({
if (value !== "close" && value !== "keep-alive") {
throw new InvalidArgumentError("invalid connection header");
} else if (value === "close") {
- request7.reset = true;
+ request2.reset = true;
}
} else if (key.length === 10 && key.toLowerCase() === "keep-alive") {
throw new InvalidArgumentError("invalid keep-alive header");
@@ -5968,15 +5968,15 @@ var require_request = __commonJS({
if (Array.isArray(val)) {
for (let i = 0; i < val.length; i++) {
if (skipAppend) {
- if (request7.headers[key]) request7.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`;
- else request7.headers[key] = processHeaderValue(key, val[i], skipAppend);
+ if (request2.headers[key]) request2.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`;
+ else request2.headers[key] = processHeaderValue(key, val[i], skipAppend);
} else {
- request7.headers += processHeaderValue(key, val[i]);
+ request2.headers += processHeaderValue(key, val[i]);
}
}
} else {
- if (skipAppend) request7.headers[key] = processHeaderValue(key, val, skipAppend);
- else request7.headers += processHeaderValue(key, val);
+ if (skipAppend) request2.headers[key] = processHeaderValue(key, val, skipAppend);
+ else request2.headers += processHeaderValue(key, val);
}
}
}
@@ -7140,10 +7140,10 @@ var require_client = __commonJS({
}
[kDispatch](opts, handler) {
const origin = opts.origin || this[kUrl].origin;
- const request7 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler);
- this[kQueue].push(request7);
+ const request2 = this[kHTTPConnVersion] === "h2" ? Request[kHTTP2BuildRequest](origin, opts, handler) : Request[kHTTP1BuildRequest](origin, opts, handler);
+ this[kQueue].push(request2);
if (this[kResuming]) {
- } else if (util.bodyLength(request7.body) == null && util.isIterable(request7.body)) {
+ } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
this[kResuming] = 1;
process.nextTick(resume, this);
} else {
@@ -7167,8 +7167,8 @@ var require_client = __commonJS({
return new Promise((resolve) => {
const requests = this[kQueue].splice(this[kPendingIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- errorRequest(this, request7, err);
+ const request2 = requests[i];
+ errorRequest(this, request2, err);
}
const callback = () => {
if (this[kClosedResolve]) {
@@ -7216,13 +7216,13 @@ var require_client = __commonJS({
assert(this[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- errorRequest(this, request7, err);
+ const request2 = requests[i];
+ errorRequest(this, request2, err);
}
} else if (client[kRunning] > 0) {
- const request7 = client[kQueue][client[kRunningIdx]];
+ const request2 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- errorRequest(client, request7, err);
+ errorRequest(client, request2, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -7430,8 +7430,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- if (!request7) {
+ const request2 = client[kQueue][client[kRunningIdx]];
+ if (!request2) {
return -1;
}
}
@@ -7471,12 +7471,12 @@ var require_client = __commonJS({
onUpgrade(head) {
const { upgrade, client, socket, headers, statusCode } = this;
assert(upgrade);
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
assert(!socket.destroyed);
assert(socket === client[kSocket]);
assert(!this.paused);
- assert(request7.upgrade || request7.method === "CONNECT");
+ assert(request2.upgrade || request2.method === "CONNECT");
this.statusCode = null;
this.statusText = "";
this.shouldKeepAlive = null;
@@ -7493,7 +7493,7 @@ var require_client = __commonJS({
client[kQueue][client[kRunningIdx]++] = null;
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
try {
- request7.onUpgrade(statusCode, headers, socket);
+ request2.onUpgrade(statusCode, headers, socket);
} catch (err) {
util.destroy(socket, err);
}
@@ -7504,8 +7504,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- if (!request7) {
+ const request2 = client[kQueue][client[kRunningIdx]];
+ if (!request2) {
return -1;
}
assert(!this.upgrade);
@@ -7514,23 +7514,23 @@ var require_client = __commonJS({
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
return -1;
}
- if (upgrade && !request7.upgrade) {
+ if (upgrade && !request2.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.
- request7.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 = request7.bodyTimeout != null ? request7.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 (request7.method === "CONNECT") {
+ if (request2.method === "CONNECT") {
assert(client[kRunning] === 1);
this.upgrade = true;
return 2;
@@ -7561,11 +7561,11 @@ var require_client = __commonJS({
} else {
socket[kReset] = true;
}
- const pause = request7.onHeaders(statusCode, headers, this.resume, statusText) === false;
- if (request7.aborted) {
+ const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false;
+ if (request2.aborted) {
return -1;
}
- if (request7.method === "HEAD") {
+ if (request2.method === "HEAD") {
return 1;
}
if (statusCode < 200) {
@@ -7582,8 +7582,8 @@ var require_client = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
assert.strictEqual(this.timeoutType, TIMEOUT_BODY);
if (this.timeout) {
if (this.timeout.refresh) {
@@ -7596,7 +7596,7 @@ var require_client = __commonJS({
return -1;
}
this.bytesRead += buf.length;
- if (request7.onData(buf) === false) {
+ if (request2.onData(buf) === false) {
return constants.ERROR.PAUSED;
}
}
@@ -7608,8 +7608,8 @@ var require_client = __commonJS({
if (upgrade) {
return;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
assert(statusCode >= 100);
this.statusCode = null;
this.statusText = "";
@@ -7623,11 +7623,11 @@ var require_client = __commonJS({
if (statusCode < 200) {
return;
}
- if (request7.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
+ if (request2.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
util.destroy(socket, new ResponseContentLengthMismatchError());
return -1;
}
- request7.onComplete(headers);
+ request2.onComplete(headers);
client[kQueue][client[kRunningIdx]++] = null;
if (socket[kWriting]) {
assert.strictEqual(client[kRunning], 0);
@@ -7685,8 +7685,8 @@ var require_client = __commonJS({
assert(client[kPendingIdx] === client[kRunningIdx]);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- errorRequest(client, request7, err);
+ const request2 = requests[i];
+ errorRequest(client, request2, err);
}
assert(client[kSize] === 0);
}
@@ -7716,13 +7716,13 @@ var require_client = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- errorRequest(client, request7, err);
+ const request2 = requests[i];
+ errorRequest(client, request2, err);
}
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
- const request7 = client[kQueue][client[kRunningIdx]];
+ const request2 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- errorRequest(client, request7, err);
+ errorRequest(client, request2, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -7855,8 +7855,8 @@ var require_client = __commonJS({
if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
assert(client[kRunning] === 0);
while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
- const request7 = client[kQueue][client[kPendingIdx]++];
- errorRequest(client, request7, err);
+ const request2 = client[kQueue][client[kPendingIdx]++];
+ errorRequest(client, request2, err);
}
} else {
onError(client, err);
@@ -7910,8 +7910,8 @@ var require_client = __commonJS({
}
} else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
- const request8 = client[kQueue][client[kRunningIdx]];
- const headersTimeout = request8.headersTimeout != null ? request8.headersTimeout : client[kHeadersTimeout];
+ const request3 = client[kQueue][client[kRunningIdx]];
+ const headersTimeout = request3.headersTimeout != null ? request3.headersTimeout : client[kHeadersTimeout];
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
}
}
@@ -7933,13 +7933,13 @@ var require_client = __commonJS({
if (client[kRunning] >= (client[kPipelining] || 1)) {
return;
}
- const request7 = client[kQueue][client[kPendingIdx]];
- if (client[kUrl].protocol === "https:" && client[kServerName] !== request7.servername) {
+ const request2 = client[kQueue][client[kPendingIdx]];
+ if (client[kUrl].protocol === "https:" && client[kServerName] !== request2.servername) {
if (client[kRunning] > 0) {
return;
}
- client[kServerName] = request7.servername;
- if (socket && socket.servername !== request7.servername) {
+ client[kServerName] = request2.servername;
+ if (socket && socket.servername !== request2.servername) {
util.destroy(socket, new InformationalError("servername changed"));
return;
}
@@ -7954,16 +7954,16 @@ var require_client = __commonJS({
if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {
return;
}
- if (client[kRunning] > 0 && !request7.idempotent) {
+ if (client[kRunning] > 0 && !request2.idempotent) {
return;
}
- if (client[kRunning] > 0 && (request7.upgrade || request7.method === "CONNECT")) {
+ if (client[kRunning] > 0 && (request2.upgrade || request2.method === "CONNECT")) {
return;
}
- if (client[kRunning] > 0 && util.bodyLength(request7.body) !== 0 && (util.isStream(request7.body) || util.isAsyncIterable(request7.body))) {
+ if (client[kRunning] > 0 && util.bodyLength(request2.body) !== 0 && (util.isStream(request2.body) || util.isAsyncIterable(request2.body))) {
return;
}
- if (!request7.aborted && write(client, request7)) {
+ if (!request2.aborted && write(client, request2)) {
client[kPendingIdx]++;
} else {
client[kQueue].splice(client[kPendingIdx], 1);
@@ -7973,12 +7973,12 @@ var require_client = __commonJS({
function shouldSendContentLength(method) {
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
}
- function write(client, request7) {
+ function write(client, request2) {
if (client[kHTTPConnVersion] === "h2") {
- writeH2(client, client[kHTTP2Session], request7);
+ writeH2(client, client[kHTTP2Session], request2);
return;
}
- const { body, method, path, host, upgrade, headers, blocking, reset } = request7;
+ const { body, method, path, host, upgrade, headers, blocking, reset } = request2;
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
if (body && typeof body.read === "function") {
body.read(0);
@@ -7986,31 +7986,31 @@ var require_client = __commonJS({
const bodyLength = util.bodyLength(body);
let contentLength = bodyLength;
if (contentLength === null) {
- contentLength = request7.contentLength;
+ contentLength = request2.contentLength;
}
if (contentLength === 0 && !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength !== null && request7.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength !== null && request2.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- errorRequest(client, request7, new RequestContentLengthMismatchError());
+ errorRequest(client, request2, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
}
const socket = client[kSocket];
try {
- request7.onConnect((err) => {
- if (request7.aborted || request7.completed) {
+ request2.onConnect((err) => {
+ if (request2.aborted || request2.completed) {
return;
}
- errorRequest(client, request7, err || new RequestAbortedError());
+ errorRequest(client, request2, err || new RequestAbortedError());
util.destroy(socket, new InformationalError("aborted"));
});
} catch (err) {
- errorRequest(client, request7, err);
+ errorRequest(client, request2, err);
}
- if (request7.aborted) {
+ if (request2.aborted) {
return false;
}
if (method === "HEAD") {
@@ -8049,7 +8049,7 @@ upgrade: ${upgrade}\r
header += headers;
}
if (channels.sendHeaders.hasSubscribers) {
- channels.sendHeaders.publish({ request: request7, headers: header, socket });
+ channels.sendHeaders.publish({ request: request2, headers: header, socket });
}
if (!body || bodyLength === 0) {
if (contentLength === 0) {
@@ -8061,7 +8061,7 @@ upgrade: ${upgrade}\r
socket.write(`${header}\r
`, "latin1");
}
- request7.onRequestSent();
+ request2.onRequestSent();
} else if (util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
socket.cork();
@@ -8070,46 +8070,46 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(body);
socket.uncork();
- request7.onBodySent(body);
- request7.onRequestSent();
+ request2.onBodySent(body);
+ request2.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
- writeIterable({ body: body.stream(), client, request: request7, socket, contentLength, header, expectsPayload });
+ writeIterable({ body: body.stream(), client, request: request2, socket, contentLength, header, expectsPayload });
} else {
- writeBlob({ body, client, request: request7, socket, contentLength, header, expectsPayload });
+ writeBlob({ body, client, request: request2, socket, contentLength, header, expectsPayload });
}
} else if (util.isStream(body)) {
- writeStream({ body, client, request: request7, socket, contentLength, header, expectsPayload });
+ writeStream({ body, client, request: request2, socket, contentLength, header, expectsPayload });
} else if (util.isIterable(body)) {
- writeIterable({ body, client, request: request7, socket, contentLength, header, expectsPayload });
+ writeIterable({ body, client, request: request2, socket, contentLength, header, expectsPayload });
} else {
assert(false);
}
return true;
}
- function writeH2(client, session, request7) {
- const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request7;
+ function writeH2(client, session, request2) {
+ const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2;
let headers;
if (typeof reqHeaders === "string") headers = Request[kHTTP2CopyHeaders](reqHeaders.trim());
else headers = reqHeaders;
if (upgrade) {
- errorRequest(client, request7, new Error("Upgrade not supported for H2"));
+ errorRequest(client, request2, new Error("Upgrade not supported for H2"));
return false;
}
try {
- request7.onConnect((err) => {
- if (request7.aborted || request7.completed) {
+ request2.onConnect((err) => {
+ if (request2.aborted || request2.completed) {
return;
}
- errorRequest(client, request7, err || new RequestAbortedError());
+ errorRequest(client, request2, err || new RequestAbortedError());
});
} catch (err) {
- errorRequest(client, request7, err);
+ errorRequest(client, request2, err);
}
- if (request7.aborted) {
+ if (request2.aborted) {
return false;
}
let stream;
@@ -8120,11 +8120,11 @@ upgrade: ${upgrade}\r
session.ref();
stream = session.request(headers, { endStream: false, signal });
if (stream.id && !stream.pending) {
- request7.onUpgrade(null, null, stream);
+ request2.onUpgrade(null, null, stream);
++h2State.openStreams;
} else {
stream.once("ready", () => {
- request7.onUpgrade(null, null, stream);
+ request2.onUpgrade(null, null, stream);
++h2State.openStreams;
});
}
@@ -8142,14 +8142,14 @@ upgrade: ${upgrade}\r
}
let contentLength = util.bodyLength(body);
if (contentLength == null) {
- contentLength = request7.contentLength;
+ contentLength = request2.contentLength;
}
if (contentLength === 0 || !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength != null && request7.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength != null && request2.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- errorRequest(client, request7, new RequestContentLengthMismatchError());
+ errorRequest(client, request2, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
@@ -8174,15 +8174,15 @@ upgrade: ${upgrade}\r
++h2State.openStreams;
stream.once("response", (headers2) => {
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
- if (request7.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === false) {
+ if (request2.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === false) {
stream.pause();
}
});
stream.once("end", () => {
- request7.onComplete([]);
+ request2.onComplete([]);
});
stream.on("data", (chunk) => {
- if (request7.onData(chunk) === false) {
+ if (request2.onData(chunk) === false) {
stream.pause();
}
});
@@ -8200,7 +8200,7 @@ upgrade: ${upgrade}\r
});
stream.once("frameError", (type, code) => {
const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`);
- errorRequest(client, request7, err);
+ errorRequest(client, request2, err);
if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
h2State.streams -= 1;
util.destroy(stream, err);
@@ -8209,20 +8209,20 @@ upgrade: ${upgrade}\r
return true;
function writeBodyH2() {
if (!body) {
- request7.onRequestSent();
+ request2.onRequestSent();
} else if (util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
stream.cork();
stream.write(body);
stream.uncork();
stream.end();
- request7.onBodySent(body);
- request7.onRequestSent();
+ request2.onBodySent(body);
+ request2.onRequestSent();
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
writeIterable({
client,
- request: request7,
+ request: request2,
contentLength,
h2stream: stream,
expectsPayload,
@@ -8234,7 +8234,7 @@ upgrade: ${upgrade}\r
writeBlob({
body,
client,
- request: request7,
+ request: request2,
contentLength,
expectsPayload,
h2stream: stream,
@@ -8246,7 +8246,7 @@ upgrade: ${upgrade}\r
writeStream({
body,
client,
- request: request7,
+ request: request2,
contentLength,
expectsPayload,
socket: client[kSocket],
@@ -8257,7 +8257,7 @@ upgrade: ${upgrade}\r
writeIterable({
body,
client,
- request: request7,
+ request: request2,
contentLength,
expectsPayload,
header: "",
@@ -8269,11 +8269,11 @@ upgrade: ${upgrade}\r
}
}
}
- function writeStream({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
+ function writeStream({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
if (client[kHTTPConnVersion] === "h2") {
let onPipeData = function(chunk) {
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
};
const pipe = pipeline(
body,
@@ -8283,7 +8283,7 @@ upgrade: ${upgrade}\r
util.destroy(body, err);
util.destroy(h2stream, err);
} else {
- request7.onRequestSent();
+ request2.onRequestSent();
}
}
);
@@ -8295,7 +8295,7 @@ upgrade: ${upgrade}\r
return;
}
let finished = false;
- const writer = new AsyncWriter({ socket, request: request7, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ socket, request: request2, contentLength, client, expectsPayload, header });
const onData = function(chunk) {
if (finished) {
return;
@@ -8351,7 +8351,7 @@ upgrade: ${upgrade}\r
}
socket.on("drain", onDrain).on("error", onFinished);
}
- async function writeBlob({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
+ async function writeBlob({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
assert(contentLength === body.size, "blob body must have content length");
const isH2 = client[kHTTPConnVersion] === "h2";
try {
@@ -8371,8 +8371,8 @@ upgrade: ${upgrade}\r
socket.write(buffer);
socket.uncork();
}
- request7.onBodySent(buffer);
- request7.onRequestSent();
+ request2.onBodySent(buffer);
+ request2.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -8381,7 +8381,7 @@ upgrade: ${upgrade}\r
util.destroy(isH2 ? h2stream : socket, err);
}
}
- async function writeIterable({ h2stream, body, client, request: request7, socket, contentLength, header, expectsPayload }) {
+ async function writeIterable({ h2stream, body, client, request: request2, socket, contentLength, header, expectsPayload }) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -8407,7 +8407,7 @@ upgrade: ${upgrade}\r
throw socket[kError];
}
const res = h2stream.write(chunk);
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
if (!res) {
await waitForDrain();
}
@@ -8415,14 +8415,14 @@ upgrade: ${upgrade}\r
} catch (err) {
h2stream.destroy(err);
} finally {
- request7.onRequestSent();
+ request2.onRequestSent();
h2stream.end();
h2stream.off("close", onDrain).off("drain", onDrain);
}
return;
}
socket.on("close", onDrain).on("drain", onDrain);
- const writer = new AsyncWriter({ socket, request: request7, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ socket, request: request2, contentLength, client, expectsPayload, header });
try {
for await (const chunk of body) {
if (socket[kError]) {
@@ -8440,9 +8440,9 @@ upgrade: ${upgrade}\r
}
}
var AsyncWriter = class {
- constructor({ socket, request: request7, contentLength, client, expectsPayload, header }) {
+ constructor({ socket, request: request2, contentLength, client, expectsPayload, header }) {
this.socket = socket;
- this.request = request7;
+ this.request = request2;
this.contentLength = contentLength;
this.client = client;
this.bytesWritten = 0;
@@ -8451,7 +8451,7 @@ upgrade: ${upgrade}\r
socket[kWriting] = true;
}
write(chunk) {
- const { socket, request: request7, contentLength, client, bytesWritten, expectsPayload, header } = this;
+ const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this;
if (socket[kError]) {
throw socket[kError];
}
@@ -8490,7 +8490,7 @@ ${len.toString(16)}\r
this.bytesWritten += len;
const ret = socket.write(chunk);
socket.uncork();
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
if (!ret) {
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
if (socket[kParser].timeout.refresh) {
@@ -8501,8 +8501,8 @@ ${len.toString(16)}\r
return ret;
}
end() {
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request7 } = this;
- request7.onRequestSent();
+ const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this;
+ request2.onRequestSent();
socket[kWriting] = false;
if (socket[kError]) {
throw socket[kError];
@@ -8545,10 +8545,10 @@ ${len.toString(16)}\r
}
}
};
- function errorRequest(client, request7, err) {
+ function errorRequest(client, request2, err) {
try {
- request7.onError(err);
- assert(request7.aborted);
+ request2.onError(err);
+ assert(request2.aborted);
} catch (err2) {
client.emit("error", err2);
}
@@ -9661,10 +9661,10 @@ var require_api_request = __commonJS({
}
}
};
- function request7(opts, callback) {
+ function request2(opts, callback) {
if (callback === void 0) {
return new Promise((resolve, reject) => {
- request7.call(this, opts, (err, data) => {
+ request2.call(this, opts, (err, data) => {
return err ? reject(err) : resolve(data);
});
});
@@ -9679,7 +9679,7 @@ var require_api_request = __commonJS({
queueMicrotask(() => callback(err, { opaque }));
}
}
- module2.exports = request7;
+ module2.exports = request2;
module2.exports.RequestHandler = RequestHandler;
}
});
@@ -10393,7 +10393,7 @@ var require_mock_utils = __commonJS({
const headersMatch = matchHeaders(mockDispatch2, headers);
return pathMatch && methodMatch && bodyMatch && headersMatch;
}
- function getResponseData7(data) {
+ function getResponseData2(data) {
if (Buffer.isBuffer(data)) {
return data;
} else if (typeof data === "object") {
@@ -10498,7 +10498,7 @@ var require_mock_utils = __commonJS({
body.then((newData) => handleReply(mockDispatches, newData));
return;
}
- const responseData = getResponseData7(body);
+ const responseData = getResponseData2(body);
const responseHeaders = generateKeyValues(headers);
const responseTrailers = generateKeyValues(trailers);
handler.abort = nop;
@@ -10555,7 +10555,7 @@ var require_mock_utils = __commonJS({
}
}
module2.exports = {
- getResponseData: getResponseData7,
+ getResponseData: getResponseData2,
getMockDispatch,
addMockDispatch,
deleteMockDispatch,
@@ -10577,7 +10577,7 @@ var require_mock_utils = __commonJS({
var require_mock_interceptor = __commonJS({
"node_modules/@actions/http-client/node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) {
"use strict";
- var { getResponseData: getResponseData7, buildKey, addMockDispatch } = require_mock_utils();
+ var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils();
var {
kDispatches,
kDispatchKey,
@@ -10649,7 +10649,7 @@ var require_mock_interceptor = __commonJS({
this[kContentLength] = false;
}
createMockScopeDispatchData(statusCode, data, responseOptions = {}) {
- const responseData = getResponseData7(data);
+ 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 };
@@ -12357,7 +12357,7 @@ var require_request2 = __commonJS({
policyContainer: makePolicyContainer()
}
};
- let request7 = null;
+ let request2 = null;
let fallbackMode = null;
const baseUrl2 = this[kRealm].settingsObject.baseUrl;
let signal = null;
@@ -12373,17 +12373,17 @@ var require_request2 = __commonJS({
"Request cannot be constructed from a URL that includes credentials: " + input
);
}
- request7 = makeRequest({ urlList: [parsedURL] });
+ request2 = makeRequest({ urlList: [parsedURL] });
fallbackMode = "cors";
} else {
assert(input instanceof _Request);
- request7 = input[kState];
+ request2 = input[kState];
signal = input[kSignal];
}
const origin = this[kRealm].settingsObject.origin;
let window = "client";
- if (request7.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request7.window, origin)) {
- window = request7.window;
+ 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`);
@@ -12391,66 +12391,66 @@ var require_request2 = __commonJS({
if ("window" in init) {
window = "no-window";
}
- request7 = makeRequest({
+ 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: request7.method,
+ method: request2.method,
// header list A copy of request’s header list.
// undici implementation note: headersList is cloned in makeRequest
- headersList: request7.headersList,
+ headersList: request2.headersList,
// unsafe-request flag Set.
- unsafeRequest: request7.unsafeRequest,
+ unsafeRequest: request2.unsafeRequest,
// client This’s relevant settings object.
client: this[kRealm].settingsObject,
// window window.
window,
// priority request’s priority.
- priority: request7.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: request7.origin,
+ origin: request2.origin,
// referrer request’s referrer.
- referrer: request7.referrer,
+ referrer: request2.referrer,
// referrer policy request’s referrer policy.
- referrerPolicy: request7.referrerPolicy,
+ referrerPolicy: request2.referrerPolicy,
// mode request’s mode.
- mode: request7.mode,
+ mode: request2.mode,
// credentials mode request’s credentials mode.
- credentials: request7.credentials,
+ credentials: request2.credentials,
// cache mode request’s cache mode.
- cache: request7.cache,
+ cache: request2.cache,
// redirect mode request’s redirect mode.
- redirect: request7.redirect,
+ redirect: request2.redirect,
// integrity metadata request’s integrity metadata.
- integrity: request7.integrity,
+ integrity: request2.integrity,
// keepalive request’s keepalive.
- keepalive: request7.keepalive,
+ keepalive: request2.keepalive,
// reload-navigation flag request’s reload-navigation flag.
- reloadNavigation: request7.reloadNavigation,
+ reloadNavigation: request2.reloadNavigation,
// history-navigation flag request’s history-navigation flag.
- historyNavigation: request7.historyNavigation,
+ historyNavigation: request2.historyNavigation,
// URL list A clone of request’s URL list.
- urlList: [...request7.urlList]
+ urlList: [...request2.urlList]
});
const initHasKey = Object.keys(init).length !== 0;
if (initHasKey) {
- if (request7.mode === "navigate") {
- request7.mode = "same-origin";
+ if (request2.mode === "navigate") {
+ request2.mode = "same-origin";
}
- request7.reloadNavigation = false;
- request7.historyNavigation = false;
- request7.origin = "client";
- request7.referrer = "client";
- request7.referrerPolicy = "";
- request7.url = request7.urlList[request7.urlList.length - 1];
- request7.urlList = [request7.url];
+ 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 === "") {
- request7.referrer = "no-referrer";
+ request2.referrer = "no-referrer";
} else {
let parsedReferrer;
try {
@@ -12459,14 +12459,14 @@ var require_request2 = __commonJS({
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)) {
- request7.referrer = "client";
+ request2.referrer = "client";
} else {
- request7.referrer = parsedReferrer;
+ request2.referrer = parsedReferrer;
}
}
}
if (init.referrerPolicy !== void 0) {
- request7.referrerPolicy = init.referrerPolicy;
+ request2.referrerPolicy = init.referrerPolicy;
}
let mode;
if (init.mode !== void 0) {
@@ -12481,27 +12481,27 @@ var require_request2 = __commonJS({
});
}
if (mode != null) {
- request7.mode = mode;
+ request2.mode = mode;
}
if (init.credentials !== void 0) {
- request7.credentials = init.credentials;
+ request2.credentials = init.credentials;
}
if (init.cache !== void 0) {
- request7.cache = init.cache;
+ request2.cache = init.cache;
}
- if (request7.cache === "only-if-cached" && request7.mode !== "same-origin") {
+ 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) {
- request7.redirect = init.redirect;
+ request2.redirect = init.redirect;
}
if (init.integrity != null) {
- request7.integrity = String(init.integrity);
+ request2.integrity = String(init.integrity);
}
if (init.keepalive !== void 0) {
- request7.keepalive = Boolean(init.keepalive);
+ request2.keepalive = Boolean(init.keepalive);
}
if (init.method !== void 0) {
let method = init.method;
@@ -12512,12 +12512,12 @@ var require_request2 = __commonJS({
throw new TypeError(`'${method}' HTTP method is unsupported.`);
}
method = normalizeMethodRecord[method] ?? normalizeMethod(method);
- request7.method = method;
+ request2.method = method;
}
if (init.signal !== void 0) {
signal = init.signal;
}
- this[kState] = request7;
+ this[kState] = request2;
const ac = new AbortController();
this[kSignal] = ac.signal;
this[kSignal][kRealm] = this[kRealm];
@@ -12551,13 +12551,13 @@ var require_request2 = __commonJS({
}
}
this[kHeaders] = new Headers(kConstruct);
- this[kHeaders][kHeadersList] = request7.headersList;
+ this[kHeaders][kHeadersList] = request2.headersList;
this[kHeaders][kGuard] = "request";
this[kHeaders][kRealm] = this[kRealm];
if (mode === "no-cors") {
- if (!corsSafeListedMethodsSet.has(request7.method)) {
+ if (!corsSafeListedMethodsSet.has(request2.method)) {
throw new TypeError(
- `'${request7.method} is unsupported in no-cors mode.`
+ `'${request2.method} is unsupported in no-cors mode.`
);
}
this[kHeaders][kGuard] = "request-no-cors";
@@ -12576,14 +12576,14 @@ var require_request2 = __commonJS({
}
}
const inputBody = input instanceof _Request ? input[kState].body : null;
- if ((init.body != null || inputBody != null) && (request7.method === "GET" || request7.method === "HEAD")) {
+ 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,
- request7.keepalive
+ request2.keepalive
);
initBody = extractedBody;
if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) {
@@ -12595,12 +12595,12 @@ var require_request2 = __commonJS({
if (initBody != null && init.duplex == null) {
throw new TypeError("RequestInit: duplex option is required when sending a body.");
}
- if (request7.mode !== "same-origin" && request7.mode !== "cors") {
+ if (request2.mode !== "same-origin" && request2.mode !== "cors") {
throw new TypeError(
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
);
}
- request7.useCORSPreflightFlag = true;
+ request2.useCORSPreflightFlag = true;
}
let finalBody = inputOrInitBody;
if (initBody == null && inputBody != null) {
@@ -12770,7 +12770,7 @@ var require_request2 = __commonJS({
};
mixinBody(Request);
function makeRequest(init) {
- const request7 = {
+ const request2 = {
method: "GET",
localURLsOnly: false,
unsafeRequest: false,
@@ -12809,13 +12809,13 @@ var require_request2 = __commonJS({
...init,
headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()
};
- request7.url = request7.urlList[0];
- return request7;
+ request2.url = request2.urlList[0];
+ return request2;
}
- function cloneRequest(request7) {
- const newRequest = makeRequest({ ...request7, body: null });
- if (request7.body != null) {
- newRequest.body = cloneBody(request7.body);
+ function cloneRequest(request2) {
+ const newRequest = makeRequest({ ...request2, body: null });
+ if (request2.body != null) {
+ newRequest.body = cloneBody(request2.body);
}
return newRequest;
}
@@ -13048,14 +13048,14 @@ var require_fetch = __commonJS({
p.reject(e);
return p.promise;
}
- const request7 = requestObject[kState];
+ const request2 = requestObject[kState];
if (requestObject.signal.aborted) {
- abortFetch(p, request7, null, requestObject.signal.reason);
+ abortFetch(p, request2, null, requestObject.signal.reason);
return p.promise;
}
- const globalObject = request7.client.globalObject;
+ const globalObject = request2.client.globalObject;
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
- request7.serviceWorkers = "none";
+ request2.serviceWorkers = "none";
}
let responseObject = null;
const relevantRealm = null;
@@ -13067,7 +13067,7 @@ var require_fetch = __commonJS({
locallyAborted = true;
assert(controller != null);
controller.abort(requestObject.signal.reason);
- abortFetch(p, request7, responseObject, requestObject.signal.reason);
+ abortFetch(p, request2, responseObject, requestObject.signal.reason);
}
);
const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch");
@@ -13076,7 +13076,7 @@ var require_fetch = __commonJS({
return Promise.resolve();
}
if (response.aborted) {
- abortFetch(p, request7, responseObject, controller.serializedAbortReason);
+ abortFetch(p, request2, responseObject, controller.serializedAbortReason);
return Promise.resolve();
}
if (response.type === "error") {
@@ -13094,7 +13094,7 @@ var require_fetch = __commonJS({
p.resolve(responseObject);
};
controller = fetching({
- request: request7,
+ request: request2,
processResponseEndOfBody: handleFetchDone,
processResponse,
dispatcher: init.dispatcher ?? getGlobalDispatcher()
@@ -13139,13 +13139,13 @@ var require_fetch = __commonJS({
performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis2, cacheState);
}
}
- function abortFetch(p, request7, responseObject, error) {
+ function abortFetch(p, request2, responseObject, error) {
if (!error) {
error = new DOMException2("The operation was aborted.", "AbortError");
}
p.reject(error);
- if (request7.body != null && isReadable(request7.body?.stream)) {
- request7.body.stream.cancel(error).catch((err) => {
+ if (request2.body != null && isReadable(request2.body?.stream)) {
+ request2.body.stream.cancel(error).catch((err) => {
if (err.code === "ERR_INVALID_STATE") {
return;
}
@@ -13166,7 +13166,7 @@ var require_fetch = __commonJS({
}
}
function fetching({
- request: request7,
+ request: request2,
processRequestBodyChunkLength,
processRequestEndOfBody,
processResponse,
@@ -13178,9 +13178,9 @@ var require_fetch = __commonJS({
}) {
let taskDestination = null;
let crossOriginIsolatedCapability = false;
- if (request7.client != null) {
- taskDestination = request7.client.globalObject;
- crossOriginIsolatedCapability = request7.client.crossOriginIsolatedCapability;
+ if (request2.client != null) {
+ taskDestination = request2.client.globalObject;
+ crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability;
}
const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
const timingInfo = createOpaqueTimingInfo({
@@ -13188,7 +13188,7 @@ var require_fetch = __commonJS({
});
const fetchParams = {
controller: new Fetch(dispatcher),
- request: request7,
+ request: request2,
timingInfo,
processRequestBodyChunkLength,
processRequestEndOfBody,
@@ -13198,32 +13198,32 @@ var require_fetch = __commonJS({
taskDestination,
crossOriginIsolatedCapability
};
- assert(!request7.body || request7.body.stream);
- if (request7.window === "client") {
- request7.window = request7.client?.globalObject?.constructor?.name === "Window" ? request7.client : "no-window";
+ assert(!request2.body || request2.body.stream);
+ if (request2.window === "client") {
+ request2.window = request2.client?.globalObject?.constructor?.name === "Window" ? request2.client : "no-window";
}
- if (request7.origin === "client") {
- request7.origin = request7.client?.origin;
+ if (request2.origin === "client") {
+ request2.origin = request2.client?.origin;
}
- if (request7.policyContainer === "client") {
- if (request7.client != null) {
- request7.policyContainer = clonePolicyContainer(
- request7.client.policyContainer
+ if (request2.policyContainer === "client") {
+ if (request2.client != null) {
+ request2.policyContainer = clonePolicyContainer(
+ request2.client.policyContainer
);
} else {
- request7.policyContainer = makePolicyContainer();
+ request2.policyContainer = makePolicyContainer();
}
}
- if (!request7.headersList.contains("accept")) {
+ if (!request2.headersList.contains("accept")) {
const value = "*/*";
- request7.headersList.append("accept", value);
+ request2.headersList.append("accept", value);
}
- if (!request7.headersList.contains("accept-language")) {
- request7.headersList.append("accept-language", "*");
+ if (!request2.headersList.contains("accept-language")) {
+ request2.headersList.append("accept-language", "*");
}
- if (request7.priority === null) {
+ if (request2.priority === null) {
}
- if (subresourceSet.has(request7.destination)) {
+ if (subresourceSet.has(request2.destination)) {
}
mainFetch(fetchParams).catch((err) => {
fetchParams.controller.terminate(err);
@@ -13231,50 +13231,50 @@ var require_fetch = __commonJS({
return fetchParams.controller;
}
async function mainFetch(fetchParams, recursive = false) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
- if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
+ if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) {
response = makeNetworkError("local URLs only");
}
- tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
- if (requestBadPort(request7) === "blocked") {
+ tryUpgradeRequestToAPotentiallyTrustworthyURL(request2);
+ if (requestBadPort(request2) === "blocked") {
response = makeNetworkError("bad port");
}
- if (request7.referrerPolicy === "") {
- request7.referrerPolicy = request7.policyContainer.referrerPolicy;
+ if (request2.referrerPolicy === "") {
+ request2.referrerPolicy = request2.policyContainer.referrerPolicy;
}
- if (request7.referrer !== "no-referrer") {
- request7.referrer = determineRequestsReferrer(request7);
+ if (request2.referrer !== "no-referrer") {
+ request2.referrer = determineRequestsReferrer(request2);
}
if (response === null) {
response = await (async () => {
- const currentURL = requestCurrentURL(request7);
+ 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, request7.url) && request7.responseTainting === "basic" || // request’s current URL’s scheme is "data"
+ 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"
- (request7.mode === "navigate" || request7.mode === "websocket")
+ (request2.mode === "navigate" || request2.mode === "websocket")
) {
- request7.responseTainting = "basic";
+ request2.responseTainting = "basic";
return await schemeFetch(fetchParams);
}
- if (request7.mode === "same-origin") {
+ if (request2.mode === "same-origin") {
return makeNetworkError('request mode cannot be "same-origin"');
}
- if (request7.mode === "no-cors") {
- if (request7.redirect !== "follow") {
+ if (request2.mode === "no-cors") {
+ if (request2.redirect !== "follow") {
return makeNetworkError(
'redirect mode cannot be "follow" for "no-cors" request'
);
}
- request7.responseTainting = "opaque";
+ request2.responseTainting = "opaque";
return await schemeFetch(fetchParams);
}
- if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
+ if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
return makeNetworkError("URL scheme must be a HTTP(S) scheme");
}
- request7.responseTainting = "cors";
+ request2.responseTainting = "cors";
return await httpFetch(fetchParams);
})();
}
@@ -13282,13 +13282,13 @@ var require_fetch = __commonJS({
return response;
}
if (response.status !== 0 && !response.internalResponse) {
- if (request7.responseTainting === "cors") {
+ if (request2.responseTainting === "cors") {
}
- if (request7.responseTainting === "basic") {
+ if (request2.responseTainting === "basic") {
response = filterResponse(response, "basic");
- } else if (request7.responseTainting === "cors") {
+ } else if (request2.responseTainting === "cors") {
response = filterResponse(response, "cors");
- } else if (request7.responseTainting === "opaque") {
+ } else if (request2.responseTainting === "opaque") {
response = filterResponse(response, "opaque");
} else {
assert(false);
@@ -13296,26 +13296,26 @@ var require_fetch = __commonJS({
}
let internalResponse = response.status === 0 ? response : response.internalResponse;
if (internalResponse.urlList.length === 0) {
- internalResponse.urlList.push(...request7.urlList);
+ internalResponse.urlList.push(...request2.urlList);
}
- if (!request7.timingAllowFailed) {
+ if (!request2.timingAllowFailed) {
response.timingAllowPassed = true;
}
- if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range")) {
+ if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request2.headers.contains("range")) {
response = internalResponse = makeNetworkError();
}
- if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
+ if (response.status !== 0 && (request2.method === "HEAD" || request2.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
internalResponse.body = null;
fetchParams.controller.dump = true;
}
- if (request7.integrity) {
+ if (request2.integrity) {
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
- if (request7.responseTainting === "opaque" || response.body == null) {
+ if (request2.responseTainting === "opaque" || response.body == null) {
processBodyError(response.error);
return;
}
const processBody = (bytes) => {
- if (!bytesMatch(bytes, request7.integrity)) {
+ if (!bytesMatch(bytes, request2.integrity)) {
processBodyError("integrity mismatch");
return;
}
@@ -13331,8 +13331,8 @@ var require_fetch = __commonJS({
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
}
- const { request: request7 } = fetchParams;
- const { protocol: scheme } = requestCurrentURL(request7);
+ const { request: request2 } = fetchParams;
+ const { protocol: scheme } = requestCurrentURL(request2);
switch (scheme) {
case "about:": {
return Promise.resolve(makeNetworkError("about scheme is not supported"));
@@ -13341,12 +13341,12 @@ var require_fetch = __commonJS({
if (!resolveObjectURL) {
resolveObjectURL = require("buffer").resolveObjectURL;
}
- const blobURLEntry = requestCurrentURL(request7);
+ const blobURLEntry = requestCurrentURL(request2);
if (blobURLEntry.search.length !== 0) {
return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));
}
const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString());
- if (request7.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
+ if (request2.method !== "GET" || !isBlobLike(blobURLEntryObject)) {
return Promise.resolve(makeNetworkError("invalid method"));
}
const bodyWithType = safelyExtractBody(blobURLEntryObject);
@@ -13364,7 +13364,7 @@ var require_fetch = __commonJS({
return Promise.resolve(response);
}
case "data:": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
const dataURLStruct = dataURLProcessor(currentURL);
if (dataURLStruct === "failure") {
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
@@ -13446,41 +13446,41 @@ var require_fetch = __commonJS({
}
}
async function httpFetch(fetchParams) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
let actualResponse = null;
const timingInfo = fetchParams.timingInfo;
- if (request7.serviceWorkers === "all") {
+ if (request2.serviceWorkers === "all") {
}
if (response === null) {
- if (request7.redirect === "follow") {
- request7.serviceWorkers = "none";
+ if (request2.redirect === "follow") {
+ request2.serviceWorkers = "none";
}
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
- if (request7.responseTainting === "cors" && corsCheck(request7, response) === "failure") {
+ if (request2.responseTainting === "cors" && corsCheck(request2, response) === "failure") {
return makeNetworkError("cors failure");
}
- if (TAOCheck(request7, response) === "failure") {
- request7.timingAllowFailed = true;
+ if (TAOCheck(request2, response) === "failure") {
+ request2.timingAllowFailed = true;
}
}
- if ((request7.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
- request7.origin,
- request7.client,
- request7.destination,
+ 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 (request7.redirect !== "manual") {
+ if (request2.redirect !== "manual") {
fetchParams.controller.connection.destroy();
}
- if (request7.redirect === "error") {
+ if (request2.redirect === "error") {
response = makeNetworkError("unexpected redirect");
- } else if (request7.redirect === "manual") {
+ } else if (request2.redirect === "manual") {
response = actualResponse;
- } else if (request7.redirect === "follow") {
+ } else if (request2.redirect === "follow") {
response = await httpRedirectFetch(fetchParams, response);
} else {
assert(false);
@@ -13490,13 +13490,13 @@ var require_fetch = __commonJS({
return response;
}
function httpRedirectFetch(fetchParams, response) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
const actualResponse = response.internalResponse ? response.internalResponse : response;
let locationURL;
try {
locationURL = responseLocationURL(
actualResponse,
- requestCurrentURL(request7).hash
+ requestCurrentURL(request2).hash
);
if (locationURL == null) {
return response;
@@ -13507,63 +13507,63 @@ var require_fetch = __commonJS({
if (!urlIsHttpHttpsScheme(locationURL)) {
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
}
- if (request7.redirectCount === 20) {
+ if (request2.redirectCount === 20) {
return Promise.resolve(makeNetworkError("redirect count exceeded"));
}
- request7.redirectCount += 1;
- if (request7.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request7, locationURL)) {
+ 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 (request7.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
+ if (request2.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
return Promise.resolve(makeNetworkError(
'URL cannot contain credentials for request mode "cors"'
));
}
- if (actualResponse.status !== 303 && request7.body != null && request7.body.source == null) {
+ if (actualResponse.status !== 303 && request2.body != null && request2.body.source == null) {
return Promise.resolve(makeNetworkError());
}
- if ([301, 302].includes(actualResponse.status) && request7.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request7.method)) {
- request7.method = "GET";
- request7.body = null;
+ 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) {
- request7.headersList.delete(headerName);
+ request2.headersList.delete(headerName);
}
}
- if (!sameOrigin(requestCurrentURL(request7), locationURL)) {
- request7.headersList.delete("authorization");
- request7.headersList.delete("proxy-authorization", true);
- request7.headersList.delete("cookie");
- request7.headersList.delete("host");
+ if (!sameOrigin(requestCurrentURL(request2), locationURL)) {
+ request2.headersList.delete("authorization");
+ request2.headersList.delete("proxy-authorization", true);
+ request2.headersList.delete("cookie");
+ request2.headersList.delete("host");
}
- if (request7.body != null) {
- assert(request7.body.source != null);
- request7.body = safelyExtractBody(request7.body.source)[0];
+ 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;
}
- request7.urlList.push(locationURL);
- setRequestReferrerPolicyOnRedirect(request7, actualResponse);
+ request2.urlList.push(locationURL);
+ setRequestReferrerPolicyOnRedirect(request2, actualResponse);
return mainFetch(fetchParams, true);
}
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let httpFetchParams = null;
let httpRequest = null;
let response = null;
const httpCache = null;
const revalidatingFlag = false;
- if (request7.window === "no-window" && request7.redirect === "error") {
+ if (request2.window === "no-window" && request2.redirect === "error") {
httpFetchParams = fetchParams;
- httpRequest = request7;
+ httpRequest = request2;
} else {
- httpRequest = makeRequest(request7);
+ httpRequest = makeRequest(request2);
httpFetchParams = { ...fetchParams };
httpFetchParams.request = httpRequest;
}
- const includeCredentials = request7.credentials === "include" || request7.credentials === "same-origin" && request7.responseTainting === "basic";
+ 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)) {
@@ -13640,7 +13640,7 @@ var require_fetch = __commonJS({
}
response.requestIncludesCredentials = includeCredentials;
if (response.status === 407) {
- if (request7.window === "no-window") {
+ if (request2.window === "no-window") {
return makeNetworkError();
}
if (isCancelled(fetchParams)) {
@@ -13652,7 +13652,7 @@ var require_fetch = __commonJS({
// 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
- (request7.body == null || request7.body.source != null)
+ (request2.body == null || request2.body.source != null)
) {
if (isCancelled(fetchParams)) {
return makeAppropriateNetworkError(fetchParams);
@@ -13680,21 +13680,21 @@ var require_fetch = __commonJS({
}
}
};
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
const timingInfo = fetchParams.timingInfo;
const httpCache = null;
if (httpCache == null) {
- request7.cache = "no-store";
+ request2.cache = "no-store";
}
const newConnection = forceNewConnection ? "yes" : "no";
- if (request7.mode === "websocket") {
+ if (request2.mode === "websocket") {
} else {
}
let requestBody = null;
- if (request7.body == null && fetchParams.processRequestEndOfBody) {
+ if (request2.body == null && fetchParams.processRequestEndOfBody) {
queueMicrotask(() => fetchParams.processRequestEndOfBody());
- } else if (request7.body != null) {
+ } else if (request2.body != null) {
const processBodyChunk = async function* (bytes) {
if (isCancelled(fetchParams)) {
return;
@@ -13722,7 +13722,7 @@ var require_fetch = __commonJS({
};
requestBody = async function* () {
try {
- for await (const bytes of request7.body.stream) {
+ for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
}
processEndOfBody();
@@ -13834,17 +13834,17 @@ var require_fetch = __commonJS({
}
return response;
async function dispatch({ body }) {
- const url = requestCurrentURL(request7);
+ 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: request7.method,
- body: fetchParams.controller.dispatcher.isMockActive ? request7.body && (request7.body.source || request7.body.stream) : body,
- headers: request7.headersList.entries,
+ method: request2.method,
+ body: fetchParams.controller.dispatcher.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body,
+ headers: request2.headersList.entries,
maxRedirections: 0,
- upgrade: request7.mode === "websocket" ? "websocket" : void 0
+ upgrade: request2.mode === "websocket" ? "websocket" : void 0
},
{
body: null,
@@ -13890,8 +13890,8 @@ var require_fetch = __commonJS({
}
this.body = new Readable({ read: resume });
const decoders = [];
- const willFollow = request7.redirect === "follow" && location && redirectStatusSet.has(status);
- if (request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ const willFollow = request2.redirect === "follow" && location && redirectStatusSet.has(status);
+ if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
for (const coding of codings) {
if (coding === "x-gzip" || coding === "gzip") {
decoders.push(zlib.createGunzip({
@@ -14861,34 +14861,34 @@ var require_cache = __commonJS({
}
this.#relevantRequestResponseList = arguments[1];
}
- async match(request7, options = {}) {
+ async match(request2, options = {}) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" });
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options);
- const p = await this.matchAll(request7, options);
+ const p = await this.matchAll(request2, options);
if (p.length === 0) {
return;
}
return p[0];
}
- async matchAll(request7 = void 0, options = {}) {
+ async matchAll(request2 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request7 !== void 0) {
- if (request7 instanceof Request) {
- r = request7[kState];
+ if (request2 !== void 0) {
+ if (request2 instanceof Request) {
+ r = request2[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request7 === "string") {
- r = new Request(request7)[kState];
+ } else if (typeof request2 === "string") {
+ r = new Request(request2)[kState];
}
}
const responses = [];
- if (request7 === void 0) {
+ if (request2 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
responses.push(requestResponse[1]);
}
@@ -14910,11 +14910,11 @@ var require_cache = __commonJS({
}
return Object.freeze(responseList);
}
- async add(request7) {
+ async add(request2) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" });
- request7 = webidl.converters.RequestInfo(request7);
- const requests = [request7];
+ request2 = webidl.converters.RequestInfo(request2);
+ const requests = [request2];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
}
@@ -14924,11 +14924,11 @@ var require_cache = __commonJS({
requests = webidl.converters["sequence"](requests);
const responsePromises = [];
const requestList = [];
- for (const request7 of requests) {
- if (typeof request7 === "string") {
+ for (const request2 of requests) {
+ if (typeof request2 === "string") {
continue;
}
- const r = request7[kState];
+ const r = request2[kState];
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
throw webidl.errors.exception({
header: "Cache.addAll",
@@ -14937,8 +14937,8 @@ var require_cache = __commonJS({
}
}
const fetchControllers = [];
- for (const request7 of requests) {
- const r = new Request(request7)[kState];
+ for (const request2 of requests) {
+ const r = new Request(request2)[kState];
if (!urlIsHttpHttpsScheme(r.url)) {
throw webidl.errors.exception({
header: "Cache.addAll",
@@ -15016,16 +15016,16 @@ var require_cache = __commonJS({
});
return cacheJobPromise.promise;
}
- async put(request7, response) {
+ async put(request2, response) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" });
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
response = webidl.converters.Response(response);
let innerRequest = null;
- if (request7 instanceof Request) {
- innerRequest = request7[kState];
+ if (request2 instanceof Request) {
+ innerRequest = request2[kState];
} else {
- innerRequest = new Request(request7)[kState];
+ innerRequest = new Request(request2)[kState];
}
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
throw webidl.errors.exception({
@@ -15096,20 +15096,20 @@ var require_cache = __commonJS({
});
return cacheJobPromise.promise;
}
- async delete(request7, options = {}) {
+ async delete(request2, options = {}) {
webidl.brandCheck(this, _Cache);
webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" });
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request7 instanceof Request) {
- r = request7[kState];
+ if (request2 instanceof Request) {
+ r = request2[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return false;
}
} else {
- assert(typeof request7 === "string");
- r = new Request(request7)[kState];
+ assert(typeof request2 === "string");
+ r = new Request(request2)[kState];
}
const operations = [];
const operation = {
@@ -15141,24 +15141,24 @@ var require_cache = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions} options
* @returns {readonly Request[]}
*/
- async keys(request7 = void 0, options = {}) {
+ async keys(request2 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options);
let r = null;
- if (request7 !== void 0) {
- if (request7 instanceof Request) {
- r = request7[kState];
+ if (request2 !== void 0) {
+ if (request2 instanceof Request) {
+ r = request2[kState];
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request7 === "string") {
- r = new Request(request7)[kState];
+ } else if (typeof request2 === "string") {
+ r = new Request(request2)[kState];
}
}
const promise = createDeferredPromise();
const requests = [];
- if (request7 === void 0) {
+ if (request2 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
requests.push(requestResponse[0]);
}
@@ -15170,12 +15170,12 @@ var require_cache = __commonJS({
}
queueMicrotask(() => {
const requestList = [];
- for (const request8 of requests) {
+ for (const request3 of requests) {
const requestObject = new Request("https://a");
- requestObject[kState] = request8;
- requestObject[kHeaders][kHeadersList] = request8.headersList;
+ requestObject[kState] = request3;
+ requestObject[kHeaders][kHeadersList] = request3.headersList;
requestObject[kHeaders][kGuard] = "immutable";
- requestObject[kRealm] = request8.client;
+ requestObject[kRealm] = request3.client;
requestList.push(requestObject);
}
promise.resolve(Object.freeze(requestList));
@@ -15290,9 +15290,9 @@ var require_cache = __commonJS({
* @param {import('../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
- #requestMatchesCachedItem(requestQuery, request7, response = null, options) {
+ #requestMatchesCachedItem(requestQuery, request2, response = null, options) {
const queryURL = new URL(requestQuery.url);
- const cachedURL = new URL(request7.url);
+ const cachedURL = new URL(request2.url);
if (options?.ignoreSearch) {
cachedURL.search = "";
queryURL.search = "";
@@ -15308,7 +15308,7 @@ var require_cache = __commonJS({
if (fieldValue === "*") {
return false;
}
- const requestValue = request7.headersList.get(fieldValue);
+ const requestValue = request2.headersList.get(fieldValue);
const queryValue = requestQuery.headersList.get(fieldValue);
if (requestValue !== queryValue) {
return false;
@@ -15384,21 +15384,21 @@ var require_cachestorage = __commonJS({
webidl.illegalConstructor();
}
}
- async match(request7, options = {}) {
+ async match(request2, options = {}) {
webidl.brandCheck(this, _CacheStorage);
webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.match" });
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.MultiCacheQueryOptions(options);
if (options.cacheName != null) {
if (this.#caches.has(options.cacheName)) {
const cacheList = this.#caches.get(options.cacheName);
const cache = new Cache(kConstruct, cacheList);
- return await cache.match(request7, options);
+ return await cache.match(request2, options);
}
} else {
for (const cacheList of this.#caches.values()) {
const cache = new Cache(kConstruct, cacheList);
- const response = await cache.match(request7, options);
+ const response = await cache.match(request2, options);
if (response !== void 0) {
return response;
}
@@ -16322,7 +16322,7 @@ var require_connection = __commonJS({
function establishWebSocketConnection(url, protocols, ws, onEstablish, options) {
const requestURL = url;
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
- const request7 = makeRequest({
+ const request2 = makeRequest({
urlList: [requestURL],
serviceWorkers: "none",
referrer: "no-referrer",
@@ -16333,17 +16333,17 @@ var require_connection = __commonJS({
});
if (options.headers) {
const headersList = new Headers(options.headers)[kHeadersList];
- request7.headersList = headersList;
+ request2.headersList = headersList;
}
const keyValue = crypto.randomBytes(16).toString("base64");
- request7.headersList.append("sec-websocket-key", keyValue);
- request7.headersList.append("sec-websocket-version", "13");
+ request2.headersList.append("sec-websocket-key", keyValue);
+ request2.headersList.append("sec-websocket-version", "13");
for (const protocol of protocols) {
- request7.headersList.append("sec-websocket-protocol", protocol);
+ request2.headersList.append("sec-websocket-protocol", protocol);
}
const permessageDeflate = "";
const controller = fetching({
- request: request7,
+ request: request2,
useParallelQueue: true,
dispatcher: options.dispatcher ?? getGlobalDispatcher(),
processResponse(response) {
@@ -16375,7 +16375,7 @@ var require_connection = __commonJS({
return;
}
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
- if (secProtocol !== null && secProtocol !== request7.headersList.get("Sec-WebSocket-Protocol")) {
+ if (secProtocol !== null && secProtocol !== request2.headersList.get("Sec-WebSocket-Protocol")) {
failWebsocketConnection(ws, "Protocol was not set in the opening handshake.");
return;
}
@@ -17447,7 +17447,7 @@ var require_lib = __commonJS({
}
exports2.isHttps = isHttps;
var HttpClient = class {
- constructor(userAgent7, handlers, requestOptions) {
+ constructor(userAgent2, handlers, requestOptions) {
this._ignoreSslError = false;
this._allowRedirects = true;
this._allowRedirectDowngrade = false;
@@ -17456,7 +17456,7 @@ var require_lib = __commonJS({
this._maxRetries = 1;
this._keepAlive = false;
this._disposed = false;
- this.userAgent = userAgent7;
+ this.userAgent = userAgent2;
this.handlers = handlers || [];
this.requestOptions = requestOptions;
if (requestOptions) {
@@ -17749,14 +17749,14 @@ var require_lib = __commonJS({
}
_mergeHeaders(headers) {
if (this.requestOptions && this.requestOptions.headers) {
- return Object.assign({}, lowercaseKeys7(this.requestOptions.headers), lowercaseKeys7(headers || {}));
+ return Object.assign({}, lowercaseKeys2(this.requestOptions.headers), lowercaseKeys2(headers || {}));
}
- return lowercaseKeys7(headers || {});
+ return lowercaseKeys2(headers || {});
}
_getExistingOrDefaultHeader(additionalHeaders, header, _default) {
let clientHeader;
if (this.requestOptions && this.requestOptions.headers) {
- clientHeader = lowercaseKeys7(this.requestOptions.headers)[header];
+ clientHeader = lowercaseKeys2(this.requestOptions.headers)[header];
}
return additionalHeaders[header] || clientHeader || _default;
}
@@ -17891,7 +17891,7 @@ var require_lib = __commonJS({
}
};
exports2.HttpClient = HttpClient;
- var lowercaseKeys7 = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
+ var lowercaseKeys2 = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
}
});
@@ -19800,393 +19800,9 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
}
});
-// node_modules/@octokit/auth-app/node_modules/fast-content-type-parse/index.js
+// node_modules/fast-content-type-parse/index.js
var require_fast_content_type_parse = __commonJS({
- "node_modules/@octokit/auth-app/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 parse7(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;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- throw new TypeError("invalid parameter format");
- }
- 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;
- }
- if (index !== header.length) {
- throw new TypeError("invalid parameter format");
- }
- return result;
- }
- function safeParse7(header) {
- if (typeof header !== "string") {
- return defaultContentType;
- }
- let index = header.indexOf(";");
- const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
- if (mediaTypeRE.test(type) === false) {
- return defaultContentType;
- }
- const result = {
- type: type.toLowerCase(),
- parameters: new NullObject()
- };
- if (index === -1) {
- return result;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- return defaultContentType;
- }
- 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;
- }
- if (index !== header.length) {
- return defaultContentType;
- }
- return result;
- }
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
- module2.exports.defaultContentType = defaultContentType;
- }
-});
-
-// node_modules/@octokit/auth-oauth-app/node_modules/fast-content-type-parse/index.js
-var require_fast_content_type_parse2 = __commonJS({
- "node_modules/@octokit/auth-oauth-app/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 parse7(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;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- throw new TypeError("invalid parameter format");
- }
- 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;
- }
- if (index !== header.length) {
- throw new TypeError("invalid parameter format");
- }
- return result;
- }
- function safeParse7(header) {
- if (typeof header !== "string") {
- return defaultContentType;
- }
- let index = header.indexOf(";");
- const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
- if (mediaTypeRE.test(type) === false) {
- return defaultContentType;
- }
- const result = {
- type: type.toLowerCase(),
- parameters: new NullObject()
- };
- if (index === -1) {
- return result;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- return defaultContentType;
- }
- 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;
- }
- if (index !== header.length) {
- return defaultContentType;
- }
- return result;
- }
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
- module2.exports.defaultContentType = defaultContentType;
- }
-});
-
-// node_modules/@octokit/auth-oauth-user/node_modules/fast-content-type-parse/index.js
-var require_fast_content_type_parse3 = __commonJS({
- "node_modules/@octokit/auth-oauth-user/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 parse7(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;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- throw new TypeError("invalid parameter format");
- }
- 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;
- }
- if (index !== header.length) {
- throw new TypeError("invalid parameter format");
- }
- return result;
- }
- function safeParse7(header) {
- if (typeof header !== "string") {
- return defaultContentType;
- }
- let index = header.indexOf(";");
- const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
- if (mediaTypeRE.test(type) === false) {
- return defaultContentType;
- }
- const result = {
- type: type.toLowerCase(),
- parameters: new NullObject()
- };
- if (index === -1) {
- return result;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- return defaultContentType;
- }
- 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;
- }
- if (index !== header.length) {
- return defaultContentType;
- }
- return result;
- }
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
- module2.exports.defaultContentType = defaultContentType;
- }
-});
-
-// node_modules/@octokit/auth-oauth-device/node_modules/fast-content-type-parse/index.js
-var require_fast_content_type_parse4 = __commonJS({
- "node_modules/@octokit/auth-oauth-device/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 parse7(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;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- throw new TypeError("invalid parameter format");
- }
- 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;
- }
- if (index !== header.length) {
- throw new TypeError("invalid parameter format");
- }
- return result;
- }
- function safeParse7(header) {
- if (typeof header !== "string") {
- return defaultContentType;
- }
- let index = header.indexOf(";");
- const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
- if (mediaTypeRE.test(type) === false) {
- return defaultContentType;
- }
- const result = {
- type: type.toLowerCase(),
- parameters: new NullObject()
- };
- if (index === -1) {
- return result;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- return defaultContentType;
- }
- 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;
- }
- if (index !== header.length) {
- return defaultContentType;
- }
- return result;
- }
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
- module2.exports.defaultContentType = defaultContentType;
- }
-});
-
-// node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse/index.js
-var require_fast_content_type_parse5 = __commonJS({
- "node_modules/@octokit/oauth-methods/node_modules/fast-content-type-parse/index.js"(exports2, module2) {
+ "node_modules/fast-content-type-parse/index.js"(exports2, module2) {
"use strict";
var NullObject = function NullObject2() {
};
@@ -20197,7 +19813,7 @@ var require_fast_content_type_parse5 = __commonJS({
var defaultContentType = { type: "", parameters: new NullObject() };
Object.freeze(defaultContentType.parameters);
Object.freeze(defaultContentType);
- function parse7(header) {
+ function parse2(header) {
if (typeof header !== "string") {
throw new TypeError("argument header is required and must be a string");
}
@@ -20235,7 +19851,7 @@ var require_fast_content_type_parse5 = __commonJS({
}
return result;
}
- function safeParse7(header) {
+ function safeParse2(header) {
if (typeof header !== "string") {
return defaultContentType;
}
@@ -20273,9 +19889,9 @@ var require_fast_content_type_parse5 = __commonJS({
}
return result;
}
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
+ module2.exports.default = { parse: parse2, safeParse: safeParse2 };
+ module2.exports.parse = parse2;
+ module2.exports.safeParse = safeParse2;
module2.exports.defaultContentType = defaultContentType;
}
});
@@ -20508,102 +20124,6 @@ var require_retry2 = __commonJS({
}
});
-// node_modules/fast-content-type-parse/index.js
-var require_fast_content_type_parse6 = __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 parse7(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;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- throw new TypeError("invalid parameter format");
- }
- 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;
- }
- if (index !== header.length) {
- throw new TypeError("invalid parameter format");
- }
- return result;
- }
- function safeParse7(header) {
- if (typeof header !== "string") {
- return defaultContentType;
- }
- let index = header.indexOf(";");
- const type = index !== -1 ? header.slice(0, index).trim() : header.trim();
- if (mediaTypeRE.test(type) === false) {
- return defaultContentType;
- }
- const result = {
- type: type.toLowerCase(),
- parameters: new NullObject()
- };
- if (index === -1) {
- return result;
- }
- let key;
- let match;
- let value;
- paramRE.lastIndex = index;
- while (match = paramRE.exec(header)) {
- if (match.index !== index) {
- return defaultContentType;
- }
- 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;
- }
- if (index !== header.length) {
- return defaultContentType;
- }
- return result;
- }
- module2.exports.default = { parse: parse7, safeParse: safeParse7 };
- module2.exports.parse = parse7;
- module2.exports.safeParse = safeParse7;
- module2.exports.defaultContentType = defaultContentType;
- }
-});
-
// node_modules/undici/lib/core/symbols.js
var require_symbols6 = __commonJS({
"node_modules/undici/lib/core/symbols.js"(exports2, module2) {
@@ -21988,10 +21508,10 @@ var require_util8 = __commonJS({
}
return obj;
}
- function errorRequest(client, request7, err) {
+ function errorRequest(client, request2, err) {
try {
- request7.onError(err);
- assert(request7.aborted);
+ request2.onError(err);
+ assert(request2.aborted);
} catch (err2) {
client.emit("error", err2);
}
@@ -22627,7 +22147,7 @@ var require_request3 = __commonJS({
return this;
}
};
- function processHeader(request7, key, val) {
+ function processHeader(request2, key, val) {
if (val && (typeof val === "object" && !Array.isArray(val))) {
throw new InvalidArgumentError(`invalid ${key} header`);
} else if (val === void 0) {
@@ -22666,19 +22186,19 @@ var require_request3 = __commonJS({
} else {
val = `${val}`;
}
- if (request7.host === null && headerName === "host") {
+ if (request2.host === null && headerName === "host") {
if (typeof val !== "string") {
throw new InvalidArgumentError("invalid host header");
}
- request7.host = val;
- } else if (request7.contentLength === null && headerName === "content-length") {
- request7.contentLength = parseInt(val, 10);
- if (!Number.isFinite(request7.contentLength)) {
+ 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");
}
- } else if (request7.contentType === null && headerName === "content-type") {
- request7.contentType = val;
- request7.headers.push(key, val);
+ } 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") {
@@ -22687,12 +22207,12 @@ var require_request3 = __commonJS({
throw new InvalidArgumentError("invalid connection header");
}
if (value === "close") {
- request7.reset = true;
+ request2.reset = true;
}
} else if (headerName === "expect") {
throw new NotSupportedError("expect header not supported");
} else {
- request7.headers.push(key, val);
+ request2.headers.push(key, val);
}
}
module2.exports = Request;
@@ -25054,11 +24574,11 @@ var require_util9 = __commonJS({
function normalizeBinaryStringToUtf8(value) {
return Buffer.from(value, "binary").toString("utf8");
}
- function requestCurrentURL(request7) {
- return request7.urlList[request7.urlList.length - 1];
+ function requestCurrentURL(request2) {
+ return request2.urlList[request2.urlList.length - 1];
}
- function requestBadPort(request7) {
- const url = requestCurrentURL(request7);
+ function requestBadPort(request2) {
+ const url = requestCurrentURL(request2);
if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
return "blocked";
}
@@ -25096,10 +24616,10 @@ var require_util9 = __commonJS({
}
return policy;
}
- function setRequestReferrerPolicyOnRedirect(request7, actualResponse) {
+ function setRequestReferrerPolicyOnRedirect(request2, actualResponse) {
const policy = parseReferrerPolicy(actualResponse);
if (policy !== "") {
- request7.referrerPolicy = policy;
+ request2.referrerPolicy = policy;
}
}
function crossOriginResourcePolicyCheck() {
@@ -25116,33 +24636,33 @@ var require_util9 = __commonJS({
header = httpRequest.mode;
httpRequest.headersList.set("sec-fetch-mode", header, true);
}
- function appendRequestOriginHeader(request7) {
- let serializedOrigin = request7.origin;
+ function appendRequestOriginHeader(request2) {
+ let serializedOrigin = request2.origin;
if (serializedOrigin === "client" || serializedOrigin === void 0) {
return;
}
- if (request7.responseTainting === "cors" || request7.mode === "websocket") {
- request7.headersList.append("origin", serializedOrigin, true);
- } else if (request7.method !== "GET" && request7.method !== "HEAD") {
- switch (request7.referrerPolicy) {
+ 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 (request7.origin && urlHasHttpsScheme(request7.origin) && !urlHasHttpsScheme(requestCurrentURL(request7))) {
+ if (request2.origin && urlHasHttpsScheme(request2.origin) && !urlHasHttpsScheme(requestCurrentURL(request2))) {
serializedOrigin = null;
}
break;
case "same-origin":
- if (!sameOrigin(request7, requestCurrentURL(request7))) {
+ if (!sameOrigin(request2, requestCurrentURL(request2))) {
serializedOrigin = null;
}
break;
default:
}
- request7.headersList.append("origin", serializedOrigin, true);
+ request2.headersList.append("origin", serializedOrigin, true);
}
}
function coarsenTime(timestamp, crossOriginIsolatedCapability) {
@@ -25196,18 +24716,18 @@ var require_util9 = __commonJS({
referrerPolicy: policyContainer.referrerPolicy
};
}
- function determineRequestsReferrer(request7) {
- const policy = request7.referrerPolicy;
+ function determineRequestsReferrer(request2) {
+ const policy = request2.referrerPolicy;
assert(policy);
let referrerSource = null;
- if (request7.referrer === "client") {
+ if (request2.referrer === "client") {
const globalOrigin = getGlobalOrigin();
if (!globalOrigin || globalOrigin.origin === "null") {
return "no-referrer";
}
referrerSource = new URL(globalOrigin);
- } else if (webidl.is.URL(request7.referrer)) {
- referrerSource = request7.referrer;
+ } else if (webidl.is.URL(request2.referrer)) {
+ referrerSource = request2.referrer;
}
let referrerURL = stripURLForReferrer(referrerSource);
const referrerOrigin = stripURLForReferrer(referrerSource, true);
@@ -25225,14 +24745,14 @@ var require_util9 = __commonJS({
case "unsafe-url":
return referrerURL;
case "strict-origin": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
return referrerOrigin;
}
case "strict-origin-when-cross-origin": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
if (sameOrigin(referrerURL, currentURL)) {
return referrerURL;
}
@@ -25242,17 +24762,17 @@ var require_util9 = __commonJS({
return referrerOrigin;
}
case "same-origin":
- if (sameOrigin(request7, referrerURL)) {
+ if (sameOrigin(request2, referrerURL)) {
return referrerURL;
}
return "no-referrer";
case "origin-when-cross-origin":
- if (sameOrigin(request7, referrerURL)) {
+ if (sameOrigin(request2, referrerURL)) {
return referrerURL;
}
return referrerOrigin;
case "no-referrer-when-downgrade": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
return "no-referrer";
}
@@ -25319,7 +24839,7 @@ var require_util9 = __commonJS({
if (url.protocol === "blob:") return true;
return isOriginPotentiallyTrustworthy(url.origin);
}
- function tryUpgradeRequestToAPotentiallyTrustworthyURL(request7) {
+ function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {
}
function sameOrigin(A, B) {
if (A.origin === B.origin && A.origin === "null") {
@@ -26861,11 +26381,11 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- if (!request7) {
+ const request2 = client[kQueue][client[kRunningIdx]];
+ if (!request2) {
return -1;
}
- request7.onResponseStarted();
+ request2.onResponseStarted();
return 0;
}
/**
@@ -26927,9 +26447,9 @@ var require_client_h1 = __commonJS({
assert(!socket.destroyed);
assert(!this.paused);
assert((headers.length & 1) === 0);
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
- assert(request7.upgrade || request7.method === "CONNECT");
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
+ assert(request2.upgrade || request2.method === "CONNECT");
this.statusCode = 0;
this.statusText = "";
this.shouldKeepAlive = false;
@@ -26946,7 +26466,7 @@ var require_client_h1 = __commonJS({
client[kQueue][client[kRunningIdx]++] = null;
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
try {
- request7.onUpgrade(statusCode, headers, socket);
+ request2.onUpgrade(statusCode, headers, socket);
} catch (err) {
util.destroy(socket, err);
}
@@ -26963,8 +26483,8 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- if (!request7) {
+ const request2 = client[kQueue][client[kRunningIdx]];
+ if (!request2) {
return -1;
}
assert(!this.upgrade);
@@ -26973,23 +26493,23 @@ var require_client_h1 = __commonJS({
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
return -1;
}
- if (upgrade && !request7.upgrade) {
+ if (upgrade && !request2.upgrade) {
util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket)));
return -1;
}
assert(this.timeoutType === TIMEOUT_HEADERS);
this.statusCode = statusCode;
this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
- request7.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 = request7.bodyTimeout != null ? request7.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 (request7.method === "CONNECT") {
+ if (request2.method === "CONNECT") {
assert(client[kRunning] === 1);
this.upgrade = true;
return 2;
@@ -27020,11 +26540,11 @@ var require_client_h1 = __commonJS({
} else {
socket[kReset] = true;
}
- const pause = request7.onHeaders(statusCode, headers, this.resume, statusText) === false;
- if (request7.aborted) {
+ const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false;
+ if (request2.aborted) {
return -1;
}
- if (request7.method === "HEAD") {
+ if (request2.method === "HEAD") {
return 1;
}
if (statusCode < 200) {
@@ -27045,8 +26565,8 @@ var require_client_h1 = __commonJS({
if (socket.destroyed) {
return -1;
}
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
assert(this.timeoutType === TIMEOUT_BODY);
if (this.timeout) {
if (this.timeout.refresh) {
@@ -27059,7 +26579,7 @@ var require_client_h1 = __commonJS({
return -1;
}
this.bytesRead += buf.length;
- if (request7.onData(buf) === false) {
+ if (request2.onData(buf) === false) {
return constants.ERROR.PAUSED;
}
return 0;
@@ -27077,8 +26597,8 @@ var require_client_h1 = __commonJS({
}
assert(statusCode >= 100);
assert((this.headers.length & 1) === 0);
- const request7 = client[kQueue][client[kRunningIdx]];
- assert(request7);
+ const request2 = client[kQueue][client[kRunningIdx]];
+ assert(request2);
this.statusCode = 0;
this.statusText = "";
this.bytesRead = 0;
@@ -27090,11 +26610,11 @@ var require_client_h1 = __commonJS({
if (statusCode < 200) {
return 0;
}
- if (request7.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
+ if (request2.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) {
util.destroy(socket, new ResponseContentLengthMismatchError());
return -1;
}
- request7.onComplete(headers);
+ request2.onComplete(headers);
client[kQueue][client[kRunningIdx]++] = null;
if (socket[kWriting]) {
assert(client[kRunning] === 0);
@@ -27155,8 +26675,8 @@ var require_client_h1 = __commonJS({
return {
version: "h1",
defaultPipelining: 1,
- write(request7) {
- return writeH1(client, request7);
+ write(request2) {
+ return writeH1(client, request2);
},
resume() {
resumeH1(client);
@@ -27183,18 +26703,18 @@ var require_client_h1 = __commonJS({
* @param {import('../core/request.js')} request
* @returns {boolean}
*/
- busy(request7) {
+ busy(request2) {
if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
return true;
}
- if (request7) {
- if (client[kRunning] > 0 && !request7.idempotent) {
+ if (request2) {
+ if (client[kRunning] > 0 && !request2.idempotent) {
return true;
}
- if (client[kRunning] > 0 && (request7.upgrade || request7.method === "CONNECT")) {
+ if (client[kRunning] > 0 && (request2.upgrade || request2.method === "CONNECT")) {
return true;
}
- if (client[kRunning] > 0 && util.bodyLength(request7.body) !== 0 && (util.isStream(request7.body) || util.isAsyncIterable(request7.body) || util.isFormDataLike(request7.body))) {
+ if (client[kRunning] > 0 && util.bodyLength(request2.body) !== 0 && (util.isStream(request2.body) || util.isAsyncIterable(request2.body) || util.isFormDataLike(request2.body))) {
return true;
}
}
@@ -27240,13 +26760,13 @@ var require_client_h1 = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- util.errorRequest(client, request7, err);
+ const request2 = requests[i];
+ util.errorRequest(client, request2, err);
}
} else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") {
- const request7 = client[kQueue][client[kRunningIdx]];
+ const request2 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- util.errorRequest(client, request7, err);
+ util.errorRequest(client, request2, err);
}
client[kPendingIdx] = client[kRunningIdx];
assert(client[kRunning] === 0);
@@ -27274,8 +26794,8 @@ var require_client_h1 = __commonJS({
}
} else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
- const request7 = client[kQueue][client[kRunningIdx]];
- const headersTimeout = request7.headersTimeout != null ? request7.headersTimeout : client[kHeadersTimeout];
+ const request2 = client[kQueue][client[kRunningIdx]];
+ const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout];
socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS);
}
}
@@ -27284,21 +26804,21 @@ var require_client_h1 = __commonJS({
function shouldSendContentLength(method) {
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
}
- function writeH1(client, request7) {
- const { method, path, host, upgrade, blocking, reset } = request7;
- let { body, headers, contentLength } = request7;
+ function writeH1(client, request2) {
+ const { method, path, host, upgrade, blocking, reset } = request2;
+ let { body, headers, contentLength } = request2;
const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
if (util.isFormDataLike(body)) {
if (!extractBody) {
extractBody = require_body2().extractBody;
}
const [bodyStream, contentType] = extractBody(body);
- if (request7.contentType == null) {
+ if (request2.contentType == null) {
headers.push("content-type", contentType);
}
body = bodyStream.stream;
contentLength = bodyStream.length;
- } else if (util.isBlobLike(body) && request7.contentType == null && body.type) {
+ } else if (util.isBlobLike(body) && request2.contentType == null && body.type) {
headers.push("content-type", body.type);
}
if (body && typeof body.read === "function") {
@@ -27307,33 +26827,33 @@ var require_client_h1 = __commonJS({
const bodyLength = util.bodyLength(body);
contentLength = bodyLength ?? contentLength;
if (contentLength === null) {
- contentLength = request7.contentLength;
+ contentLength = request2.contentLength;
}
if (contentLength === 0 && !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength !== null && request7.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength !== null && request2.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- util.errorRequest(client, request7, new RequestContentLengthMismatchError());
+ util.errorRequest(client, request2, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
}
const socket = client[kSocket];
const abort = (err) => {
- if (request7.aborted || request7.completed) {
+ if (request2.aborted || request2.completed) {
return;
}
- util.errorRequest(client, request7, err || new RequestAbortedError());
+ util.errorRequest(client, request2, err || new RequestAbortedError());
util.destroy(body);
util.destroy(socket, new InformationalError("aborted"));
};
try {
- request7.onConnect(abort);
+ request2.onConnect(abort);
} catch (err) {
- util.errorRequest(client, request7, err);
+ util.errorRequest(client, request2, err);
}
- if (request7.aborted) {
+ if (request2.aborted) {
return false;
}
if (method === "HEAD") {
@@ -27384,31 +26904,31 @@ upgrade: ${upgrade}\r
}
}
if (channels.sendHeaders.hasSubscribers) {
- channels.sendHeaders.publish({ request: request7, headers: header, socket });
+ channels.sendHeaders.publish({ request: request2, headers: header, socket });
}
if (!body || bodyLength === 0) {
- writeBuffer(abort, null, client, request7, socket, contentLength, header, expectsPayload);
+ writeBuffer(abort, null, client, request2, socket, contentLength, header, expectsPayload);
} else if (util.isBuffer(body)) {
- writeBuffer(abort, body, client, request7, socket, contentLength, header, expectsPayload);
+ writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload);
} else if (util.isBlobLike(body)) {
if (typeof body.stream === "function") {
- writeIterable(abort, body.stream(), client, request7, socket, contentLength, header, expectsPayload);
+ writeIterable(abort, body.stream(), client, request2, socket, contentLength, header, expectsPayload);
} else {
- writeBlob(abort, body, client, request7, socket, contentLength, header, expectsPayload);
+ writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload);
}
} else if (util.isStream(body)) {
- writeStream(abort, body, client, request7, socket, contentLength, header, expectsPayload);
+ writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload);
} else if (util.isIterable(body)) {
- writeIterable(abort, body, client, request7, socket, contentLength, header, expectsPayload);
+ writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload);
} else {
assert(false);
}
return true;
}
- function writeStream(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
+ function writeStream(abort, body, 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: request7, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header });
const onData = function(chunk) {
if (finished) {
return;
@@ -27474,7 +26994,7 @@ upgrade: ${upgrade}\r
setImmediate(onClose);
}
}
- function writeBuffer(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
+ function writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
try {
if (!body) {
if (contentLength === 0) {
@@ -27494,18 +27014,18 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(body);
socket.uncork();
- request7.onBodySent(body);
- if (!expectsPayload && request7.reset !== false) {
+ request2.onBodySent(body);
+ if (!expectsPayload && request2.reset !== false) {
socket[kReset] = true;
}
}
- request7.onRequestSent();
+ request2.onRequestSent();
client[kResume]();
} catch (err) {
abort(err);
}
}
- async function writeBlob(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
+ async function writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
assert(contentLength === body.size, "blob body must have content length");
try {
if (contentLength != null && contentLength !== body.size) {
@@ -27518,9 +27038,9 @@ upgrade: ${upgrade}\r
`, "latin1");
socket.write(buffer);
socket.uncork();
- request7.onBodySent(buffer);
- request7.onRequestSent();
- if (!expectsPayload && request7.reset !== false) {
+ request2.onBodySent(buffer);
+ request2.onRequestSent();
+ if (!expectsPayload && request2.reset !== false) {
socket[kReset] = true;
}
client[kResume]();
@@ -27528,7 +27048,7 @@ upgrade: ${upgrade}\r
abort(err);
}
}
- async function writeIterable(abort, body, client, request7, socket, contentLength, header, expectsPayload) {
+ async function writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -27547,7 +27067,7 @@ upgrade: ${upgrade}\r
}
});
socket.on("close", onDrain).on("drain", onDrain);
- const writer = new AsyncWriter({ abort, socket, request: request7, contentLength, client, expectsPayload, header });
+ const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header });
try {
for await (const chunk of body) {
if (socket[kError]) {
@@ -27576,9 +27096,9 @@ upgrade: ${upgrade}\r
* @param {boolean} arg.expectsPayload
* @param {string} arg.header
*/
- constructor({ abort, socket, request: request7, contentLength, client, expectsPayload, header }) {
+ constructor({ abort, socket, request: request2, contentLength, client, expectsPayload, header }) {
this.socket = socket;
- this.request = request7;
+ this.request = request2;
this.contentLength = contentLength;
this.client = client;
this.bytesWritten = 0;
@@ -27592,7 +27112,7 @@ upgrade: ${upgrade}\r
* @returns
*/
write(chunk) {
- const { socket, request: request7, contentLength, client, bytesWritten, expectsPayload, header } = this;
+ const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this;
if (socket[kError]) {
throw socket[kError];
}
@@ -27611,7 +27131,7 @@ upgrade: ${upgrade}\r
}
socket.cork();
if (bytesWritten === 0) {
- if (!expectsPayload && request7.reset !== false) {
+ if (!expectsPayload && request2.reset !== false) {
socket[kReset] = true;
}
if (contentLength === null) {
@@ -27631,7 +27151,7 @@ ${len.toString(16)}\r
this.bytesWritten += len;
const ret = socket.write(chunk);
socket.uncork();
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
if (!ret) {
if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
if (socket[kParser].timeout.refresh) {
@@ -27645,8 +27165,8 @@ ${len.toString(16)}\r
* @returns {void}
*/
end() {
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request7 } = this;
- request7.onRequestSent();
+ const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this;
+ request2.onRequestSent();
socket[kWriting] = false;
if (socket[kError]) {
throw socket[kError];
@@ -27794,8 +27314,8 @@ var require_client_h2 = __commonJS({
return {
version: "h2",
defaultPipelining: Infinity,
- write(request7) {
- return writeH2(client, request7);
+ write(request2) {
+ return writeH2(client, request2);
},
resume() {
resumeH2(client);
@@ -27853,9 +27373,9 @@ var require_client_h2 = __commonJS({
this[kHTTP2Session] = null;
util.destroy(this[kSocket], err);
if (client[kRunningIdx] < client[kQueue].length) {
- const request7 = client[kQueue][client[kRunningIdx]];
+ const request2 = client[kQueue][client[kRunningIdx]];
client[kQueue][client[kRunningIdx]++] = null;
- util.errorRequest(client, request7, err);
+ util.errorRequest(client, request2, err);
client[kPendingIdx] = client[kRunningIdx];
}
assert(client[kRunning] === 0);
@@ -27873,8 +27393,8 @@ var require_client_h2 = __commonJS({
assert(client[kPending] === 0);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- util.errorRequest(client, request7, err);
+ const request2 = requests[i];
+ util.errorRequest(client, request2, err);
}
}
}
@@ -27905,13 +27425,13 @@ var require_client_h2 = __commonJS({
function shouldSendContentLength(method) {
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
}
- function writeH2(client, request7) {
- const requestTimeout = request7.bodyTimeout ?? client[kBodyTimeout];
+ function writeH2(client, request2) {
+ const requestTimeout = request2.bodyTimeout ?? client[kBodyTimeout];
const session = client[kHTTP2Session];
- const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request7;
- let { body } = request7;
+ const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request2;
+ let { body } = request2;
if (upgrade) {
- util.errorRequest(client, request7, new Error("Upgrade not supported for H2"));
+ util.errorRequest(client, request2, new Error("Upgrade not supported for H2"));
return false;
}
const headers = {};
@@ -27945,11 +27465,11 @@ var require_client_h2 = __commonJS({
headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ""}`;
headers[HTTP2_HEADER_METHOD] = method;
const abort = (err) => {
- if (request7.aborted || request7.completed) {
+ if (request2.aborted || request2.completed) {
return;
}
err = err || new RequestAbortedError();
- util.errorRequest(client, request7, err);
+ util.errorRequest(client, request2, err);
if (stream != null) {
stream.removeAllListeners("data");
stream.close();
@@ -27959,23 +27479,23 @@ var require_client_h2 = __commonJS({
util.destroy(body, err);
};
try {
- request7.onConnect(abort);
+ request2.onConnect(abort);
} catch (err) {
- util.errorRequest(client, request7, err);
+ util.errorRequest(client, request2, err);
}
- if (request7.aborted) {
+ if (request2.aborted) {
return false;
}
if (method === "CONNECT") {
session.ref();
stream = session.request(headers, { endStream: false, signal });
if (!stream.pending) {
- request7.onUpgrade(null, null, stream);
+ request2.onUpgrade(null, null, stream);
++session[kOpenStreams];
client[kQueue][client[kRunningIdx]++] = null;
} else {
stream.once("ready", () => {
- request7.onUpgrade(null, null, stream);
+ request2.onUpgrade(null, null, stream);
++session[kOpenStreams];
client[kQueue][client[kRunningIdx]++] = null;
});
@@ -28002,14 +27522,14 @@ var require_client_h2 = __commonJS({
contentLength = bodyStream.length;
}
if (contentLength == null) {
- contentLength = request7.contentLength;
+ contentLength = request2.contentLength;
}
if (contentLength === 0 || !expectsPayload) {
contentLength = null;
}
- if (shouldSendContentLength(method) && contentLength > 0 && request7.contentLength != null && request7.contentLength !== contentLength) {
+ if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength != null && request2.contentLength !== contentLength) {
if (client[kStrictContentLength]) {
- util.errorRequest(client, request7, new RequestContentLengthMismatchError());
+ util.errorRequest(client, request2, new RequestContentLengthMismatchError());
return false;
}
process.emitWarning(new RequestContentLengthMismatchError());
@@ -28025,7 +27545,7 @@ var require_client_h2 = __commonJS({
header += `${key}: ${headers[key]}\r
`;
}
- channels.sendHeaders.publish({ request: request7, headers: header, socket: session[kSocket] });
+ channels.sendHeaders.publish({ request: request2, headers: header, socket: session[kSocket] });
}
const shouldEndStream = method === "GET" || method === "HEAD" || body === null;
if (expectContinue) {
@@ -28043,25 +27563,25 @@ var require_client_h2 = __commonJS({
stream.setTimeout(requestTimeout);
stream.once("response", (headers2) => {
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
- request7.onResponseStarted();
- if (request7.aborted) {
+ request2.onResponseStarted();
+ if (request2.aborted) {
stream.removeAllListeners("data");
return;
}
- if (request7.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
+ if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
stream.pause();
}
});
stream.on("data", (chunk) => {
- if (request7.onData(chunk) === false) {
+ if (request2.onData(chunk) === false) {
stream.pause();
}
});
stream.once("end", (err) => {
stream.removeAllListeners("data");
if (stream.state?.state == null || stream.state.state < 6) {
- if (!request7.aborted && !request7.completed) {
- request7.onComplete({});
+ if (!request2.aborted && !request2.completed) {
+ request2.onComplete({});
}
client[kQueue][client[kRunningIdx]++] = null;
client[kResume]();
@@ -28104,10 +27624,10 @@ var require_client_h2 = __commonJS({
abort(err);
});
stream.once("trailers", (trailers) => {
- if (request7.aborted || request7.completed) {
+ if (request2.aborted || request2.completed) {
return;
}
- request7.onComplete(trailers);
+ request2.onComplete(trailers);
});
return true;
function writeBodyH2() {
@@ -28117,7 +27637,7 @@ var require_client_h2 = __commonJS({
stream,
null,
client,
- request7,
+ request2,
client[kSocket],
contentLength,
expectsPayload
@@ -28128,7 +27648,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request7,
+ request2,
client[kSocket],
contentLength,
expectsPayload
@@ -28140,7 +27660,7 @@ var require_client_h2 = __commonJS({
stream,
body.stream(),
client,
- request7,
+ request2,
client[kSocket],
contentLength,
expectsPayload
@@ -28151,7 +27671,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request7,
+ request2,
client[kSocket],
contentLength,
expectsPayload
@@ -28165,7 +27685,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request7,
+ request2,
contentLength
);
} else if (util.isIterable(body)) {
@@ -28174,7 +27694,7 @@ var require_client_h2 = __commonJS({
stream,
body,
client,
- request7,
+ request2,
client[kSocket],
contentLength,
expectsPayload
@@ -28184,7 +27704,7 @@ var require_client_h2 = __commonJS({
}
}
}
- function writeBuffer(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
+ function writeBuffer(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
try {
if (body != null && util.isBuffer(body)) {
assert(contentLength === body.byteLength, "buffer body must have content length");
@@ -28192,18 +27712,18 @@ var require_client_h2 = __commonJS({
h2stream.write(body);
h2stream.uncork();
h2stream.end();
- request7.onBodySent(body);
+ request2.onBodySent(body);
}
if (!expectsPayload) {
socket[kReset] = true;
}
- request7.onRequestSent();
+ request2.onRequestSent();
client[kResume]();
} catch (error) {
abort(error);
}
}
- function writeStream(abort, socket, expectsPayload, h2stream, body, client, request7, contentLength) {
+ function writeStream(abort, socket, expectsPayload, h2stream, body, client, request2, contentLength) {
assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
const pipe = pipeline(
body,
@@ -28214,7 +27734,7 @@ var require_client_h2 = __commonJS({
abort(err);
} else {
util.removeAllListeners(pipe);
- request7.onRequestSent();
+ request2.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -28224,10 +27744,10 @@ var require_client_h2 = __commonJS({
);
util.addListener(pipe, "data", onPipeData);
function onPipeData(chunk) {
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
}
}
- async function writeBlob(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
+ async function writeBlob(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
assert(contentLength === body.size, "blob body must have content length");
try {
if (contentLength != null && contentLength !== body.size) {
@@ -28238,8 +27758,8 @@ var require_client_h2 = __commonJS({
h2stream.write(buffer);
h2stream.uncork();
h2stream.end();
- request7.onBodySent(buffer);
- request7.onRequestSent();
+ request2.onBodySent(buffer);
+ request2.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -28248,7 +27768,7 @@ var require_client_h2 = __commonJS({
abort(err);
}
}
- async function writeIterable(abort, h2stream, body, client, request7, socket, contentLength, expectsPayload) {
+ async function writeIterable(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) {
assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
let callback = null;
function onDrain() {
@@ -28273,13 +27793,13 @@ var require_client_h2 = __commonJS({
throw socket[kError];
}
const res = h2stream.write(chunk);
- request7.onBodySent(chunk);
+ request2.onBodySent(chunk);
if (!res) {
await waitForDrain();
}
}
h2stream.end();
- request7.onRequestSent();
+ request2.onRequestSent();
if (!expectsPayload) {
socket[kReset] = true;
}
@@ -28534,10 +28054,10 @@ var require_client2 = __commonJS({
this.once("connect", cb);
}
[kDispatch](opts, handler) {
- const request7 = new Request(this[kUrl].origin, opts, handler);
- this[kQueue].push(request7);
+ const request2 = new Request(this[kUrl].origin, opts, handler);
+ this[kQueue].push(request2);
if (this[kResuming]) {
- } else if (util.bodyLength(request7.body) == null && util.isIterable(request7.body)) {
+ } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) {
this[kResuming] = 1;
queueMicrotask(() => resume(this));
} else {
@@ -28561,8 +28081,8 @@ var require_client2 = __commonJS({
return new Promise((resolve) => {
const requests = this[kQueue].splice(this[kPendingIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- util.errorRequest(this, request7, err);
+ const request2 = requests[i];
+ util.errorRequest(this, request2, err);
}
const callback = () => {
if (this[kClosedResolve]) {
@@ -28586,8 +28106,8 @@ var require_client2 = __commonJS({
assert(client[kPendingIdx] === client[kRunningIdx]);
const requests = client[kQueue].splice(client[kRunningIdx]);
for (let i = 0; i < requests.length; i++) {
- const request7 = requests[i];
- util.errorRequest(client, request7, err);
+ const request2 = requests[i];
+ util.errorRequest(client, request2, err);
}
assert(client[kSize] === 0);
}
@@ -28692,8 +28212,8 @@ var require_client2 = __commonJS({
if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
assert(client[kRunning] === 0);
while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
- const request7 = client[kQueue][client[kPendingIdx]++];
- util.errorRequest(client, request7, err);
+ const request2 = client[kQueue][client[kPendingIdx]++];
+ util.errorRequest(client, request2, err);
}
} else {
onError(client, err);
@@ -28748,12 +28268,12 @@ var require_client2 = __commonJS({
if (client[kRunning] >= (getPipelining(client) || 1)) {
return;
}
- const request7 = client[kQueue][client[kPendingIdx]];
- if (client[kUrl].protocol === "https:" && client[kServerName] !== request7.servername) {
+ const request2 = client[kQueue][client[kPendingIdx]];
+ if (client[kUrl].protocol === "https:" && client[kServerName] !== request2.servername) {
if (client[kRunning] > 0) {
return;
}
- client[kServerName] = request7.servername;
+ client[kServerName] = request2.servername;
client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => {
client[kHTTPContext] = null;
resume(client);
@@ -28769,10 +28289,10 @@ var require_client2 = __commonJS({
if (client[kHTTPContext].destroyed) {
return;
}
- if (client[kHTTPContext].busy(request7)) {
+ if (client[kHTTPContext].busy(request2)) {
return;
}
- if (!request7.aborted && client[kHTTPContext].write(request7)) {
+ if (!request2.aborted && client[kHTTPContext].write(request2)) {
client[kPendingIdx]++;
} else {
client[kQueue].splice(client[kPendingIdx], 1);
@@ -30746,10 +30266,10 @@ var require_api_request2 = __commonJS({
}
}
};
- function request7(opts, callback) {
+ function request2(opts, callback) {
if (callback === void 0) {
return new Promise((resolve, reject) => {
- request7.call(this, opts, (err, data) => {
+ request2.call(this, opts, (err, data) => {
return err ? reject(err) : resolve(data);
});
});
@@ -30765,7 +30285,7 @@ var require_api_request2 = __commonJS({
queueMicrotask(() => callback(err, { opaque }));
}
}
- module2.exports = request7;
+ module2.exports = request2;
module2.exports.RequestHandler = RequestHandler;
}
});
@@ -31567,7 +31087,7 @@ var require_mock_utils2 = __commonJS({
const headersMatch = matchHeaders(mockDispatch2, headers);
return pathMatch && methodMatch && bodyMatch && headersMatch;
}
- function getResponseData7(data) {
+ function getResponseData2(data) {
if (Buffer.isBuffer(data)) {
return data;
} else if (data instanceof Uint8Array) {
@@ -31701,7 +31221,7 @@ var require_mock_utils2 = __commonJS({
body.then((newData) => handleReply(mockDispatches, newData));
return;
}
- const responseData = getResponseData7(body);
+ const responseData = getResponseData2(body);
const responseHeaders = generateKeyValues(headers);
const responseTrailers = generateKeyValues(trailers);
handler.onConnect?.((err) => handler.onError(err), null);
@@ -31765,7 +31285,7 @@ var require_mock_utils2 = __commonJS({
return mockOptions;
}
module2.exports = {
- getResponseData: getResponseData7,
+ getResponseData: getResponseData2,
getMockDispatch,
addMockDispatch,
deleteMockDispatch,
@@ -31789,7 +31309,7 @@ var require_mock_utils2 = __commonJS({
var require_mock_interceptor2 = __commonJS({
"node_modules/undici/lib/mock/mock-interceptor.js"(exports2, module2) {
"use strict";
- var { getResponseData: getResponseData7, buildKey, addMockDispatch } = require_mock_utils2();
+ var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils2();
var {
kDispatches,
kDispatchKey,
@@ -31863,7 +31383,7 @@ var require_mock_interceptor2 = __commonJS({
this[kContentLength] = false;
}
createMockScopeDispatchData({ statusCode, data, responseOptions }) {
- const responseData = getResponseData7(data);
+ 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 };
@@ -32714,8 +32234,8 @@ var require_snapshot_recorder = __commonJS({
if (this.#isUrlExcluded(url)) {
return;
}
- const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
- const hash = createRequestHash(request7);
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
const normalizedHeaders = normalizeHeaders(response.headers);
const responseData = {
statusCode: response.statusCode,
@@ -32733,7 +32253,7 @@ var require_snapshot_recorder = __commonJS({
existingSnapshot.timestamp = (/* @__PURE__ */ new Date()).toISOString();
} else {
this.#snapshots.set(hash, {
- request: request7,
+ request: request2,
responses: [responseData],
// Always store as array for consistency
callCount: 0,
@@ -32759,8 +32279,8 @@ var require_snapshot_recorder = __commonJS({
if (this.#isUrlExcluded(url)) {
return void 0;
}
- const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
- const hash = createRequestHash(request7);
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
const snapshot = this.#snapshots.get(hash);
if (!snapshot) return void 0;
const currentCallCount = snapshot.callCount || 0;
@@ -32855,8 +32375,8 @@ var require_snapshot_recorder = __commonJS({
* @returns {boolean} - True if snapshot was deleted, false if not found
*/
deleteSnapshot(requestOpts) {
- const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
- const hash = createRequestHash(request7);
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
return this.#snapshots.delete(hash);
}
/**
@@ -32865,8 +32385,8 @@ var require_snapshot_recorder = __commonJS({
* @returns {SnapshotInfo|null} - Snapshot information or null if not found
*/
getSnapshotInfo(requestOpts) {
- const request7 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
- const hash = createRequestHash(request7);
+ const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions);
+ const hash = createRequestHash(request2);
const snapshot = this.#snapshots.get(hash);
if (!snapshot) return null;
return {
@@ -33158,16 +32678,16 @@ var require_snapshot_agent = __commonJS({
*/
#setupMockInterceptors() {
for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {
- const { request: request7, responses, response } = snapshot;
- const url = new URL(request7.url);
+ const { request: request2, responses, response } = snapshot;
+ const url = new URL(request2.url);
const mockPool = this.get(url.origin);
const responseData = responses ? responses[0] : response;
if (!responseData) continue;
mockPool.intercept({
path: url.pathname + url.search,
- method: request7.method,
- headers: request7.headers,
- body: request7.body
+ method: request2.method,
+ headers: request2.headers,
+ body: request2.body
}).reply(responseData.statusCode, responseData.body, {
headers: responseData.headers,
trailers: responseData.trailers
@@ -35889,7 +35409,7 @@ var require_sqlite_cache_store = __commonJS({
var { Writable } = require("node:stream");
var { assertCacheKey, assertCacheValue } = require_cache2();
var DatabaseSync;
- var VERSION17 = 3;
+ var VERSION7 = 3;
var MAX_ENTRY_SIZE = 2 * 1e3 * 1e3 * 1e3;
module2.exports = class SqliteCacheStore {
#maxEntrySize = MAX_ENTRY_SIZE;
@@ -35960,7 +35480,7 @@ var require_sqlite_cache_store = __commonJS({
PRAGMA temp_store = memory;
PRAGMA optimize;
- CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION17} (
+ CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION7} (
-- Data specific to us
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL,
@@ -35979,8 +35499,8 @@ var require_sqlite_cache_store = __commonJS({
staleAt INTEGER NOT NULL
);
- CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION17}_getValuesQuery ON cacheInterceptorV${VERSION17}(url, method, deleteAt);
- CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION17}_deleteByUrlQuery ON cacheInterceptorV${VERSION17}(deleteAt);
+ CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_getValuesQuery ON cacheInterceptorV${VERSION7}(url, method, deleteAt);
+ CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_deleteByUrlQuery ON cacheInterceptorV${VERSION7}(deleteAt);
`);
this.#getValuesQuery = this.#db.prepare(`
SELECT
@@ -35995,7 +35515,7 @@ var require_sqlite_cache_store = __commonJS({
vary,
cachedAt,
staleAt
- FROM cacheInterceptorV${VERSION17}
+ FROM cacheInterceptorV${VERSION7}
WHERE
url = ?
AND method = ?
@@ -36003,7 +35523,7 @@ var require_sqlite_cache_store = __commonJS({
deleteAt ASC
`);
this.#updateValueQuery = this.#db.prepare(`
- UPDATE cacheInterceptorV${VERSION17} SET
+ UPDATE cacheInterceptorV${VERSION7} SET
body = ?,
deleteAt = ?,
statusCode = ?,
@@ -36017,7 +35537,7 @@ var require_sqlite_cache_store = __commonJS({
id = ?
`);
this.#insertValueQuery = this.#db.prepare(`
- INSERT INTO cacheInterceptorV${VERSION17} (
+ INSERT INTO cacheInterceptorV${VERSION7} (
url,
method,
body,
@@ -36033,20 +35553,20 @@ var require_sqlite_cache_store = __commonJS({
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`);
this.#deleteByUrlQuery = this.#db.prepare(
- `DELETE FROM cacheInterceptorV${VERSION17} WHERE url = ?`
+ `DELETE FROM cacheInterceptorV${VERSION7} WHERE url = ?`
);
this.#countEntriesQuery = this.#db.prepare(
- `SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION17}`
+ `SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION7}`
);
this.#deleteExpiredValuesQuery = this.#db.prepare(
- `DELETE FROM cacheInterceptorV${VERSION17} WHERE deleteAt <= ?`
+ `DELETE FROM cacheInterceptorV${VERSION7} WHERE deleteAt <= ?`
);
this.#deleteOldValuesQuery = this.#maxCount === Infinity ? null : this.#db.prepare(`
- DELETE FROM cacheInterceptorV${VERSION17}
+ DELETE FROM cacheInterceptorV${VERSION7}
WHERE id IN (
SELECT
id
- FROM cacheInterceptorV${VERSION17}
+ FROM cacheInterceptorV${VERSION7}
ORDER BY cachedAt DESC
LIMIT ?
)
@@ -37208,7 +36728,7 @@ var require_request4 = __commonJS({
webidl.argumentLengthCheck(arguments, 1, prefix);
input = webidl.converters.RequestInfo(input);
init = webidl.converters.RequestInit(init);
- let request7 = null;
+ let request2 = null;
let fallbackMode = null;
const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl;
let signal = null;
@@ -37225,18 +36745,18 @@ var require_request4 = __commonJS({
"Request cannot be constructed from a URL that includes credentials: " + input
);
}
- request7 = makeRequest({ urlList: [parsedURL] });
+ request2 = makeRequest({ urlList: [parsedURL] });
fallbackMode = "cors";
} else {
assert(webidl.is.Request(input));
- request7 = input.#state;
+ request2 = input.#state;
signal = input.#signal;
this.#dispatcher = init.dispatcher || input.#dispatcher;
}
const origin = environmentSettingsObject.settingsObject.origin;
let window = "client";
- if (request7.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request7.window, origin)) {
- window = request7.window;
+ 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`);
@@ -37244,66 +36764,66 @@ var require_request4 = __commonJS({
if ("window" in init) {
window = "no-window";
}
- request7 = makeRequest({
+ 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: request7.method,
+ method: request2.method,
// header list A copy of request’s header list.
// undici implementation note: headersList is cloned in makeRequest
- headersList: request7.headersList,
+ headersList: request2.headersList,
// unsafe-request flag Set.
- unsafeRequest: request7.unsafeRequest,
+ unsafeRequest: request2.unsafeRequest,
// client This’s relevant settings object.
client: environmentSettingsObject.settingsObject,
// window window.
window,
// priority request’s priority.
- priority: request7.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: request7.origin,
+ origin: request2.origin,
// referrer request’s referrer.
- referrer: request7.referrer,
+ referrer: request2.referrer,
// referrer policy request’s referrer policy.
- referrerPolicy: request7.referrerPolicy,
+ referrerPolicy: request2.referrerPolicy,
// mode request’s mode.
- mode: request7.mode,
+ mode: request2.mode,
// credentials mode request’s credentials mode.
- credentials: request7.credentials,
+ credentials: request2.credentials,
// cache mode request’s cache mode.
- cache: request7.cache,
+ cache: request2.cache,
// redirect mode request’s redirect mode.
- redirect: request7.redirect,
+ redirect: request2.redirect,
// integrity metadata request’s integrity metadata.
- integrity: request7.integrity,
+ integrity: request2.integrity,
// keepalive request’s keepalive.
- keepalive: request7.keepalive,
+ keepalive: request2.keepalive,
// reload-navigation flag request’s reload-navigation flag.
- reloadNavigation: request7.reloadNavigation,
+ reloadNavigation: request2.reloadNavigation,
// history-navigation flag request’s history-navigation flag.
- historyNavigation: request7.historyNavigation,
+ historyNavigation: request2.historyNavigation,
// URL list A clone of request’s URL list.
- urlList: [...request7.urlList]
+ urlList: [...request2.urlList]
});
const initHasKey = Object.keys(init).length !== 0;
if (initHasKey) {
- if (request7.mode === "navigate") {
- request7.mode = "same-origin";
+ if (request2.mode === "navigate") {
+ request2.mode = "same-origin";
}
- request7.reloadNavigation = false;
- request7.historyNavigation = false;
- request7.origin = "client";
- request7.referrer = "client";
- request7.referrerPolicy = "";
- request7.url = request7.urlList[request7.urlList.length - 1];
- request7.urlList = [request7.url];
+ 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 === "") {
- request7.referrer = "no-referrer";
+ request2.referrer = "no-referrer";
} else {
let parsedReferrer;
try {
@@ -37312,14 +36832,14 @@ var require_request4 = __commonJS({
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)) {
- request7.referrer = "client";
+ request2.referrer = "client";
} else {
- request7.referrer = parsedReferrer;
+ request2.referrer = parsedReferrer;
}
}
}
if (init.referrerPolicy !== void 0) {
- request7.referrerPolicy = init.referrerPolicy;
+ request2.referrerPolicy = init.referrerPolicy;
}
let mode;
if (init.mode !== void 0) {
@@ -37334,33 +36854,33 @@ var require_request4 = __commonJS({
});
}
if (mode != null) {
- request7.mode = mode;
+ request2.mode = mode;
}
if (init.credentials !== void 0) {
- request7.credentials = init.credentials;
+ request2.credentials = init.credentials;
}
if (init.cache !== void 0) {
- request7.cache = init.cache;
+ request2.cache = init.cache;
}
- if (request7.cache === "only-if-cached" && request7.mode !== "same-origin") {
+ 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) {
- request7.redirect = init.redirect;
+ request2.redirect = init.redirect;
}
if (init.integrity != null) {
- request7.integrity = String(init.integrity);
+ request2.integrity = String(init.integrity);
}
if (init.keepalive !== void 0) {
- request7.keepalive = Boolean(init.keepalive);
+ request2.keepalive = Boolean(init.keepalive);
}
if (init.method !== void 0) {
let method = init.method;
const mayBeNormalized = normalizedMethodRecords[method];
if (mayBeNormalized !== void 0) {
- request7.method = mayBeNormalized;
+ request2.method = mayBeNormalized;
} else {
if (!isValidHTTPToken(method)) {
throw new TypeError(`'${method}' is not a valid HTTP method.`);
@@ -37370,9 +36890,9 @@ var require_request4 = __commonJS({
throw new TypeError(`'${method}' HTTP method is unsupported.`);
}
method = normalizedMethodRecordsBase[upperCase] ?? method;
- request7.method = method;
+ request2.method = method;
}
- if (!patchMethodWarning && request7.method === "patch") {
+ 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"
});
@@ -37382,7 +36902,7 @@ var require_request4 = __commonJS({
if (init.signal !== void 0) {
signal = init.signal;
}
- this.#state = request7;
+ this.#state = request2;
const ac = new AbortController();
this.#signal = ac.signal;
if (signal != null) {
@@ -37400,12 +36920,12 @@ var require_request4 = __commonJS({
}
}
this.#headers = new Headers(kConstruct);
- setHeadersList(this.#headers, request7.headersList);
+ setHeadersList(this.#headers, request2.headersList);
setHeadersGuard(this.#headers, "request");
if (mode === "no-cors") {
- if (!corsSafeListedMethodsSet.has(request7.method)) {
+ if (!corsSafeListedMethodsSet.has(request2.method)) {
throw new TypeError(
- `'${request7.method} is unsupported in no-cors mode.`
+ `'${request2.method} is unsupported in no-cors mode.`
);
}
setHeadersGuard(this.#headers, "request-no-cors");
@@ -37424,14 +36944,14 @@ var require_request4 = __commonJS({
}
}
const inputBody = webidl.is.Request(input) ? input.#state.body : null;
- if ((init.body != null || inputBody != null) && (request7.method === "GET" || request7.method === "HEAD")) {
+ 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,
- request7.keepalive
+ request2.keepalive
);
initBody = extractedBody;
if (contentType && !getHeadersList(this.#headers).contains("content-type", true)) {
@@ -37443,12 +36963,12 @@ var require_request4 = __commonJS({
if (initBody != null && init.duplex == null) {
throw new TypeError("RequestInit: duplex option is required when sending a body.");
}
- if (request7.mode !== "same-origin" && request7.mode !== "cors") {
+ if (request2.mode !== "same-origin" && request2.mode !== "cors") {
throw new TypeError(
'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
);
}
- request7.useCORSPreflightFlag = true;
+ request2.useCORSPreflightFlag = true;
}
let finalBody = inputOrInitBody;
if (initBody == null && inputBody != null) {
@@ -37638,42 +37158,42 @@ var require_request4 = __commonJS({
* @param {Request} request
* @param {AbortSignal} newSignal
*/
- static setRequestSignal(request7, newSignal) {
- request7.#signal = newSignal;
- return request7;
+ static setRequestSignal(request2, newSignal) {
+ request2.#signal = newSignal;
+ return request2;
}
/**
* @param {Request} request
*/
- static getRequestDispatcher(request7) {
- return request7.#dispatcher;
+ static getRequestDispatcher(request2) {
+ return request2.#dispatcher;
}
/**
* @param {Request} request
* @param {import('../../dispatcher/dispatcher')} newDispatcher
*/
- static setRequestDispatcher(request7, newDispatcher) {
- request7.#dispatcher = newDispatcher;
+ static setRequestDispatcher(request2, newDispatcher) {
+ request2.#dispatcher = newDispatcher;
}
/**
* @param {Request} request
* @param {Headers} newHeaders
*/
- static setRequestHeaders(request7, newHeaders) {
- request7.#headers = newHeaders;
+ static setRequestHeaders(request2, newHeaders) {
+ request2.#headers = newHeaders;
}
/**
* @param {Request} request
*/
- static getRequestState(request7) {
- return request7.#state;
+ static getRequestState(request2) {
+ return request2.#state;
}
/**
* @param {Request} request
* @param {any} newState
*/
- static setRequestState(request7, newState) {
- request7.#state = newState;
+ static setRequestState(request2, newState) {
+ request2.#state = newState;
}
};
var { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request;
@@ -37726,23 +37246,23 @@ var require_request4 = __commonJS({
headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList()
};
}
- function cloneRequest(request7) {
- const newRequest = makeRequest({ ...request7, body: null });
- if (request7.body != null) {
- newRequest.body = cloneBody(request7.body);
+ function cloneRequest(request2) {
+ const newRequest = makeRequest({ ...request2, body: null });
+ if (request2.body != null) {
+ newRequest.body = cloneBody(request2.body);
}
return newRequest;
}
function fromInnerRequest(innerRequest, dispatcher, signal, guard) {
- const request7 = new Request(kConstruct);
- setRequestState(request7, innerRequest);
- setRequestDispatcher(request7, dispatcher);
- setRequestSignal(request7, signal);
+ const request2 = new Request(kConstruct);
+ setRequestState(request2, innerRequest);
+ setRequestDispatcher(request2, dispatcher);
+ setRequestSignal(request2, signal);
const headers = new Headers(kConstruct);
- setRequestHeaders(request7, headers);
+ setRequestHeaders(request2, headers);
setHeadersList(headers, innerRequest.headersList);
setHeadersGuard(headers, guard);
- return request7;
+ return request2;
}
Object.defineProperties(Request.prototype, {
method: kEnumerableProperty,
@@ -38123,14 +37643,14 @@ var require_fetch2 = __commonJS({
p.reject(e);
return p.promise;
}
- const request7 = getRequestState(requestObject);
+ const request2 = getRequestState(requestObject);
if (requestObject.signal.aborted) {
- abortFetch(p, request7, null, requestObject.signal.reason);
+ abortFetch(p, request2, null, requestObject.signal.reason);
return p.promise;
}
- const globalObject = request7.client.globalObject;
+ const globalObject = request2.client.globalObject;
if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") {
- request7.serviceWorkers = "none";
+ request2.serviceWorkers = "none";
}
let responseObject = null;
let locallyAborted = false;
@@ -38142,7 +37662,7 @@ var require_fetch2 = __commonJS({
assert(controller != null);
controller.abort(requestObject.signal.reason);
const realResponse = responseObject?.deref();
- abortFetch(p, request7, realResponse, requestObject.signal.reason);
+ abortFetch(p, request2, realResponse, requestObject.signal.reason);
}
);
const processResponse = (response) => {
@@ -38150,7 +37670,7 @@ var require_fetch2 = __commonJS({
return;
}
if (response.aborted) {
- abortFetch(p, request7, responseObject, controller.serializedAbortReason);
+ abortFetch(p, request2, responseObject, controller.serializedAbortReason);
return;
}
if (response.type === "error") {
@@ -38162,7 +37682,7 @@ var require_fetch2 = __commonJS({
p = null;
};
controller = fetching({
- request: request7,
+ request: request2,
processResponseEndOfBody: handleFetchDone,
processResponse,
dispatcher: getRequestDispatcher(requestObject)
@@ -38206,12 +37726,12 @@ var require_fetch2 = __commonJS({
);
}
var markResourceTiming = performance.markResourceTiming;
- function abortFetch(p, request7, responseObject, error) {
+ function abortFetch(p, request2, responseObject, error) {
if (p) {
p.reject(error);
}
- if (request7.body?.stream != null && isReadable(request7.body.stream)) {
- request7.body.stream.cancel(error).catch((err) => {
+ if (request2.body?.stream != null && isReadable(request2.body.stream)) {
+ request2.body.stream.cancel(error).catch((err) => {
if (err.code === "ERR_INVALID_STATE") {
return;
}
@@ -38232,7 +37752,7 @@ var require_fetch2 = __commonJS({
}
}
function fetching({
- request: request7,
+ request: request2,
processRequestBodyChunkLength,
processRequestEndOfBody,
processResponse,
@@ -38245,9 +37765,9 @@ var require_fetch2 = __commonJS({
assert(dispatcher);
let taskDestination = null;
let crossOriginIsolatedCapability = false;
- if (request7.client != null) {
- taskDestination = request7.client.globalObject;
- crossOriginIsolatedCapability = request7.client.crossOriginIsolatedCapability;
+ if (request2.client != null) {
+ taskDestination = request2.client.globalObject;
+ crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability;
}
const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability);
const timingInfo = createOpaqueTimingInfo({
@@ -38255,7 +37775,7 @@ var require_fetch2 = __commonJS({
});
const fetchParams = {
controller: new Fetch(dispatcher),
- request: request7,
+ request: request2,
timingInfo,
processRequestBodyChunkLength,
processRequestEndOfBody,
@@ -38265,79 +37785,79 @@ var require_fetch2 = __commonJS({
taskDestination,
crossOriginIsolatedCapability
};
- assert(!request7.body || request7.body.stream);
- if (request7.window === "client") {
- request7.window = request7.client?.globalObject?.constructor?.name === "Window" ? request7.client : "no-window";
+ assert(!request2.body || request2.body.stream);
+ if (request2.window === "client") {
+ request2.window = request2.client?.globalObject?.constructor?.name === "Window" ? request2.client : "no-window";
}
- if (request7.origin === "client") {
- request7.origin = request7.client.origin;
+ if (request2.origin === "client") {
+ request2.origin = request2.client.origin;
}
- if (request7.policyContainer === "client") {
- if (request7.client != null) {
- request7.policyContainer = clonePolicyContainer(
- request7.client.policyContainer
+ if (request2.policyContainer === "client") {
+ if (request2.client != null) {
+ request2.policyContainer = clonePolicyContainer(
+ request2.client.policyContainer
);
} else {
- request7.policyContainer = makePolicyContainer();
+ request2.policyContainer = makePolicyContainer();
}
}
- if (!request7.headersList.contains("accept", true)) {
+ if (!request2.headersList.contains("accept", true)) {
const value = "*/*";
- request7.headersList.append("accept", value, true);
+ request2.headersList.append("accept", value, true);
}
- if (!request7.headersList.contains("accept-language", true)) {
- request7.headersList.append("accept-language", "*", true);
+ if (!request2.headersList.contains("accept-language", true)) {
+ request2.headersList.append("accept-language", "*", true);
}
- if (request7.priority === null) {
+ if (request2.priority === null) {
}
- if (subresourceSet.has(request7.destination)) {
+ if (subresourceSet.has(request2.destination)) {
}
mainFetch(fetchParams, false);
return fetchParams.controller;
}
async function mainFetch(fetchParams, recursive) {
try {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
- if (request7.localURLsOnly && !urlIsLocal(requestCurrentURL(request7))) {
+ if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) {
response = makeNetworkError("local URLs only");
}
- tryUpgradeRequestToAPotentiallyTrustworthyURL(request7);
- if (requestBadPort(request7) === "blocked") {
+ tryUpgradeRequestToAPotentiallyTrustworthyURL(request2);
+ if (requestBadPort(request2) === "blocked") {
response = makeNetworkError("bad port");
}
- if (request7.referrerPolicy === "") {
- request7.referrerPolicy = request7.policyContainer.referrerPolicy;
+ if (request2.referrerPolicy === "") {
+ request2.referrerPolicy = request2.policyContainer.referrerPolicy;
}
- if (request7.referrer !== "no-referrer") {
- request7.referrer = determineRequestsReferrer(request7);
+ if (request2.referrer !== "no-referrer") {
+ request2.referrer = determineRequestsReferrer(request2);
}
if (response === null) {
- const currentURL = requestCurrentURL(request7);
+ 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, request7.url) && request7.responseTainting === "basic" || // request’s current URL’s scheme is "data"
+ 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"
- (request7.mode === "navigate" || request7.mode === "websocket")
+ (request2.mode === "navigate" || request2.mode === "websocket")
) {
- request7.responseTainting = "basic";
+ request2.responseTainting = "basic";
response = await schemeFetch(fetchParams);
- } else if (request7.mode === "same-origin") {
+ } else if (request2.mode === "same-origin") {
response = makeNetworkError('request mode cannot be "same-origin"');
- } else if (request7.mode === "no-cors") {
- if (request7.redirect !== "follow") {
+ } else if (request2.mode === "no-cors") {
+ if (request2.redirect !== "follow") {
response = makeNetworkError(
'redirect mode cannot be "follow" for "no-cors" request'
);
} else {
- request7.responseTainting = "opaque";
+ request2.responseTainting = "opaque";
response = await schemeFetch(fetchParams);
}
- } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request7))) {
+ } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) {
response = makeNetworkError("URL scheme must be a HTTP(S) scheme");
} else {
- request7.responseTainting = "cors";
+ request2.responseTainting = "cors";
response = await httpFetch(fetchParams);
}
}
@@ -38345,13 +37865,13 @@ var require_fetch2 = __commonJS({
return response;
}
if (response.status !== 0 && !response.internalResponse) {
- if (request7.responseTainting === "cors") {
+ if (request2.responseTainting === "cors") {
}
- if (request7.responseTainting === "basic") {
+ if (request2.responseTainting === "basic") {
response = filterResponse(response, "basic");
- } else if (request7.responseTainting === "cors") {
+ } else if (request2.responseTainting === "cors") {
response = filterResponse(response, "cors");
- } else if (request7.responseTainting === "opaque") {
+ } else if (request2.responseTainting === "opaque") {
response = filterResponse(response, "opaque");
} else {
assert(false);
@@ -38359,26 +37879,26 @@ var require_fetch2 = __commonJS({
}
let internalResponse = response.status === 0 ? response : response.internalResponse;
if (internalResponse.urlList.length === 0) {
- internalResponse.urlList.push(...request7.urlList);
+ internalResponse.urlList.push(...request2.urlList);
}
- if (!request7.timingAllowFailed) {
+ if (!request2.timingAllowFailed) {
response.timingAllowPassed = true;
}
- if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request7.headers.contains("range", true)) {
+ if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request2.headers.contains("range", true)) {
response = internalResponse = makeNetworkError();
}
- if (response.status !== 0 && (request7.method === "HEAD" || request7.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
+ if (response.status !== 0 && (request2.method === "HEAD" || request2.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) {
internalResponse.body = null;
fetchParams.controller.dump = true;
}
- if (request7.integrity) {
+ if (request2.integrity) {
const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason));
- if (request7.responseTainting === "opaque" || response.body == null) {
+ if (request2.responseTainting === "opaque" || response.body == null) {
processBodyError(response.error);
return;
}
const processBody = (bytes) => {
- if (!bytesMatch(bytes, request7.integrity)) {
+ if (!bytesMatch(bytes, request2.integrity)) {
processBodyError("integrity mismatch");
return;
}
@@ -38397,8 +37917,8 @@ var require_fetch2 = __commonJS({
if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
return Promise.resolve(makeAppropriateNetworkError(fetchParams));
}
- const { request: request7 } = fetchParams;
- const { protocol: scheme } = requestCurrentURL(request7);
+ const { request: request2 } = fetchParams;
+ const { protocol: scheme } = requestCurrentURL(request2);
switch (scheme) {
case "about:": {
return Promise.resolve(makeNetworkError("about scheme is not supported"));
@@ -38407,19 +37927,19 @@ var require_fetch2 = __commonJS({
if (!resolveObjectURL) {
resolveObjectURL = require("node:buffer").resolveObjectURL;
}
- const blobURLEntry = requestCurrentURL(request7);
+ 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 (request7.method !== "GET" || !webidl.is.Blob(blob)) {
+ if (request2.method !== "GET" || !webidl.is.Blob(blob)) {
return Promise.resolve(makeNetworkError("invalid method"));
}
const response = makeResponse();
const fullLength = blob.size;
const serializedFullLength = isomorphicEncode(`${fullLength}`);
const type = blob.type;
- if (!request7.headersList.contains("range", true)) {
+ if (!request2.headersList.contains("range", true)) {
const bodyWithType = extractBody(blob);
response.statusText = "OK";
response.body = bodyWithType[0];
@@ -38427,7 +37947,7 @@ var require_fetch2 = __commonJS({
response.headersList.set("content-type", type, true);
} else {
response.rangeRequested = true;
- const rangeHeader = request7.headersList.get("range", 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"));
@@ -38458,7 +37978,7 @@ var require_fetch2 = __commonJS({
return Promise.resolve(response);
}
case "data:": {
- const currentURL = requestCurrentURL(request7);
+ const currentURL = requestCurrentURL(request2);
const dataURLStruct = dataURLProcessor(currentURL);
if (dataURLStruct === "failure") {
return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
@@ -38547,41 +38067,41 @@ var require_fetch2 = __commonJS({
}
}
async function httpFetch(fetchParams) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
let actualResponse = null;
const timingInfo = fetchParams.timingInfo;
- if (request7.serviceWorkers === "all") {
+ if (request2.serviceWorkers === "all") {
}
if (response === null) {
- if (request7.redirect === "follow") {
- request7.serviceWorkers = "none";
+ if (request2.redirect === "follow") {
+ request2.serviceWorkers = "none";
}
actualResponse = response = await httpNetworkOrCacheFetch(fetchParams);
- if (request7.responseTainting === "cors" && corsCheck(request7, response) === "failure") {
+ if (request2.responseTainting === "cors" && corsCheck(request2, response) === "failure") {
return makeNetworkError("cors failure");
}
- if (TAOCheck(request7, response) === "failure") {
- request7.timingAllowFailed = true;
+ if (TAOCheck(request2, response) === "failure") {
+ request2.timingAllowFailed = true;
}
}
- if ((request7.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck(
- request7.origin,
- request7.client,
- request7.destination,
+ 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 (request7.redirect !== "manual") {
+ if (request2.redirect !== "manual") {
fetchParams.controller.connection.destroy(void 0, false);
}
- if (request7.redirect === "error") {
+ if (request2.redirect === "error") {
response = makeNetworkError("unexpected redirect");
- } else if (request7.redirect === "manual") {
+ } else if (request2.redirect === "manual") {
response = actualResponse;
- } else if (request7.redirect === "follow") {
+ } else if (request2.redirect === "follow") {
response = await httpRedirectFetch(fetchParams, response);
} else {
assert(false);
@@ -38591,13 +38111,13 @@ var require_fetch2 = __commonJS({
return response;
}
function httpRedirectFetch(fetchParams, response) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
const actualResponse = response.internalResponse ? response.internalResponse : response;
let locationURL;
try {
locationURL = responseLocationURL(
actualResponse,
- requestCurrentURL(request7).hash
+ requestCurrentURL(request2).hash
);
if (locationURL == null) {
return response;
@@ -38608,63 +38128,63 @@ var require_fetch2 = __commonJS({
if (!urlIsHttpHttpsScheme(locationURL)) {
return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
}
- if (request7.redirectCount === 20) {
+ if (request2.redirectCount === 20) {
return Promise.resolve(makeNetworkError("redirect count exceeded"));
}
- request7.redirectCount += 1;
- if (request7.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request7, locationURL)) {
+ 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 (request7.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
+ if (request2.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
return Promise.resolve(makeNetworkError(
'URL cannot contain credentials for request mode "cors"'
));
}
- if (actualResponse.status !== 303 && request7.body != null && request7.body.source == null) {
+ if (actualResponse.status !== 303 && request2.body != null && request2.body.source == null) {
return Promise.resolve(makeNetworkError());
}
- if ([301, 302].includes(actualResponse.status) && request7.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request7.method)) {
- request7.method = "GET";
- request7.body = null;
+ 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) {
- request7.headersList.delete(headerName);
+ request2.headersList.delete(headerName);
}
}
- if (!sameOrigin(requestCurrentURL(request7), locationURL)) {
- request7.headersList.delete("authorization", true);
- request7.headersList.delete("proxy-authorization", true);
- request7.headersList.delete("cookie", true);
- request7.headersList.delete("host", true);
+ 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 (request7.body != null) {
- assert(request7.body.source != null);
- request7.body = safelyExtractBody(request7.body.source)[0];
+ 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;
}
- request7.urlList.push(locationURL);
- setRequestReferrerPolicyOnRedirect(request7, actualResponse);
+ request2.urlList.push(locationURL);
+ setRequestReferrerPolicyOnRedirect(request2, actualResponse);
return mainFetch(fetchParams, true);
}
async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let httpFetchParams = null;
let httpRequest = null;
let response = null;
const httpCache = null;
const revalidatingFlag = false;
- if (request7.window === "no-window" && request7.redirect === "error") {
+ if (request2.window === "no-window" && request2.redirect === "error") {
httpFetchParams = fetchParams;
- httpRequest = request7;
+ httpRequest = request2;
} else {
- httpRequest = cloneRequest(request7);
+ httpRequest = cloneRequest(request2);
httpFetchParams = { ...fetchParams };
httpFetchParams.request = httpRequest;
}
- const includeCredentials = request7.credentials === "include" || request7.credentials === "same-origin" && request7.responseTainting === "basic";
+ 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)) {
@@ -38741,7 +38261,7 @@ var require_fetch2 = __commonJS({
}
response.requestIncludesCredentials = includeCredentials;
if (response.status === 407) {
- if (request7.window === "no-window") {
+ if (request2.window === "no-window") {
return makeNetworkError();
}
if (isCancelled(fetchParams)) {
@@ -38753,7 +38273,7 @@ var require_fetch2 = __commonJS({
// 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
- (request7.body == null || request7.body.source != null)
+ (request2.body == null || request2.body.source != null)
) {
if (isCancelled(fetchParams)) {
return makeAppropriateNetworkError(fetchParams);
@@ -38783,21 +38303,21 @@ var require_fetch2 = __commonJS({
}
}
};
- const request7 = fetchParams.request;
+ const request2 = fetchParams.request;
let response = null;
const timingInfo = fetchParams.timingInfo;
const httpCache = null;
if (httpCache == null) {
- request7.cache = "no-store";
+ request2.cache = "no-store";
}
const newConnection = forceNewConnection ? "yes" : "no";
- if (request7.mode === "websocket") {
+ if (request2.mode === "websocket") {
} else {
}
let requestBody = null;
- if (request7.body == null && fetchParams.processRequestEndOfBody) {
+ if (request2.body == null && fetchParams.processRequestEndOfBody) {
queueMicrotask(() => fetchParams.processRequestEndOfBody());
- } else if (request7.body != null) {
+ } else if (request2.body != null) {
const processBodyChunk = async function* (bytes) {
if (isCancelled(fetchParams)) {
return;
@@ -38825,7 +38345,7 @@ var require_fetch2 = __commonJS({
};
requestBody = async function* () {
try {
- for await (const bytes of request7.body.stream) {
+ for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
}
processEndOfBody();
@@ -38932,17 +38452,17 @@ var require_fetch2 = __commonJS({
}
return response;
function dispatch({ body }) {
- const url = requestCurrentURL(request7);
+ 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: request7.method,
- body: agent.isMockActive ? request7.body && (request7.body.source || request7.body.stream) : body,
- headers: request7.headersList.entries,
+ method: request2.method,
+ body: agent.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body,
+ headers: request2.headersList.entries,
maxRedirections: 0,
- upgrade: request7.mode === "websocket" ? "websocket" : void 0
+ upgrade: request2.mode === "websocket" ? "websocket" : void 0
},
{
body: null,
@@ -38971,9 +38491,9 @@ var require_fetch2 = __commonJS({
}
const location = headersList.get("location", true);
this.body = new Readable({ read: resume });
- const willFollow = location && request7.redirect === "follow" && redirectStatusSet.has(status);
+ const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status);
const decoders = [];
- if (request7.method !== "HEAD" && request7.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
+ if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
const contentEncoding = headersList.get("content-encoding", true);
const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
for (let i = codings.length - 1; i >= 0; --i) {
@@ -39130,31 +38650,31 @@ var require_cache4 = __commonJS({
webidl.util.markAsUncloneable(this);
this.#relevantRequestResponseList = arguments[1];
}
- async match(request7, options = {}) {
+ async match(request2, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.match";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
- const p = this.#internalMatchAll(request7, options, 1);
+ const p = this.#internalMatchAll(request2, options, 1);
if (p.length === 0) {
return;
}
return p[0];
}
- async matchAll(request7 = void 0, options = {}) {
+ async matchAll(request2 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.matchAll";
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
- return this.#internalMatchAll(request7, options);
+ return this.#internalMatchAll(request2, options);
}
- async add(request7) {
+ async add(request2) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.add";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7);
- const requests = [request7];
+ request2 = webidl.converters.RequestInfo(request2);
+ const requests = [request2];
const responseArrayPromise = this.addAll(requests);
return await responseArrayPromise;
}
@@ -39164,19 +38684,19 @@ var require_cache4 = __commonJS({
webidl.argumentLengthCheck(arguments, 1, prefix);
const responsePromises = [];
const requestList = [];
- for (let request7 of requests) {
- if (request7 === void 0) {
+ for (let request2 of requests) {
+ if (request2 === void 0) {
throw webidl.errors.conversionFailed({
prefix,
argument: "Argument 1",
types: ["undefined is not allowed"]
});
}
- request7 = webidl.converters.RequestInfo(request7);
- if (typeof request7 === "string") {
+ request2 = webidl.converters.RequestInfo(request2);
+ if (typeof request2 === "string") {
continue;
}
- const r = getRequestState(request7);
+ const r = getRequestState(request2);
if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") {
throw webidl.errors.exception({
header: prefix,
@@ -39185,8 +38705,8 @@ var require_cache4 = __commonJS({
}
}
const fetchControllers = [];
- for (const request7 of requests) {
- const r = getRequestState(new Request(request7));
+ for (const request2 of requests) {
+ const r = getRequestState(new Request(request2));
if (!urlIsHttpHttpsScheme(r.url)) {
throw webidl.errors.exception({
header: prefix,
@@ -39263,17 +38783,17 @@ var require_cache4 = __commonJS({
});
return cacheJobPromise.promise;
}
- async put(request7, response) {
+ async put(request2, response) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.put";
webidl.argumentLengthCheck(arguments, 2, prefix);
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
response = webidl.converters.Response(response, prefix, "response");
let innerRequest = null;
- if (webidl.is.Request(request7)) {
- innerRequest = getRequestState(request7);
+ if (webidl.is.Request(request2)) {
+ innerRequest = getRequestState(request2);
} else {
- innerRequest = getRequestState(new Request(request7));
+ innerRequest = getRequestState(new Request(request2));
}
if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") {
throw webidl.errors.exception({
@@ -39344,21 +38864,21 @@ var require_cache4 = __commonJS({
});
return cacheJobPromise.promise;
}
- async delete(request7, options = {}) {
+ async delete(request2, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.delete";
webidl.argumentLengthCheck(arguments, 1, prefix);
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
- if (webidl.is.Request(request7)) {
- r = getRequestState(request7);
+ if (webidl.is.Request(request2)) {
+ r = getRequestState(request2);
if (r.method !== "GET" && !options.ignoreMethod) {
return false;
}
} else {
- assert(typeof request7 === "string");
- r = getRequestState(new Request(request7));
+ assert(typeof request2 === "string");
+ r = getRequestState(new Request(request2));
}
const operations = [];
const operation = {
@@ -39390,25 +38910,25 @@ var require_cache4 = __commonJS({
* @param {import('../../../types/cache').CacheQueryOptions} options
* @returns {Promise}
*/
- async keys(request7 = void 0, options = {}) {
+ async keys(request2 = void 0, options = {}) {
webidl.brandCheck(this, _Cache);
const prefix = "Cache.keys";
- if (request7 !== void 0) request7 = webidl.converters.RequestInfo(request7);
+ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.CacheQueryOptions(options, prefix, "options");
let r = null;
- if (request7 !== void 0) {
- if (webidl.is.Request(request7)) {
- r = getRequestState(request7);
+ if (request2 !== void 0) {
+ if (webidl.is.Request(request2)) {
+ r = getRequestState(request2);
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request7 === "string") {
- r = getRequestState(new Request(request7));
+ } else if (typeof request2 === "string") {
+ r = getRequestState(new Request(request2));
}
}
const promise = createDeferredPromise();
const requests = [];
- if (request7 === void 0) {
+ if (request2 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
requests.push(requestResponse[0]);
}
@@ -39420,9 +38940,9 @@ var require_cache4 = __commonJS({
}
queueMicrotask(() => {
const requestList = [];
- for (const request8 of requests) {
+ for (const request3 of requests) {
const requestObject = fromInnerRequest(
- request8,
+ request3,
void 0,
new AbortController().signal,
"immutable"
@@ -39541,9 +39061,9 @@ var require_cache4 = __commonJS({
* @param {import('../../../types/cache').CacheQueryOptions | undefined} options
* @returns {boolean}
*/
- #requestMatchesCachedItem(requestQuery, request7, response = null, options) {
+ #requestMatchesCachedItem(requestQuery, request2, response = null, options) {
const queryURL = new URL(requestQuery.url);
- const cachedURL = new URL(request7.url);
+ const cachedURL = new URL(request2.url);
if (options?.ignoreSearch) {
cachedURL.search = "";
queryURL.search = "";
@@ -39559,7 +39079,7 @@ var require_cache4 = __commonJS({
if (fieldValue === "*") {
return false;
}
- const requestValue = request7.headersList.get(fieldValue);
+ const requestValue = request2.headersList.get(fieldValue);
const queryValue = requestQuery.headersList.get(fieldValue);
if (requestValue !== queryValue) {
return false;
@@ -39567,20 +39087,20 @@ var require_cache4 = __commonJS({
}
return true;
}
- #internalMatchAll(request7, options, maxResponses = Infinity) {
+ #internalMatchAll(request2, options, maxResponses = Infinity) {
let r = null;
- if (request7 !== void 0) {
- if (webidl.is.Request(request7)) {
- r = getRequestState(request7);
+ if (request2 !== void 0) {
+ if (webidl.is.Request(request2)) {
+ r = getRequestState(request2);
if (r.method !== "GET" && !options.ignoreMethod) {
return [];
}
- } else if (typeof request7 === "string") {
- r = getRequestState(new Request(request7));
+ } else if (typeof request2 === "string") {
+ r = getRequestState(new Request(request2));
}
}
const responses = [];
- if (request7 === void 0) {
+ if (request2 === void 0) {
for (const requestResponse of this.#relevantRequestResponseList) {
responses.push(requestResponse[1]);
}
@@ -39672,21 +39192,21 @@ var require_cachestorage2 = __commonJS({
}
webidl.util.markAsUncloneable(this);
}
- async match(request7, options = {}) {
+ async match(request2, options = {}) {
webidl.brandCheck(this, _CacheStorage);
webidl.argumentLengthCheck(arguments, 1, "CacheStorage.match");
- request7 = webidl.converters.RequestInfo(request7);
+ request2 = webidl.converters.RequestInfo(request2);
options = webidl.converters.MultiCacheQueryOptions(options);
if (options.cacheName != null) {
if (this.#caches.has(options.cacheName)) {
const cacheList = this.#caches.get(options.cacheName);
const cache = new Cache(kConstruct, cacheList);
- return await cache.match(request7, options);
+ return await cache.match(request2, options);
}
} else {
for (const cacheList of this.#caches.values()) {
const cache = new Cache(kConstruct, cacheList);
- const response = await cache.match(request7, options);
+ const response = await cache.match(request2, options);
if (response !== void 0) {
return response;
}
@@ -40849,7 +40369,7 @@ var require_connection2 = __commonJS({
function establishWebSocketConnection(url, protocols, client, handler, options) {
const requestURL = url;
requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:";
- const request7 = makeRequest({
+ const request2 = makeRequest({
urlList: [requestURL],
client,
serviceWorkers: "none",
@@ -40861,18 +40381,18 @@ var require_connection2 = __commonJS({
});
if (options.headers) {
const headersList = getHeadersList(new Headers(options.headers));
- request7.headersList = headersList;
+ request2.headersList = headersList;
}
const keyValue = crypto.randomBytes(16).toString("base64");
- request7.headersList.append("sec-websocket-key", keyValue, true);
- request7.headersList.append("sec-websocket-version", "13", true);
+ request2.headersList.append("sec-websocket-key", keyValue, true);
+ request2.headersList.append("sec-websocket-version", "13", true);
for (const protocol of protocols) {
- request7.headersList.append("sec-websocket-protocol", protocol, true);
+ request2.headersList.append("sec-websocket-protocol", protocol, true);
}
const permessageDeflate = "permessage-deflate; client_max_window_bits";
- request7.headersList.append("sec-websocket-extensions", permessageDeflate, true);
+ request2.headersList.append("sec-websocket-extensions", permessageDeflate, true);
const controller = fetching({
- request: request7,
+ request: request2,
useParallelQueue: true,
dispatcher: options.dispatcher,
processResponse(response) {
@@ -40912,7 +40432,7 @@ var require_connection2 = __commonJS({
}
const secProtocol = response.headersList.get("Sec-WebSocket-Protocol");
if (secProtocol !== null) {
- const requestProtocols = getDecodeSplit("sec-websocket-protocol", request7.headersList);
+ const requestProtocols = getDecodeSplit("sec-websocket-protocol", request2.headersList);
if (!requestProtocols.includes(secProtocol)) {
failWebsocketConnection(handler, 1002, "Protocol was not set in the opening handshake.");
return;
@@ -43057,1526 +42577,21 @@ function getUserAgent() {
return "";
}
-// node_modules/@octokit/auth-app/node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION = "0.0.0-development";
-var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
-var DEFAULTS = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent
- },
- mediaType: {
- format: ""
- }
-};
-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] });
- }
- });
- return result;
-}
-function removeUndefinedProperties(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
- }
- 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];
- }
- }
- 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 === "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("");
- }
- }
- 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);
- }
- 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 body;
- 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) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
- }
- }
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-function endpointWithDefaults(defaults, route, options) {
- return parse(merge(defaults, route, options));
-}
-function withDefaults(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults.bind(null, DEFAULTS22),
- merge: merge.bind(null, DEFAULTS22),
- parse
- });
-}
-var endpoint = withDefaults(null, DEFAULTS);
-
-// node_modules/@octokit/auth-app/node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
-
-// node_modules/@octokit/request-error/dist-src/index.js
-var 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);
- this.name = "HttpError";
- this.status = Number.parseInt(statusCode);
- if (Number.isNaN(this.status)) {
- this.status = 0;
- }
- if ("response" in options) {
- this.response = options.response;
- }
- const requestCopy = Object.assign({}, options.request);
- if (options.request.headers.authorization) {
- requestCopy.headers = Object.assign({}, options.request.headers, {
- authorization: options.request.headers.authorization.replace(
- /(? [
- name,
- String(value)
- ])
- );
- let fetchResponse;
- try {
- fetchResponse = await fetch(requestOptions.url, {
- method: requestOptions.method,
- body,
- 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" }
- });
- } catch (error) {
- let message = "Unknown Error";
- if (error instanceof Error) {
- if (error.name === "AbortError") {
- error.status = 500;
- throw error;
- }
- 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;
- }
- }
- }
- 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;
- }
- throw new RequestError(fetchResponse.statusText, status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- 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(() => "");
- }
- const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
- if (isJSONResponse(mimetype)) {
- let text = "";
- try {
- text = await response.text();
- return JSON.parse(text);
- } catch (err) {
- return text;
- }
- } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
- } else {
- return response.arrayBuffer().catch(() => 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 endpoint22 = oldEndpoint.defaults(newDefaults);
- const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper(endpoint22.parse(endpointOptions));
- }
- const request22 = (route2, parameters2) => {
- return fetchWrapper(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
- );
- };
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults2.bind(null, endpoint22)
- });
- return endpointOptions.request.hook(request22, endpointOptions);
- };
- return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults2.bind(null, endpoint22)
- });
-}
-var request = withDefaults2(endpoint, defaults_default);
-
-// node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION3 = "0.0.0-development";
-var userAgent2 = `octokit-endpoint.js/${VERSION3} ${getUserAgent()}`;
-var DEFAULTS2 = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent2
- },
- mediaType: {
- format: ""
- }
-};
-function lowercaseKeys2(object) {
- if (!object) {
- return {};
- }
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-function isPlainObject3(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 mergeDeep2(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach((key) => {
- if (isPlainObject3(options[key])) {
- if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep2(defaults[key], options[key]);
- } else {
- Object.assign(result, { [key]: options[key] });
- }
- });
- return result;
-}
-function removeUndefinedProperties2(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
- }
- return obj;
-}
-function merge2(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 = lowercaseKeys2(options.headers);
- removeUndefinedProperties2(options);
- removeUndefinedProperties2(options.headers);
- const mergedOptions = mergeDeep2(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 addQueryParameters2(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 urlVariableRegex2 = /\{[^{}}]+\}/g;
-function removeNonChars2(variableName) {
- return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
-}
-function omit2(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 encodeReserved2(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 encodeUnreserved2(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-function encodeValue2(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved2(value) : encodeUnreserved2(value);
- if (key) {
- return encodeUnreserved2(key) + "=" + value;
- } else {
- return value;
- }
-}
-function isDefined2(value) {
- return value !== void 0 && value !== null;
-}
-function isKeyOperator2(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues2(context, operator, key, modifier) {
- var value = context[key], result = [];
- if (isDefined2(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(
- encodeValue2(operator, value, isKeyOperator2(operator) ? key : "")
- );
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined2).forEach(function(value2) {
- result.push(
- encodeValue2(operator, value2, isKeyOperator2(operator) ? key : "")
- );
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined2(value[k])) {
- result.push(encodeValue2(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
- if (Array.isArray(value)) {
- value.filter(isDefined2).forEach(function(value2) {
- tmp.push(encodeValue2(operator, value2));
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined2(value[k])) {
- tmp.push(encodeUnreserved2(k));
- tmp.push(encodeValue2(operator, value[k].toString()));
- }
- });
- }
- if (isKeyOperator2(operator)) {
- result.push(encodeUnreserved2(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined2(value)) {
- result.push(encodeUnreserved2(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved2(key) + "=");
- } else if (value === "") {
- result.push("");
- }
- }
- return result;
-}
-function parseUrl2(template) {
- return {
- expand: expand2.bind(null, template)
- };
-}
-function expand2(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(getValues2(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 encodeReserved2(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 body;
- let parameters = omit2(options, [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "mediaType"
- ]);
- const urlVariableNames = extractUrlVariableNames2(url);
- url = parseUrl2(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 = omit2(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 = addQueryParameters2(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
- }
- }
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-function endpointWithDefaults2(defaults, route, options) {
- return parse2(merge2(defaults, route, options));
-}
-function withDefaults3(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge2(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults2.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults3.bind(null, DEFAULTS22),
- merge: merge2.bind(null, DEFAULTS22),
- parse: parse2
- });
-}
-var endpoint2 = withDefaults3(null, DEFAULTS2);
-
-// node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse2 = __toESM(require_fast_content_type_parse2(), 1);
-var VERSION4 = "9.2.4";
-var defaults_default2 = {
- headers: {
- "user-agent": `octokit-request.js/${VERSION4} ${getUserAgent()}`
- }
-};
-function isPlainObject4(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 fetchWrapper2(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 body = isPlainObject4(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
- 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" }
- });
- } catch (error) {
- let message = "Unknown Error";
- if (error instanceof Error) {
- if (error.name === "AbortError") {
- error.status = 500;
- throw error;
- }
- 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;
- }
- }
- }
- 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;
- }
- throw new RequestError(fetchResponse.statusText, status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status === 304) {
- octokitResponse.data = await getResponseData2(fetchResponse);
- throw new RequestError("Not modified", status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status >= 400) {
- octokitResponse.data = await getResponseData2(fetchResponse);
- throw new RequestError(toErrorMessage2(octokitResponse.data), status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData2(fetchResponse) : fetchResponse.body;
- return octokitResponse;
-}
-async function getResponseData2(response) {
- const contentType = response.headers.get("content-type");
- if (!contentType) {
- return response.text().catch(() => "");
- }
- const mimetype = (0, import_fast_content_type_parse2.safeParse)(contentType);
- if (isJSONResponse2(mimetype)) {
- let text = "";
- try {
- text = await response.text();
- return JSON.parse(text);
- } catch (err) {
- return text;
- }
- } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
- } else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
- }
-}
-function isJSONResponse2(mimetype) {
- return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
-}
-function toErrorMessage2(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 withDefaults4(oldEndpoint, newDefaults) {
- const endpoint22 = oldEndpoint.defaults(newDefaults);
- const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper2(endpoint22.parse(endpointOptions));
- }
- const request22 = (route2, parameters2) => {
- return fetchWrapper2(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
- );
- };
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults4.bind(null, endpoint22)
- });
- return endpointOptions.request.hook(request22, endpointOptions);
- };
- return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults4.bind(null, endpoint22)
- });
-}
-var request2 = withDefaults4(endpoint2, defaults_default2);
-
-// node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION5 = "0.0.0-development";
-var userAgent3 = `octokit-endpoint.js/${VERSION5} ${getUserAgent()}`;
-var DEFAULTS3 = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent3
- },
- mediaType: {
- format: ""
- }
-};
-function lowercaseKeys3(object) {
- if (!object) {
- return {};
- }
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-function isPlainObject5(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 mergeDeep3(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach((key) => {
- if (isPlainObject5(options[key])) {
- if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep3(defaults[key], options[key]);
- } else {
- Object.assign(result, { [key]: options[key] });
- }
- });
- return result;
-}
-function removeUndefinedProperties3(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
- }
- return obj;
-}
-function merge3(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 = lowercaseKeys3(options.headers);
- removeUndefinedProperties3(options);
- removeUndefinedProperties3(options.headers);
- const mergedOptions = mergeDeep3(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 addQueryParameters3(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 urlVariableRegex3 = /\{[^{}}]+\}/g;
-function removeNonChars3(variableName) {
- return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
-}
-function omit3(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 encodeReserved3(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 encodeUnreserved3(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-function encodeValue3(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved3(value) : encodeUnreserved3(value);
- if (key) {
- return encodeUnreserved3(key) + "=" + value;
- } else {
- return value;
- }
-}
-function isDefined3(value) {
- return value !== void 0 && value !== null;
-}
-function isKeyOperator3(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues3(context, operator, key, modifier) {
- var value = context[key], result = [];
- if (isDefined3(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(
- encodeValue3(operator, value, isKeyOperator3(operator) ? key : "")
- );
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined3).forEach(function(value2) {
- result.push(
- encodeValue3(operator, value2, isKeyOperator3(operator) ? key : "")
- );
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined3(value[k])) {
- result.push(encodeValue3(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
- if (Array.isArray(value)) {
- value.filter(isDefined3).forEach(function(value2) {
- tmp.push(encodeValue3(operator, value2));
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined3(value[k])) {
- tmp.push(encodeUnreserved3(k));
- tmp.push(encodeValue3(operator, value[k].toString()));
- }
- });
- }
- if (isKeyOperator3(operator)) {
- result.push(encodeUnreserved3(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined3(value)) {
- result.push(encodeUnreserved3(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved3(key) + "=");
- } else if (value === "") {
- result.push("");
- }
- }
- return result;
-}
-function parseUrl3(template) {
- return {
- expand: expand3.bind(null, template)
- };
-}
-function expand3(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(getValues3(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 encodeReserved3(literal);
- }
- }
- );
- if (template === "/") {
- return template;
- } else {
- return template.replace(/\/$/, "");
- }
-}
-function parse3(options) {
- let method = options.method.toUpperCase();
- let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
- let headers = Object.assign({}, options.headers);
- let body;
- let parameters = omit3(options, [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "mediaType"
- ]);
- const urlVariableNames = extractUrlVariableNames3(url);
- url = parseUrl3(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 = omit3(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 = addQueryParameters3(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
- }
- }
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-function endpointWithDefaults3(defaults, route, options) {
- return parse3(merge3(defaults, route, options));
-}
-function withDefaults5(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge3(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults3.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults5.bind(null, DEFAULTS22),
- merge: merge3.bind(null, DEFAULTS22),
- parse: parse3
- });
-}
-var endpoint3 = withDefaults5(null, DEFAULTS3);
-
-// node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse3 = __toESM(require_fast_content_type_parse3(), 1);
-var VERSION6 = "9.2.4";
-var defaults_default3 = {
- headers: {
- "user-agent": `octokit-request.js/${VERSION6} ${getUserAgent()}`
- }
-};
-function isPlainObject6(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 fetchWrapper3(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 body = isPlainObject6(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
- 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" }
- });
- } catch (error) {
- let message = "Unknown Error";
- if (error instanceof Error) {
- if (error.name === "AbortError") {
- error.status = 500;
- throw error;
- }
- 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;
- }
- }
- }
- 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;
- }
- throw new RequestError(fetchResponse.statusText, status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status === 304) {
- octokitResponse.data = await getResponseData3(fetchResponse);
- throw new RequestError("Not modified", status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status >= 400) {
- octokitResponse.data = await getResponseData3(fetchResponse);
- throw new RequestError(toErrorMessage3(octokitResponse.data), status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData3(fetchResponse) : fetchResponse.body;
- return octokitResponse;
-}
-async function getResponseData3(response) {
- const contentType = response.headers.get("content-type");
- if (!contentType) {
- return response.text().catch(() => "");
- }
- const mimetype = (0, import_fast_content_type_parse3.safeParse)(contentType);
- if (isJSONResponse3(mimetype)) {
- let text = "";
- try {
- text = await response.text();
- return JSON.parse(text);
- } catch (err) {
- return text;
- }
- } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
- } else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
- }
-}
-function isJSONResponse3(mimetype) {
- return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
-}
-function toErrorMessage3(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 withDefaults6(oldEndpoint, newDefaults) {
- const endpoint22 = oldEndpoint.defaults(newDefaults);
- const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper3(endpoint22.parse(endpointOptions));
- }
- const request22 = (route2, parameters2) => {
- return fetchWrapper3(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
- );
- };
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults6.bind(null, endpoint22)
- });
- return endpointOptions.request.hook(request22, endpointOptions);
- };
- return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults6.bind(null, endpoint22)
- });
-}
-var request3 = withDefaults6(endpoint3, defaults_default3);
-
-// node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION7 = "0.0.0-development";
-var userAgent4 = `octokit-endpoint.js/${VERSION7} ${getUserAgent()}`;
-var DEFAULTS4 = {
+// node_modules/@octokit/endpoint/dist-bundle/index.js
+var VERSION = "0.0.0-development";
+var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
+var DEFAULTS = {
method: "GET",
baseUrl: "https://api.github.com",
headers: {
accept: "application/vnd.github.v3+json",
- "user-agent": userAgent4
+ "user-agent": userAgent
},
mediaType: {
format: ""
}
};
-function lowercaseKeys4(object) {
+function lowercaseKeys(object) {
if (!object) {
return {};
}
@@ -44585,7 +42600,7 @@ function lowercaseKeys4(object) {
return newObj;
}, {});
}
-function isPlainObject7(value) {
+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);
@@ -44593,19 +42608,19 @@ function isPlainObject7(value) {
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 mergeDeep4(defaults, options) {
+function mergeDeep(defaults, options) {
const result = Object.assign({}, defaults);
Object.keys(options).forEach((key) => {
- if (isPlainObject7(options[key])) {
+ if (isPlainObject(options[key])) {
if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep4(defaults[key], options[key]);
+ else result[key] = mergeDeep(defaults[key], options[key]);
} else {
Object.assign(result, { [key]: options[key] });
}
});
return result;
}
-function removeUndefinedProperties4(obj) {
+function removeUndefinedProperties(obj) {
for (const key in obj) {
if (obj[key] === void 0) {
delete obj[key];
@@ -44613,17 +42628,17 @@ function removeUndefinedProperties4(obj) {
}
return obj;
}
-function merge4(defaults, route, options) {
+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 = lowercaseKeys4(options.headers);
- removeUndefinedProperties4(options);
- removeUndefinedProperties4(options.headers);
- const mergedOptions = mergeDeep4(defaults || {}, options);
+ 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(
@@ -44634,7 +42649,7 @@ function merge4(defaults, route, options) {
}
return mergedOptions;
}
-function addQueryParameters4(url, parameters) {
+function addQueryParameters(url, parameters) {
const separator = /\?/.test(url) ? "&" : "?";
const names = Object.keys(parameters);
if (names.length === 0) {
@@ -44647,18 +42662,18 @@ function addQueryParameters4(url, parameters) {
return `${name}=${encodeURIComponent(parameters[name])}`;
}).join("&");
}
-var urlVariableRegex4 = /\{[^{}}]+\}/g;
-function removeNonChars4(variableName) {
+var urlVariableRegex = /\{[^{}}]+\}/g;
+function removeNonChars(variableName) {
return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
+ return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
}
-function omit4(object, keysToOmit) {
+function omit(object, keysToOmit) {
const result = { __proto__: null };
for (const key of Object.keys(object)) {
if (keysToOmit.indexOf(key) === -1) {
@@ -44667,7 +42682,7 @@ function omit4(object, keysToOmit) {
}
return result;
}
-function encodeReserved4(str) {
+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, "]");
@@ -44675,67 +42690,67 @@ function encodeReserved4(str) {
return part;
}).join("");
}
-function encodeUnreserved4(str) {
+function encodeUnreserved(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
});
}
-function encodeValue4(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved4(value) : encodeUnreserved4(value);
+function encodeValue(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
if (key) {
- return encodeUnreserved4(key) + "=" + value;
+ return encodeUnreserved(key) + "=" + value;
} else {
return value;
}
}
-function isDefined4(value) {
+function isDefined(value) {
return value !== void 0 && value !== null;
}
-function isKeyOperator4(operator) {
+function isKeyOperator(operator) {
return operator === ";" || operator === "&" || operator === "?";
}
-function getValues4(context, operator, key, modifier) {
+function getValues(context, operator, key, modifier) {
var value = context[key], result = [];
- if (isDefined4(value) && value !== "") {
+ 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(
- encodeValue4(operator, value, isKeyOperator4(operator) ? key : "")
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
);
} else {
if (modifier === "*") {
if (Array.isArray(value)) {
- value.filter(isDefined4).forEach(function(value2) {
+ value.filter(isDefined).forEach(function(value2) {
result.push(
- encodeValue4(operator, value2, isKeyOperator4(operator) ? key : "")
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
);
});
} else {
Object.keys(value).forEach(function(k) {
- if (isDefined4(value[k])) {
- result.push(encodeValue4(operator, value[k], k));
+ if (isDefined(value[k])) {
+ result.push(encodeValue(operator, value[k], k));
}
});
}
} else {
const tmp = [];
if (Array.isArray(value)) {
- value.filter(isDefined4).forEach(function(value2) {
- tmp.push(encodeValue4(operator, value2));
+ value.filter(isDefined).forEach(function(value2) {
+ tmp.push(encodeValue(operator, value2));
});
} else {
Object.keys(value).forEach(function(k) {
- if (isDefined4(value[k])) {
- tmp.push(encodeUnreserved4(k));
- tmp.push(encodeValue4(operator, value[k].toString()));
+ if (isDefined(value[k])) {
+ tmp.push(encodeUnreserved(k));
+ tmp.push(encodeValue(operator, value[k].toString()));
}
});
}
- if (isKeyOperator4(operator)) {
- result.push(encodeUnreserved4(key) + "=" + tmp.join(","));
+ if (isKeyOperator(operator)) {
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
} else if (tmp.length !== 0) {
result.push(tmp.join(","));
}
@@ -44743,23 +42758,23 @@ function getValues4(context, operator, key, modifier) {
}
} else {
if (operator === ";") {
- if (isDefined4(value)) {
- result.push(encodeUnreserved4(key));
+ if (isDefined(value)) {
+ result.push(encodeUnreserved(key));
}
} else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved4(key) + "=");
+ result.push(encodeUnreserved(key) + "=");
} else if (value === "") {
result.push("");
}
}
return result;
}
-function parseUrl4(template) {
+function parseUrl(template) {
return {
- expand: expand4.bind(null, template)
+ expand: expand.bind(null, template)
};
}
-function expand4(template, context) {
+function expand(template, context) {
var operators = ["+", "#", ".", "/", ";", "?", "&"];
template = template.replace(
/\{([^\{\}]+)\}|([^\{\}]+)/g,
@@ -44773,7 +42788,7 @@ function expand4(template, context) {
}
expression.split(/,/g).forEach(function(variable) {
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
- values.push(getValues4(context, operator, tmp[1], tmp[2] || tmp[3]));
+ values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
});
if (operator && operator !== "+") {
var separator = ",";
@@ -44787,7 +42802,7 @@ function expand4(template, context) {
return values.join(",");
}
} else {
- return encodeReserved4(literal);
+ return encodeReserved(literal);
}
}
);
@@ -44797,12 +42812,12 @@ function expand4(template, context) {
return template.replace(/\/$/, "");
}
}
-function parse4(options) {
+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 body;
- let parameters = omit4(options, [
+ let parameters = omit(options, [
"method",
"baseUrl",
"url",
@@ -44810,13 +42825,13 @@ function parse4(options) {
"request",
"mediaType"
]);
- const urlVariableNames = extractUrlVariableNames4(url);
- url = parseUrl4(url).expand(parameters);
+ 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 = omit4(parameters, omittedParameters);
+ const remainingParameters = omit(parameters, omittedParameters);
const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
if (!isBinaryRequest) {
if (options.mediaType.format) {
@@ -44838,7 +42853,7 @@ function parse4(options) {
}
}
if (["GET", "HEAD"].includes(method)) {
- url = addQueryParameters4(url, remainingParameters);
+ url = addQueryParameters(url, remainingParameters);
} else {
if ("data" in remainingParameters) {
body = remainingParameters.data;
@@ -44860,518 +42875,71 @@ function parse4(options) {
options.request ? { request: options.request } : null
);
}
-function endpointWithDefaults4(defaults, route, options) {
- return parse4(merge4(defaults, route, options));
+function endpointWithDefaults(defaults, route, options) {
+ return parse(merge(defaults, route, options));
}
-function withDefaults7(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge4(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults4.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults7.bind(null, DEFAULTS22),
- merge: merge4.bind(null, DEFAULTS22),
- parse: parse4
+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 endpoint4 = withDefaults7(null, DEFAULTS4);
+var endpoint = withDefaults(null, DEFAULTS);
-// node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse4 = __toESM(require_fast_content_type_parse4(), 1);
-var VERSION8 = "9.2.4";
-var defaults_default4 = {
- headers: {
- "user-agent": `octokit-request.js/${VERSION8} ${getUserAgent()}`
- }
-};
-function isPlainObject8(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 fetchWrapper4(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 body = isPlainObject8(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(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,
- 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" }
- });
- } catch (error) {
- let message = "Unknown Error";
- if (error instanceof Error) {
- if (error.name === "AbortError") {
- error.status = 500;
- throw error;
- }
- 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;
- }
- }
- }
- 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;
- }
- throw new RequestError(fetchResponse.statusText, status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status === 304) {
- octokitResponse.data = await getResponseData4(fetchResponse);
- throw new RequestError("Not modified", status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status >= 400) {
- octokitResponse.data = await getResponseData4(fetchResponse);
- throw new RequestError(toErrorMessage4(octokitResponse.data), status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData4(fetchResponse) : fetchResponse.body;
- return octokitResponse;
-}
-async function getResponseData4(response) {
- const contentType = response.headers.get("content-type");
- if (!contentType) {
- return response.text().catch(() => "");
- }
- const mimetype = (0, import_fast_content_type_parse4.safeParse)(contentType);
- if (isJSONResponse4(mimetype)) {
- let text = "";
- try {
- text = await response.text();
- return JSON.parse(text);
- } catch (err) {
- return text;
- }
- } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
- } else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
- }
-}
-function isJSONResponse4(mimetype) {
- return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
-}
-function toErrorMessage4(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 withDefaults8(oldEndpoint, newDefaults) {
- const endpoint22 = oldEndpoint.defaults(newDefaults);
- const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper4(endpoint22.parse(endpointOptions));
- }
- const request22 = (route2, parameters2) => {
- return fetchWrapper4(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
- );
- };
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults8.bind(null, endpoint22)
- });
- return endpointOptions.request.hook(request22, endpointOptions);
- };
- return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults8.bind(null, endpoint22)
- });
-}
-var request4 = withDefaults8(endpoint4, defaults_default4);
+// node_modules/@octokit/request/dist-bundle/index.js
+var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
-// node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION9 = "0.0.0-development";
-var userAgent5 = `octokit-endpoint.js/${VERSION9} ${getUserAgent()}`;
-var DEFAULTS5 = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent5
- },
- mediaType: {
- format: ""
- }
-};
-function lowercaseKeys5(object) {
- if (!object) {
- return {};
- }
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-function isPlainObject9(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 mergeDeep5(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach((key) => {
- if (isPlainObject9(options[key])) {
- if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep5(defaults[key], options[key]);
- } else {
- Object.assign(result, { [key]: options[key] });
- }
- });
- return result;
-}
-function removeUndefinedProperties5(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
- }
- return obj;
-}
-function merge5(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 = lowercaseKeys5(options.headers);
- removeUndefinedProperties5(options);
- removeUndefinedProperties5(options.headers);
- const mergedOptions = mergeDeep5(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 addQueryParameters5(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 urlVariableRegex5 = /\{[^{}}]+\}/g;
-function removeNonChars5(variableName) {
- return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
-}
-function omit5(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 encodeReserved5(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 encodeUnreserved5(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-function encodeValue5(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved5(value) : encodeUnreserved5(value);
- if (key) {
- return encodeUnreserved5(key) + "=" + value;
- } else {
- return value;
- }
-}
-function isDefined5(value) {
- return value !== void 0 && value !== null;
-}
-function isKeyOperator5(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues5(context, operator, key, modifier) {
- var value = context[key], result = [];
- if (isDefined5(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(
- encodeValue5(operator, value, isKeyOperator5(operator) ? key : "")
- );
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined5).forEach(function(value2) {
- result.push(
- encodeValue5(operator, value2, isKeyOperator5(operator) ? key : "")
- );
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined5(value[k])) {
- result.push(encodeValue5(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
- if (Array.isArray(value)) {
- value.filter(isDefined5).forEach(function(value2) {
- tmp.push(encodeValue5(operator, value2));
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined5(value[k])) {
- tmp.push(encodeUnreserved5(k));
- tmp.push(encodeValue5(operator, value[k].toString()));
- }
- });
- }
- if (isKeyOperator5(operator)) {
- result.push(encodeUnreserved5(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined5(value)) {
- result.push(encodeUnreserved5(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved5(key) + "=");
- } else if (value === "") {
- result.push("");
+// node_modules/@octokit/request-error/dist-src/index.js
+var 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);
+ this.name = "HttpError";
+ this.status = Number.parseInt(statusCode);
+ if (Number.isNaN(this.status)) {
+ this.status = 0;
}
- }
- return result;
-}
-function parseUrl5(template) {
- return {
- expand: expand5.bind(null, template)
- };
-}
-function expand5(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(getValues5(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 encodeReserved5(literal);
- }
+ if ("response" in options) {
+ this.response = options.response;
}
- );
- if (template === "/") {
- return template;
- } else {
- return template.replace(/\/$/, "");
- }
-}
-function parse5(options) {
- let method = options.method.toUpperCase();
- let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
- let headers = Object.assign({}, options.headers);
- let body;
- let parameters = omit5(options, [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "mediaType"
- ]);
- const urlVariableNames = extractUrlVariableNames5(url);
- url = parseUrl5(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 = omit5(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}`
+ const requestCopy = Object.assign({}, options.request);
+ if (options.request.headers.authorization) {
+ requestCopy.headers = Object.assign({}, options.request.headers, {
+ authorization: options.request.headers.authorization.replace(
+ /(? {
- const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
- return `application/vnd.github.${preview}-preview${format}`;
- }).join(",");
- }
- }
- }
- if (["GET", "HEAD"].includes(method)) {
- url = addQueryParameters5(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
+ });
}
+ requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
+ this.request = requestCopy;
}
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-function endpointWithDefaults5(defaults, route, options) {
- return parse5(merge5(defaults, route, options));
-}
-function withDefaults9(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge5(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults5.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults9.bind(null, DEFAULTS22),
- merge: merge5.bind(null, DEFAULTS22),
- parse: parse5
- });
-}
-var endpoint5 = withDefaults9(null, DEFAULTS5);
+};
-// node_modules/@octokit/oauth-methods/node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse5 = __toESM(require_fast_content_type_parse5(), 1);
-var VERSION10 = "9.2.4";
-var defaults_default5 = {
+// node_modules/@octokit/request/dist-bundle/index.js
+var VERSION2 = "10.0.3";
+var defaults_default = {
headers: {
- "user-agent": `octokit-request.js/${VERSION10} ${getUserAgent()}`
+ "user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
}
};
-function isPlainObject10(value) {
+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);
@@ -45379,7 +42947,7 @@ function isPlainObject10(value) {
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 fetchWrapper5(requestOptions) {
+async function fetchWrapper(requestOptions) {
const fetch = requestOptions.request?.fetch || globalThis.fetch;
if (!fetch) {
throw new Error(
@@ -45388,7 +42956,7 @@ async function fetchWrapper5(requestOptions) {
}
const log = requestOptions.request?.log || console;
const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
- const body = isPlainObject10(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
+ const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
const requestHeaders = Object.fromEntries(
Object.entries(requestOptions.headers).map(([name, value]) => [
name,
@@ -45461,29 +43029,29 @@ async function fetchWrapper5(requestOptions) {
});
}
if (status === 304) {
- octokitResponse.data = await getResponseData5(fetchResponse);
+ octokitResponse.data = await getResponseData(fetchResponse);
throw new RequestError("Not modified", status, {
response: octokitResponse,
request: requestOptions
});
}
if (status >= 400) {
- octokitResponse.data = await getResponseData5(fetchResponse);
- throw new RequestError(toErrorMessage5(octokitResponse.data), status, {
+ octokitResponse.data = await getResponseData(fetchResponse);
+ throw new RequestError(toErrorMessage(octokitResponse.data), status, {
response: octokitResponse,
request: requestOptions
});
}
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData5(fetchResponse) : fetchResponse.body;
+ octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
return octokitResponse;
}
-async function getResponseData5(response) {
+async function getResponseData(response) {
const contentType = response.headers.get("content-type");
if (!contentType) {
return response.text().catch(() => "");
}
- const mimetype = (0, import_fast_content_type_parse5.safeParse)(contentType);
- if (isJSONResponse5(mimetype)) {
+ const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
+ if (isJSONResponse(mimetype)) {
let text = "";
try {
text = await response.text();
@@ -45497,10 +43065,10 @@ async function getResponseData5(response) {
return response.arrayBuffer().catch(() => new ArrayBuffer(0));
}
}
-function isJSONResponse5(mimetype) {
+function isJSONResponse(mimetype) {
return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
}
-function toErrorMessage5(data) {
+function toErrorMessage(data) {
if (typeof data === "string") {
return data;
}
@@ -45513,51 +43081,51 @@ function toErrorMessage5(data) {
}
return `Unknown error: ${JSON.stringify(data)}`;
}
-function withDefaults10(oldEndpoint, newDefaults) {
- const endpoint22 = oldEndpoint.defaults(newDefaults);
+function withDefaults2(oldEndpoint, newDefaults) {
+ const endpoint2 = oldEndpoint.defaults(newDefaults);
const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
+ const endpointOptions = endpoint2.merge(route, parameters);
if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper5(endpoint22.parse(endpointOptions));
+ return fetchWrapper(endpoint2.parse(endpointOptions));
}
- const request22 = (route2, parameters2) => {
- return fetchWrapper5(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
+ const request2 = (route2, parameters2) => {
+ return fetchWrapper(
+ endpoint2.parse(endpoint2.merge(route2, parameters2))
);
};
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults10.bind(null, endpoint22)
+ Object.assign(request2, {
+ endpoint: endpoint2,
+ defaults: withDefaults2.bind(null, endpoint2)
});
- return endpointOptions.request.hook(request22, endpointOptions);
+ return endpointOptions.request.hook(request2, endpointOptions);
};
return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults10.bind(null, endpoint22)
+ endpoint: endpoint2,
+ defaults: withDefaults2.bind(null, endpoint2)
});
}
-var request5 = withDefaults10(endpoint5, defaults_default5);
+var request = withDefaults2(endpoint, defaults_default);
// node_modules/@octokit/oauth-methods/dist-bundle/index.js
-function requestToOAuthBaseUrl(request7) {
- const endpointDefaults = request7.endpoint.DEFAULTS;
+function requestToOAuthBaseUrl(request2) {
+ const endpointDefaults = request2.endpoint.DEFAULTS;
return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", "");
}
-async function oauthRequest(request7, route, parameters) {
+async function oauthRequest(request2, route, parameters) {
const withOAuthParameters = {
- baseUrl: requestToOAuthBaseUrl(request7),
+ baseUrl: requestToOAuthBaseUrl(request2),
headers: {
accept: "application/json"
},
...parameters
};
- const response = await request7(route, withOAuthParameters);
+ const response = await request2(route, withOAuthParameters);
if ("error" in response.data) {
const error = new RequestError(
`${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,
400,
{
- request: request7.endpoint.merge(
+ request: request2.endpoint.merge(
route,
withOAuthParameters
)
@@ -45569,9 +43137,9 @@ async function oauthRequest(request7, route, parameters) {
return response;
}
async function exchangeWebFlowCode(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const response = await oauthRequest(
- request7,
+ request2,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -45606,19 +43174,19 @@ function toTimestamp(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function createDeviceCode(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const parameters = {
client_id: options.clientId
};
if ("scopes" in options && Array.isArray(options.scopes)) {
parameters.scope = options.scopes.join(" ");
}
- return oauthRequest(request7, "POST /login/device/code", parameters);
+ return oauthRequest(request2, "POST /login/device/code", parameters);
}
async function exchangeDeviceCode(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const response = await oauthRequest(
- request7,
+ request2,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -45654,8 +43222,8 @@ function toTimestamp2(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function checkToken(options) {
- const request7 = options.request || request5;
- const response = await request7("POST /applications/{client_id}/token", {
+ const request2 = options.request || request;
+ const response = await request2("POST /applications/{client_id}/token", {
headers: {
authorization: `basic ${btoa(
`${options.clientId}:${options.clientSecret}`
@@ -45679,9 +43247,9 @@ async function checkToken(options) {
return { ...response, authentication };
}
async function refreshToken(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const response = await oauthRequest(
- request7,
+ request2,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
@@ -45709,9 +43277,9 @@ function toTimestamp3(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
async function resetToken(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- const response = await request7(
+ const response = await request2(
"PATCH /applications/{client_id}/token",
{
headers: {
@@ -45736,9 +43304,9 @@ async function resetToken(options) {
return { ...response, authentication };
}
async function deleteToken(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- return request7(
+ return request2(
"DELETE /applications/{client_id}/token",
{
headers: {
@@ -45750,9 +43318,9 @@ async function deleteToken(options) {
);
}
async function deleteAuthorization(options) {
- const request7 = options.request || request5;
+ const request2 = options.request || request;
const auth5 = btoa(`${options.clientId}:${options.clientSecret}`);
- return request7(
+ return request2(
"DELETE /applications/{client_id}/grant",
{
headers: {
@@ -45801,11 +43369,11 @@ function getCachedAuthentication(state, auth22) {
async function wait(seconds) {
await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));
}
-async function waitForAccessToken(request7, clientId, clientType, verification) {
+async function waitForAccessToken(request2, clientId, clientType, verification) {
try {
const options = {
clientId,
- request: request7,
+ request: request2,
code: verification.device_code
};
const { authentication } = clientType === "oauth-app" ? await exchangeDeviceCode({
@@ -45825,11 +43393,11 @@ async function waitForAccessToken(request7, clientId, clientType, verification)
const errorType = error.response.data.error;
if (errorType === "authorization_pending") {
await wait(verification.interval);
- return waitForAccessToken(request7, clientId, clientType, verification);
+ return waitForAccessToken(request2, clientId, clientType, verification);
}
if (errorType === "slow_down") {
await wait(verification.interval + 7);
- return waitForAccessToken(request7, clientId, clientType, verification);
+ return waitForAccessToken(request2, clientId, clientType, verification);
}
throw error;
}
@@ -45839,37 +43407,37 @@ async function auth(state, authOptions) {
auth: authOptions
});
}
-async function hook(state, request7, route, parameters) {
- let endpoint7 = request7.endpoint.merge(
+async function hook(state, request2, route, parameters) {
+ let endpoint2 = request2.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
- return request7(endpoint7);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
+ return request2(endpoint2);
}
const { token } = await getOAuthAccessToken(state, {
- request: request7,
+ request: request2,
auth: { type: "oauth" }
});
- endpoint7.headers.authorization = `token ${token}`;
- return request7(endpoint7);
+ endpoint2.headers.authorization = `token ${token}`;
+ return request2(endpoint2);
}
-var VERSION11 = "0.0.0-development";
+var VERSION3 = "0.0.0-development";
function createOAuthDeviceAuth(options) {
- const requestWithDefaults = options.request || request4.defaults({
+ const requestWithDefaults = options.request || request.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-device.js/${VERSION11} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-device.js/${VERSION3} ${getUserAgent()}`
}
});
- const { request: request7 = requestWithDefaults, ...otherOptions } = options;
+ const { request: request2 = requestWithDefaults, ...otherOptions } = options;
const state = options.clientType === "github-app" ? {
...otherOptions,
clientType: "github-app",
- request: request7
+ request: request2
} : {
...otherOptions,
clientType: "oauth-app",
- request: request7,
+ request: request2,
scopes: options.scopes || []
};
if (!options.clientId) {
@@ -45888,7 +43456,7 @@ function createOAuthDeviceAuth(options) {
}
// node_modules/@octokit/auth-oauth-user/dist-bundle/index.js
-var VERSION12 = "0.0.0-development";
+var VERSION4 = "0.0.0-development";
async function getAuthentication(state) {
if ("code" in state.strategyOptions) {
const { authentication } = await exchangeWebFlowCode({
@@ -46025,30 +43593,30 @@ var ROUTES_REQUIRING_BASIC_AUTH = /\/applications\/[^/]+\/(token|grant)s?/;
function requiresBasicAuth(url) {
return url && ROUTES_REQUIRING_BASIC_AUTH.test(url);
}
-async function hook2(state, request7, route, parameters = {}) {
- const endpoint7 = request7.endpoint.merge(
+async function hook2(state, request2, route, parameters = {}) {
+ const endpoint2 = request2.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
- return request7(endpoint7);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
+ return request2(endpoint2);
}
- if (requiresBasicAuth(endpoint7.url)) {
+ if (requiresBasicAuth(endpoint2.url)) {
const credentials = btoa(`${state.clientId}:${state.clientSecret}`);
- endpoint7.headers.authorization = `basic ${credentials}`;
- return request7(endpoint7);
+ endpoint2.headers.authorization = `basic ${credentials}`;
+ return request2(endpoint2);
}
- const { token } = state.clientType === "oauth-app" ? await auth2({ ...state, request: request7 }) : await auth2({ ...state, request: request7 });
- endpoint7.headers.authorization = "token " + token;
- return request7(endpoint7);
+ const { token } = state.clientType === "oauth-app" ? await auth2({ ...state, request: request2 }) : await auth2({ ...state, request: request2 });
+ endpoint2.headers.authorization = "token " + token;
+ return request2(endpoint2);
}
function createOAuthUserAuth({
clientId,
clientSecret,
clientType = "oauth-app",
- request: request7 = request3.defaults({
+ request: request2 = request.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION12} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION4} ${getUserAgent()}`
}
}),
onTokenCreated,
@@ -46060,14 +43628,14 @@ function createOAuthUserAuth({
clientSecret,
onTokenCreated,
strategyOptions,
- request: request7
+ request: request2
});
return Object.assign(auth2.bind(null, state), {
// @ts-expect-error not worth the extra code needed to appease TS
hook: hook2.bind(null, state)
});
}
-createOAuthUserAuth.VERSION = VERSION12;
+createOAuthUserAuth.VERSION = VERSION4;
// node_modules/@octokit/auth-oauth-app/dist-bundle/index.js
async function auth3(state, authOptions) {
@@ -46106,36 +43674,36 @@ async function auth3(state, authOptions) {
});
return userAuth();
}
-async function hook3(state, request22, route, parameters) {
- let endpoint7 = request22.endpoint.merge(
+async function hook3(state, request2, route, parameters) {
+ let endpoint2 = request2.endpoint.merge(
route,
parameters
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint7.url)) {
- return request22(endpoint7);
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) {
+ return request2(endpoint2);
}
- if (state.clientType === "github-app" && !requiresBasicAuth(endpoint7.url)) {
+ if (state.clientType === "github-app" && !requiresBasicAuth(endpoint2.url)) {
throw new Error(
- `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint7.method} ${endpoint7.url}" is not supported.`
+ `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint2.method} ${endpoint2.url}" is not supported.`
);
}
const credentials = btoa(`${state.clientId}:${state.clientSecret}`);
- endpoint7.headers.authorization = `basic ${credentials}`;
+ endpoint2.headers.authorization = `basic ${credentials}`;
try {
- return await request22(endpoint7);
+ return await request2(endpoint2);
} catch (error) {
if (error.status !== 401) throw error;
- error.message = `[@octokit/auth-oauth-app] "${endpoint7.method} ${endpoint7.url}" does not support clientId/clientSecret basic authentication.`;
+ error.message = `[@octokit/auth-oauth-app] "${endpoint2.method} ${endpoint2.url}" does not support clientId/clientSecret basic authentication.`;
throw error;
}
}
-var VERSION13 = "0.0.0-development";
+var VERSION5 = "0.0.0-development";
function createOAuthAppAuth(options) {
const state = Object.assign(
{
- request: request2.defaults({
+ request: request.defaults({
headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION13} ${getUserAgent()}`
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION5} ${getUserAgent()}`
}
}),
clientType: "oauth-app"
@@ -46404,9 +43972,19 @@ var LruObject = class {
async function getAppAuthentication({
appId: appId2,
privateKey: privateKey2,
- timeDifference
+ timeDifference,
+ createJwt
}) {
try {
+ if (createJwt) {
+ const { jwt, expiresAt } = await createJwt(appId2, timeDifference);
+ return {
+ type: "app",
+ token: jwt,
+ appId: appId2,
+ expiresAt
+ };
+ }
const authOptions = {
id: appId2,
privateKey: privateKey2
@@ -46546,15 +44124,15 @@ async function getInstallationAuthentication(state, options, customRequest) {
};
return factory(factoryAuthOptions);
}
- const request7 = customRequest || state.request;
+ const request2 = customRequest || state.request;
return getInstallationAuthenticationConcurrently(
state,
{ ...options, installationId },
- request7
+ request2
);
}
var pendingPromises = /* @__PURE__ */ new Map();
-function getInstallationAuthenticationConcurrently(state, options, request7) {
+function getInstallationAuthenticationConcurrently(state, options, request2) {
const cacheKey = optionsToCacheKey(options);
if (pendingPromises.has(cacheKey)) {
return pendingPromises.get(cacheKey);
@@ -46562,12 +44140,12 @@ function getInstallationAuthenticationConcurrently(state, options, request7) {
const promise = getInstallationAuthenticationImpl(
state,
options,
- request7
+ request2
).finally(() => pendingPromises.delete(cacheKey));
pendingPromises.set(cacheKey, promise);
return promise;
}
-async function getInstallationAuthenticationImpl(state, options, request7) {
+async function getInstallationAuthenticationImpl(state, options, request2) {
if (!options.refresh) {
const result = await get(state.cache, options);
if (result) {
@@ -46624,7 +44202,7 @@ async function getInstallationAuthenticationImpl(state, options, request7) {
repository_selection: repositorySelectionOptional,
single_file: singleFileName
}
- } = await request7(
+ } = await request2(
"POST /app/installations/{installation_id}/access_tokens",
payload
);
@@ -46721,18 +44299,18 @@ function isNotTimeSkewError(error) {
/'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
));
}
-async function hook4(state, request7, route, parameters) {
- const endpoint7 = request7.endpoint.merge(route, parameters);
- const url = endpoint7.url;
+async function hook4(state, request2, route, parameters) {
+ const endpoint2 = request2.endpoint.merge(route, parameters);
+ const url = endpoint2.url;
if (/\/login\/oauth\/access_token$/.test(url)) {
- return request7(endpoint7);
+ return request2(endpoint2);
}
- if (requiresAppAuth(url.replace(request7.endpoint.DEFAULTS.baseUrl, ""))) {
+ if (requiresAppAuth(url.replace(request2.endpoint.DEFAULTS.baseUrl, ""))) {
const { token: token2 } = await getAppAuthentication(state);
- endpoint7.headers.authorization = `bearer ${token2}`;
+ endpoint2.headers.authorization = `bearer ${token2}`;
let response;
try {
- response = await request7(endpoint7);
+ response = await request2(endpoint2);
} catch (error) {
if (isNotTimeSkewError(error)) {
throw error;
@@ -46751,34 +44329,34 @@ async function hook4(state, request7, route, parameters) {
...state,
timeDifference: diff
});
- endpoint7.headers.authorization = `bearer ${token3}`;
- return request7(endpoint7);
+ endpoint2.headers.authorization = `bearer ${token3}`;
+ return request2(endpoint2);
}
return response;
}
if (requiresBasicAuth(url)) {
const authentication = await state.oauthApp({ type: "oauth-app" });
- endpoint7.headers.authorization = authentication.headers.authorization;
- return request7(endpoint7);
+ endpoint2.headers.authorization = authentication.headers.authorization;
+ return request2(endpoint2);
}
const { token, createdAt } = await getInstallationAuthentication(
state,
// @ts-expect-error TBD
{},
- request7.defaults({ baseUrl: endpoint7.baseUrl })
+ request2.defaults({ baseUrl: endpoint2.baseUrl })
);
- endpoint7.headers.authorization = `token ${token}`;
+ endpoint2.headers.authorization = `token ${token}`;
return sendRequestWithRetries(
state,
- request7,
- endpoint7,
+ request2,
+ endpoint2,
createdAt
);
}
-async function sendRequestWithRetries(state, request7, options, createdAt, retries = 0) {
+async function sendRequestWithRetries(state, request2, options, createdAt, retries = 0) {
const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
try {
- return await request7(options);
+ return await request2(options);
} catch (error) {
if (error.status !== 401) {
throw error;
@@ -46795,36 +44373,38 @@ async function sendRequestWithRetries(state, request7, options, createdAt, retri
`[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
);
await new Promise((resolve) => setTimeout(resolve, awaitTime));
- return sendRequestWithRetries(state, request7, options, createdAt, retries);
+ return sendRequestWithRetries(state, request2, options, createdAt, retries);
}
}
-var VERSION14 = "7.2.1";
+var VERSION6 = "8.1.0";
function createAppAuth(options) {
if (!options.appId) {
throw new Error("[@octokit/auth-app] appId option is required");
}
- if (!options.privateKey) {
+ if (!options.privateKey && !options.createJwt) {
throw new Error("[@octokit/auth-app] privateKey option is required");
+ } else if (options.privateKey && options.createJwt) {
+ throw new Error(
+ "[@octokit/auth-app] privateKey and createJwt options are mutually exclusive"
+ );
}
if ("installationId" in options && !options.installationId) {
throw new Error(
"[@octokit/auth-app] installationId is set to a falsy value"
);
}
- const log = Object.assign(
- {
- warn: console.warn.bind(console)
- },
- options.log
- );
- const request7 = options.request || request.defaults({
+ const log = options.log || {};
+ if (typeof log.warn !== "function") {
+ log.warn = console.warn.bind(console);
+ }
+ const request2 = options.request || request.defaults({
headers: {
- "user-agent": `octokit-auth-app.js/${VERSION14} ${getUserAgent()}`
+ "user-agent": `octokit-auth-app.js/${VERSION6} ${getUserAgent()}`
}
});
const state = Object.assign(
{
- request: request7,
+ request: request2,
cache: getCache()
},
options,
@@ -46835,7 +44415,7 @@ function createAppAuth(options) {
clientType: "github-app",
clientId: options.clientId || "",
clientSecret: options.clientSecret || "",
- request: request7
+ request: request2
})
}
);
@@ -46972,7 +44552,7 @@ async function pRetry(input, options) {
}
// lib/main.js
-async function main(appId2, privateKey2, owner2, repositories2, permissions2, core3, createAppAuth2, request7, skipTokenRevoke2) {
+async function main(appId2, privateKey2, owner2, repositories2, permissions2, core3, createAppAuth2, request2, skipTokenRevoke2) {
let parsedOwner = "";
let parsedRepositoryNames = [];
if (!owner2 && repositories2.length === 0) {
@@ -47009,13 +44589,13 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
const auth5 = createAppAuth2({
appId: appId2,
privateKey: privateKey2,
- request: request7
+ request: request2
});
let authentication, installationId, appSlug;
if (parsedRepositoryNames.length > 0) {
({ authentication, installationId, appSlug } = await pRetry(
() => getTokenFromRepository(
- request7,
+ request2,
auth5,
parsedOwner,
parsedRepositoryNames,
@@ -47035,7 +44615,7 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
));
} else {
({ authentication, installationId, appSlug } = await pRetry(
- () => getTokenFromOwner(request7, auth5, parsedOwner, permissions2),
+ () => getTokenFromOwner(request2, auth5, parsedOwner, permissions2),
{
onFailedAttempt: (error) => {
core3.info(
@@ -47055,8 +44635,8 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
core3.saveState("expiresAt", authentication.expiresAt);
}
}
-async function getTokenFromOwner(request7, auth5, parsedOwner, permissions2) {
- const response = await request7("GET /users/{username}/installation", {
+async function getTokenFromOwner(request2, auth5, parsedOwner, permissions2) {
+ const response = await request2("GET /users/{username}/installation", {
username: parsedOwner,
request: {
hook: auth5.hook
@@ -47071,8 +44651,8 @@ async function getTokenFromOwner(request7, auth5, parsedOwner, permissions2) {
const appSlug = response.data["app_slug"];
return { authentication, installationId, appSlug };
}
-async function getTokenFromRepository(request7, auth5, parsedOwner, parsedRepositoryNames, permissions2) {
- const response = await request7("GET /repos/{owner}/{repo}/installation", {
+async function getTokenFromRepository(request2, auth5, parsedOwner, parsedRepositoryNames, permissions2) {
+ const response = await request2("GET /repos/{owner}/{repo}/installation", {
owner: parsedOwner,
repo: parsedRepositoryNames[0],
request: {
@@ -47092,537 +44672,6 @@ async function getTokenFromRepository(request7, auth5, parsedOwner, parsedReposi
// lib/request.js
var import_core = __toESM(require_core(), 1);
-
-// node_modules/@octokit/endpoint/dist-bundle/index.js
-var VERSION15 = "0.0.0-development";
-var userAgent6 = `octokit-endpoint.js/${VERSION15} ${getUserAgent()}`;
-var DEFAULTS6 = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent6
- },
- mediaType: {
- format: ""
- }
-};
-function lowercaseKeys6(object) {
- if (!object) {
- return {};
- }
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-function isPlainObject11(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 mergeDeep6(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach((key) => {
- if (isPlainObject11(options[key])) {
- if (!(key in defaults)) Object.assign(result, { [key]: options[key] });
- else result[key] = mergeDeep6(defaults[key], options[key]);
- } else {
- Object.assign(result, { [key]: options[key] });
- }
- });
- return result;
-}
-function removeUndefinedProperties6(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
- }
- return obj;
-}
-function merge6(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 = lowercaseKeys6(options.headers);
- removeUndefinedProperties6(options);
- removeUndefinedProperties6(options.headers);
- const mergedOptions = mergeDeep6(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 addQueryParameters6(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 urlVariableRegex6 = /\{[^{}}]+\}/g;
-function removeNonChars6(variableName) {
- return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []);
-}
-function omit6(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 encodeReserved6(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 encodeUnreserved6(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-function encodeValue6(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved6(value) : encodeUnreserved6(value);
- if (key) {
- return encodeUnreserved6(key) + "=" + value;
- } else {
- return value;
- }
-}
-function isDefined6(value) {
- return value !== void 0 && value !== null;
-}
-function isKeyOperator6(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues6(context, operator, key, modifier) {
- var value = context[key], result = [];
- if (isDefined6(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(
- encodeValue6(operator, value, isKeyOperator6(operator) ? key : "")
- );
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined6).forEach(function(value2) {
- result.push(
- encodeValue6(operator, value2, isKeyOperator6(operator) ? key : "")
- );
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined6(value[k])) {
- result.push(encodeValue6(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
- if (Array.isArray(value)) {
- value.filter(isDefined6).forEach(function(value2) {
- tmp.push(encodeValue6(operator, value2));
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined6(value[k])) {
- tmp.push(encodeUnreserved6(k));
- tmp.push(encodeValue6(operator, value[k].toString()));
- }
- });
- }
- if (isKeyOperator6(operator)) {
- result.push(encodeUnreserved6(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined6(value)) {
- result.push(encodeUnreserved6(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved6(key) + "=");
- } else if (value === "") {
- result.push("");
- }
- }
- return result;
-}
-function parseUrl6(template) {
- return {
- expand: expand6.bind(null, template)
- };
-}
-function expand6(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(getValues6(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 encodeReserved6(literal);
- }
- }
- );
- if (template === "/") {
- return template;
- } else {
- return template.replace(/\/$/, "");
- }
-}
-function parse6(options) {
- let method = options.method.toUpperCase();
- let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
- let headers = Object.assign({}, options.headers);
- let body;
- let parameters = omit6(options, [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "mediaType"
- ]);
- const urlVariableNames = extractUrlVariableNames6(url);
- url = parseUrl6(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 = omit6(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 = addQueryParameters6(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
- }
- }
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-function endpointWithDefaults6(defaults, route, options) {
- return parse6(merge6(defaults, route, options));
-}
-function withDefaults11(oldDefaults, newDefaults) {
- const DEFAULTS22 = merge6(oldDefaults, newDefaults);
- const endpoint22 = endpointWithDefaults6.bind(null, DEFAULTS22);
- return Object.assign(endpoint22, {
- DEFAULTS: DEFAULTS22,
- defaults: withDefaults11.bind(null, DEFAULTS22),
- merge: merge6.bind(null, DEFAULTS22),
- parse: parse6
- });
-}
-var endpoint6 = withDefaults11(null, DEFAULTS6);
-
-// node_modules/@octokit/request/dist-bundle/index.js
-var import_fast_content_type_parse6 = __toESM(require_fast_content_type_parse6(), 1);
-
-// node_modules/@octokit/request/node_modules/@octokit/request-error/dist-src/index.js
-var RequestError2 = 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);
- this.name = "HttpError";
- this.status = Number.parseInt(statusCode);
- if (Number.isNaN(this.status)) {
- this.status = 0;
- }
- if ("response" in options) {
- this.response = options.response;
- }
- const requestCopy = Object.assign({}, options.request);
- if (options.request.headers.authorization) {
- requestCopy.headers = Object.assign({}, options.request.headers, {
- authorization: options.request.headers.authorization.replace(
- /(? [
- name,
- String(value)
- ])
- );
- let fetchResponse;
- try {
- fetchResponse = await fetch(requestOptions.url, {
- method: requestOptions.method,
- body,
- 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" }
- });
- } catch (error) {
- let message = "Unknown Error";
- if (error instanceof Error) {
- if (error.name === "AbortError") {
- error.status = 500;
- throw error;
- }
- 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;
- }
- }
- }
- const requestError = new RequestError2(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;
- }
- throw new RequestError2(fetchResponse.statusText, status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status === 304) {
- octokitResponse.data = await getResponseData6(fetchResponse);
- throw new RequestError2("Not modified", status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- if (status >= 400) {
- octokitResponse.data = await getResponseData6(fetchResponse);
- throw new RequestError2(toErrorMessage6(octokitResponse.data), status, {
- response: octokitResponse,
- request: requestOptions
- });
- }
- octokitResponse.data = parseSuccessResponseBody ? await getResponseData6(fetchResponse) : fetchResponse.body;
- return octokitResponse;
-}
-async function getResponseData6(response) {
- const contentType = response.headers.get("content-type");
- if (!contentType) {
- return response.text().catch(() => "");
- }
- const mimetype = (0, import_fast_content_type_parse6.safeParse)(contentType);
- if (isJSONResponse6(mimetype)) {
- let text = "";
- try {
- text = await response.text();
- return JSON.parse(text);
- } catch (err) {
- return text;
- }
- } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
- } else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
- }
-}
-function isJSONResponse6(mimetype) {
- return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
-}
-function toErrorMessage6(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 withDefaults12(oldEndpoint, newDefaults) {
- const endpoint22 = oldEndpoint.defaults(newDefaults);
- const newApi = function(route, parameters) {
- const endpointOptions = endpoint22.merge(route, parameters);
- if (!endpointOptions.request || !endpointOptions.request.hook) {
- return fetchWrapper6(endpoint22.parse(endpointOptions));
- }
- const request22 = (route2, parameters2) => {
- return fetchWrapper6(
- endpoint22.parse(endpoint22.merge(route2, parameters2))
- );
- };
- Object.assign(request22, {
- endpoint: endpoint22,
- defaults: withDefaults12.bind(null, endpoint22)
- });
- return endpointOptions.request.hook(request22, endpointOptions);
- };
- return Object.assign(newApi, {
- endpoint: endpoint22,
- defaults: withDefaults12.bind(null, endpoint22)
- });
-}
-var request6 = withDefaults12(endpoint6, defaults_default6);
-
-// lib/request.js
var import_undici = __toESM(require_undici2(), 1);
var baseUrl = import_core.default.getInput("github-api-url").replace(/\/$/, "");
var proxyUrl = process.env.https_proxy || process.env.HTTPS_PROXY || process.env.http_proxy || process.env.HTTP_PROXY;
@@ -47639,7 +44688,7 @@ var proxyFetch = (url, options) => {
}
return (0, import_undici.fetch)(url, options);
};
-var request_default = request6.defaults({
+var request_default = request.defaults({
headers: {
"user-agent": "actions/create-github-app-token"
},
diff --git a/dist/post.cjs b/dist/post.cjs
index 06b01399..0391dd67 100644
--- a/dist/post.cjs
+++ b/dist/post.cjs
@@ -42691,7 +42691,7 @@ var endpoint = withDefaults(null, DEFAULTS);
// node_modules/@octokit/request/dist-bundle/index.js
var import_fast_content_type_parse = __toESM(require_fast_content_type_parse(), 1);
-// node_modules/@octokit/request/node_modules/@octokit/request-error/dist-src/index.js
+// node_modules/@octokit/request-error/dist-src/index.js
var RequestError = class extends Error {
name;
/**
diff --git a/package-lock.json b/package-lock.json
index 3925d6b5..223109df 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "create-github-app-token",
- "version": "2.1.3",
+ "version": "2.1.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-github-app-token",
- "version": "2.1.3",
+ "version": "2.1.4",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
diff --git a/package.json b/package.json
index 9fa02929..7eae3b23 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "create-github-app-token",
"private": true,
"type": "module",
- "version": "2.1.3",
+ "version": "2.1.4",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
"scripts": {
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0 --packages=bundle",
From b96fde71c0080358ed6e2d162f11c612c92a97d1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 12 Sep 2025 17:24:24 -0700
Subject: [PATCH 12/27] build(deps-dev): bump the development-dependencies
group across 1 directory with 2 updates (#286)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the development-dependencies group with 2 updates in the /
directory: [dotenv](https://github.com/motdotla/dotenv) and
[esbuild](https://github.com/evanw/esbuild).
Updates `dotenv` from 17.2.1 to 17.2.2
Changelog
Sourced from dotenv's
changelog.
17.2.2
(2025-09-02)
Added
- 🙏 A big thank you to new sponsor Tuple.app - the premier screen
sharing app for developers on macOS and Windows. Go check them out.
It's wonderful and generous of them to give back to open source by
sponsoring dotenv. Give them some love back.
Commits
Updates `esbuild` from 0.25.8 to 0.25.9
Release notes
Sourced from esbuild's
releases.
v0.25.9
-
Better support building projects that use Yarn on Windows (#3131,
#3663)
With this release, you can now use esbuild to bundle projects that
use Yarn Plug'n'Play on Windows on drives other than the C:
drive. The problem was as follows:
- Yarn in Plug'n'Play mode on Windows stores its global module cache
on the
C: drive
- Some developers put their projects on the
D: drive
- Yarn generates relative paths that use
../.. to get
from the project directory to the cache directory
- Windows-style paths don't support directory traversal between drives
via
.. (so D:\.. is just D:)
- I didn't have access to a Windows machine for testing this edge
case
Yarn works around this edge case by pretending Windows-style paths
beginning with C:\ are actually Unix-style paths beginning
with /C:/, so the ../.. path segments are able
to navigate across drives inside Yarn's implementation. This was broken
for a long time in esbuild but I finally got access to a Windows machine
and was able to debug and fix this edge case. So you should now be able
to bundle these projects with esbuild.
-
Preserve parentheses around function expressions (#4252)
The V8 JavaScript VM uses parentheses around function expressions as
an optimization hint to immediately compile the function. Otherwise the
function would be lazily-compiled, which has additional overhead if that
function is always called immediately as lazy compilation involves
parsing the function twice. You can read V8's blog post about this for
more details.
Previously esbuild did not represent parentheses around functions in
the AST so they were lost during compilation. With this change, esbuild
will now preserve parentheses around function expressions when they are
present in the original source code. This means these optimization hints
will not be lost when bundling with esbuild. In addition, esbuild will
now automatically add this optimization hint to immediately-invoked
function expressions. Here's an example:
// Original code
const fn0 = () => 0
const fn1 = (() => 1)
console.log(fn0, function() { return fn1() }())
// Old output
const fn0 = () => 0;
const fn1 = () => 1;
console.log(fn0, function() {
return fn1();
}());
// New output
const fn0 = () => 0;
const fn1 = (() => 1);
console.log(fn0, (function() {
return fn1();
})());
Note that you do not want to wrap all function expressions in
parentheses. This optimization hint should only be used for functions
that are called on initial load. Using this hint for functions that are
not called on initial load will unnecessarily delay the initial load.
Again, see V8's blog post linked above for details.
Update Go from 1.23.10 to 1.23.12 (#4257,
#4258)
This should have no effect on existing code as this version change
does not change Go's operating system support. It may remove certain
false positive reports (specifically CVE-2025-4674 and CVE-2025-47907)
from vulnerability scanners that only detect which version of the Go
compiler esbuild uses.
Changelog
Sourced from esbuild's
changelog.
0.25.9
-
Better support building projects that use Yarn on Windows (#3131,
#3663)
With this release, you can now use esbuild to bundle projects that
use Yarn Plug'n'Play on Windows on drives other than the C:
drive. The problem was as follows:
- Yarn in Plug'n'Play mode on Windows stores its global module cache
on the
C: drive
- Some developers put their projects on the
D: drive
- Yarn generates relative paths that use
../.. to get
from the project directory to the cache directory
- Windows-style paths don't support directory traversal between drives
via
.. (so D:\.. is just D:)
- I didn't have access to a Windows machine for testing this edge
case
Yarn works around this edge case by pretending Windows-style paths
beginning with C:\ are actually Unix-style paths beginning
with /C:/, so the ../.. path segments are able
to navigate across drives inside Yarn's implementation. This was broken
for a long time in esbuild but I finally got access to a Windows machine
and was able to debug and fix this edge case. So you should now be able
to bundle these projects with esbuild.
-
Preserve parentheses around function expressions (#4252)
The V8 JavaScript VM uses parentheses around function expressions as
an optimization hint to immediately compile the function. Otherwise the
function would be lazily-compiled, which has additional overhead if that
function is always called immediately as lazy compilation involves
parsing the function twice. You can read V8's blog post about this for
more details.
Previously esbuild did not represent parentheses around functions in
the AST so they were lost during compilation. With this change, esbuild
will now preserve parentheses around function expressions when they are
present in the original source code. This means these optimization hints
will not be lost when bundling with esbuild. In addition, esbuild will
now automatically add this optimization hint to immediately-invoked
function expressions. Here's an example:
// Original code
const fn0 = () => 0
const fn1 = (() => 1)
console.log(fn0, function() { return fn1() }())
// Old output
const fn0 = () => 0;
const fn1 = () => 1;
console.log(fn0, function() {
return fn1();
}());
// New output
const fn0 = () => 0;
const fn1 = (() => 1);
console.log(fn0, (function() {
return fn1();
})());
Note that you do not want to wrap all function expressions in
parentheses. This optimization hint should only be used for functions
that are called on initial load. Using this hint for functions that are
not called on initial load will unnecessarily delay the initial load.
Again, see V8's blog post linked above for details.
-
Update Go from 1.23.10 to 1.23.12 (#4257,
#4258)
This should have no effect on existing code as this version change
does not change Go's operating system support. It may remove certain
false positive reports (specifically CVE-2025-4674 and CVE-2025-47907)
from vulnerability scanners that only detect which version of the Go
compiler esbuild uses.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 224 +++++++++++++++++++++++-----------------------
package.json | 4 +-
2 files changed, 114 insertions(+), 114 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 223109df..3d53b24e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,8 +20,8 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^17.2.1",
- "esbuild": "^0.25.8",
+ "dotenv": "^17.2.2",
+ "esbuild": "^0.25.9",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
"yaml": "^2.8.1"
@@ -80,9 +80,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz",
- "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
"cpu": [
"ppc64"
],
@@ -97,9 +97,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz",
- "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
"cpu": [
"arm"
],
@@ -114,9 +114,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz",
- "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
"cpu": [
"arm64"
],
@@ -131,9 +131,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz",
- "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
"cpu": [
"x64"
],
@@ -148,9 +148,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz",
- "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
"cpu": [
"arm64"
],
@@ -165,9 +165,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz",
- "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
"cpu": [
"x64"
],
@@ -182,9 +182,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz",
- "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
"cpu": [
"arm64"
],
@@ -199,9 +199,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz",
- "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
"cpu": [
"x64"
],
@@ -216,9 +216,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz",
- "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
"cpu": [
"arm"
],
@@ -233,9 +233,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz",
- "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
"cpu": [
"arm64"
],
@@ -250,9 +250,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz",
- "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
"cpu": [
"ia32"
],
@@ -267,9 +267,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz",
- "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
"cpu": [
"loong64"
],
@@ -284,9 +284,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz",
- "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
"cpu": [
"mips64el"
],
@@ -301,9 +301,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz",
- "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
"cpu": [
"ppc64"
],
@@ -318,9 +318,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz",
- "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
"cpu": [
"riscv64"
],
@@ -335,9 +335,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz",
- "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
"cpu": [
"s390x"
],
@@ -352,9 +352,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz",
- "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
"cpu": [
"x64"
],
@@ -369,9 +369,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz",
- "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
"cpu": [
"arm64"
],
@@ -386,9 +386,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz",
- "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
"cpu": [
"x64"
],
@@ -403,9 +403,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz",
- "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
"cpu": [
"arm64"
],
@@ -420,9 +420,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz",
- "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
"cpu": [
"x64"
],
@@ -437,9 +437,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz",
- "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
"cpu": [
"arm64"
],
@@ -454,9 +454,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz",
- "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
"cpu": [
"x64"
],
@@ -471,9 +471,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz",
- "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
"cpu": [
"arm64"
],
@@ -488,9 +488,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz",
- "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
"cpu": [
"ia32"
],
@@ -505,9 +505,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz",
- "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
"cpu": [
"x64"
],
@@ -1623,9 +1623,9 @@
}
},
"node_modules/dotenv": {
- "version": "17.2.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz",
- "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==",
+ "version": "17.2.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
+ "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -1661,9 +1661,9 @@
"dev": true
},
"node_modules/esbuild": {
- "version": "0.25.8",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz",
- "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1674,32 +1674,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.8",
- "@esbuild/android-arm": "0.25.8",
- "@esbuild/android-arm64": "0.25.8",
- "@esbuild/android-x64": "0.25.8",
- "@esbuild/darwin-arm64": "0.25.8",
- "@esbuild/darwin-x64": "0.25.8",
- "@esbuild/freebsd-arm64": "0.25.8",
- "@esbuild/freebsd-x64": "0.25.8",
- "@esbuild/linux-arm": "0.25.8",
- "@esbuild/linux-arm64": "0.25.8",
- "@esbuild/linux-ia32": "0.25.8",
- "@esbuild/linux-loong64": "0.25.8",
- "@esbuild/linux-mips64el": "0.25.8",
- "@esbuild/linux-ppc64": "0.25.8",
- "@esbuild/linux-riscv64": "0.25.8",
- "@esbuild/linux-s390x": "0.25.8",
- "@esbuild/linux-x64": "0.25.8",
- "@esbuild/netbsd-arm64": "0.25.8",
- "@esbuild/netbsd-x64": "0.25.8",
- "@esbuild/openbsd-arm64": "0.25.8",
- "@esbuild/openbsd-x64": "0.25.8",
- "@esbuild/openharmony-arm64": "0.25.8",
- "@esbuild/sunos-x64": "0.25.8",
- "@esbuild/win32-arm64": "0.25.8",
- "@esbuild/win32-ia32": "0.25.8",
- "@esbuild/win32-x64": "0.25.8"
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
}
},
"node_modules/escalade": {
diff --git a/package.json b/package.json
index 7eae3b23..5a312a97 100644
--- a/package.json
+++ b/package.json
@@ -23,8 +23,8 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^17.2.1",
- "esbuild": "^0.25.8",
+ "dotenv": "^17.2.2",
+ "esbuild": "^0.25.9",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
"yaml": "^2.8.1"
From 1ff8cc40cc6771bd6178a66b6da2a6c34799ff99 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 12:02:50 -0800
Subject: [PATCH 13/27] build(deps-dev): bump the development-dependencies
group with 2 updates (#293)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the development-dependencies group with 2 updates:
[dotenv](https://github.com/motdotla/dotenv) and
[esbuild](https://github.com/evanw/esbuild).
Updates `dotenv` from 17.2.2 to 17.2.3
Changelog
Sourced from dotenv's
changelog.
17.2.3
(2025-09-29)
Changed
- Fixed typescript error definition (#912)
Commits
Updates `esbuild` from 0.25.9 to 0.25.10
Release notes
Sourced from esbuild's
releases.
v0.25.10
-
Fix a panic in a minification edge case (#4287)
This release fixes a panic due to a null pointer that could happen
when esbuild inlines a doubly-nested identity function and the final
result is empty. It was fixed by emitting the value
undefined in this case, which avoids the panic. This case
must be rare since it hasn't come up until now. Here is an example of
code that previously triggered the panic (which only happened when
minifying):
function identity(x) { return x }
identity({ y: identity(123) })
-
Fix @supports nested inside pseudo-element (#4265)
When transforming nested CSS to non-nested CSS, esbuild is supposed
to filter out pseudo-elements such as ::placeholder for
correctness. The CSS
nesting specification says the following:
The nesting selector cannot represent pseudo-elements (identical to
the behavior of the ':is()' pseudo-class). We’d like to relax this
restriction, but need to do so simultaneously for both ':is()' and
'&', since they’re intentionally built on the same underlying
mechanisms.
However, it seems like this behavior is different for nested at-rules
such as @supports, which do work with pseudo-elements. So
this release modifies esbuild's behavior to now take that into
account:
/* Original code */
::placeholder {
color: red;
body & { color: green }
@supports (color: blue) { color: blue }
}
/* Old output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@supports
(color: blue) {
{
color: blue;
}
}
/* New output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@supports
(color: blue) {
::placeholder {
color: blue;
}
... (truncated)
Changelog
Sourced from esbuild's
changelog.
0.25.10
-
Fix a panic in a minification edge case (#4287)
This release fixes a panic due to a null pointer that could happen
when esbuild inlines a doubly-nested identity function and the final
result is empty. It was fixed by emitting the value
undefined in this case, which avoids the panic. This case
must be rare since it hasn't come up until now. Here is an example of
code that previously triggered the panic (which only happened when
minifying):
function identity(x) { return x }
identity({ y: identity(123) })
-
Fix @supports nested inside pseudo-element (#4265)
When transforming nested CSS to non-nested CSS, esbuild is supposed
to filter out pseudo-elements such as ::placeholder for
correctness. The CSS
nesting specification says the following:
The nesting selector cannot represent pseudo-elements (identical to
the behavior of the ':is()' pseudo-class). We’d like to relax this
restriction, but need to do so simultaneously for both ':is()' and
'&', since they’re intentionally built on the same underlying
mechanisms.
However, it seems like this behavior is different for nested at-rules
such as @supports, which do work with pseudo-elements. So
this release modifies esbuild's behavior to now take that into
account:
/* Original code */
::placeholder {
color: red;
body & { color: green }
@supports (color: blue) { color: blue }
}
/* Old output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@supports
(color: blue) {
{
color: blue;
}
}
/* New output (with --supported:nesting=false) */
::placeholder {
color: red;
}
body :is() {
color: green;
}
@supports
(color: blue) {
::placeholder {
color: blue;
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 224 +++++++++++++++++++++++-----------------------
package.json | 4 +-
2 files changed, 114 insertions(+), 114 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 3d53b24e..9e88a13e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,8 +20,8 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^17.2.2",
- "esbuild": "^0.25.9",
+ "dotenv": "^17.2.3",
+ "esbuild": "^0.25.10",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
"yaml": "^2.8.1"
@@ -80,9 +80,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
- "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz",
+ "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==",
"cpu": [
"ppc64"
],
@@ -97,9 +97,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
- "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz",
+ "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==",
"cpu": [
"arm"
],
@@ -114,9 +114,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
- "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz",
+ "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==",
"cpu": [
"arm64"
],
@@ -131,9 +131,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
- "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz",
+ "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==",
"cpu": [
"x64"
],
@@ -148,9 +148,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
- "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz",
+ "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==",
"cpu": [
"arm64"
],
@@ -165,9 +165,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
- "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz",
+ "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==",
"cpu": [
"x64"
],
@@ -182,9 +182,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
- "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==",
"cpu": [
"arm64"
],
@@ -199,9 +199,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
- "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz",
+ "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==",
"cpu": [
"x64"
],
@@ -216,9 +216,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
- "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz",
+ "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==",
"cpu": [
"arm"
],
@@ -233,9 +233,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
- "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz",
+ "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==",
"cpu": [
"arm64"
],
@@ -250,9 +250,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
- "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz",
+ "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==",
"cpu": [
"ia32"
],
@@ -267,9 +267,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
- "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz",
+ "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==",
"cpu": [
"loong64"
],
@@ -284,9 +284,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
- "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz",
+ "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==",
"cpu": [
"mips64el"
],
@@ -301,9 +301,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
- "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz",
+ "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==",
"cpu": [
"ppc64"
],
@@ -318,9 +318,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
- "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz",
+ "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==",
"cpu": [
"riscv64"
],
@@ -335,9 +335,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
- "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz",
+ "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==",
"cpu": [
"s390x"
],
@@ -352,9 +352,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
- "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz",
+ "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==",
"cpu": [
"x64"
],
@@ -369,9 +369,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
- "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==",
"cpu": [
"arm64"
],
@@ -386,9 +386,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
- "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==",
"cpu": [
"x64"
],
@@ -403,9 +403,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
- "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==",
"cpu": [
"arm64"
],
@@ -420,9 +420,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
- "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==",
"cpu": [
"x64"
],
@@ -437,9 +437,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
- "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz",
+ "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==",
"cpu": [
"arm64"
],
@@ -454,9 +454,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
- "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz",
+ "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==",
"cpu": [
"x64"
],
@@ -471,9 +471,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
- "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz",
+ "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==",
"cpu": [
"arm64"
],
@@ -488,9 +488,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
- "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz",
+ "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==",
"cpu": [
"ia32"
],
@@ -505,9 +505,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
- "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz",
+ "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==",
"cpu": [
"x64"
],
@@ -1623,9 +1623,9 @@
}
},
"node_modules/dotenv": {
- "version": "17.2.2",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
- "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
+ "version": "17.2.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -1661,9 +1661,9 @@
"dev": true
},
"node_modules/esbuild": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
- "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz",
+ "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1674,32 +1674,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.9",
- "@esbuild/android-arm": "0.25.9",
- "@esbuild/android-arm64": "0.25.9",
- "@esbuild/android-x64": "0.25.9",
- "@esbuild/darwin-arm64": "0.25.9",
- "@esbuild/darwin-x64": "0.25.9",
- "@esbuild/freebsd-arm64": "0.25.9",
- "@esbuild/freebsd-x64": "0.25.9",
- "@esbuild/linux-arm": "0.25.9",
- "@esbuild/linux-arm64": "0.25.9",
- "@esbuild/linux-ia32": "0.25.9",
- "@esbuild/linux-loong64": "0.25.9",
- "@esbuild/linux-mips64el": "0.25.9",
- "@esbuild/linux-ppc64": "0.25.9",
- "@esbuild/linux-riscv64": "0.25.9",
- "@esbuild/linux-s390x": "0.25.9",
- "@esbuild/linux-x64": "0.25.9",
- "@esbuild/netbsd-arm64": "0.25.9",
- "@esbuild/netbsd-x64": "0.25.9",
- "@esbuild/openbsd-arm64": "0.25.9",
- "@esbuild/openbsd-x64": "0.25.9",
- "@esbuild/openharmony-arm64": "0.25.9",
- "@esbuild/sunos-x64": "0.25.9",
- "@esbuild/win32-arm64": "0.25.9",
- "@esbuild/win32-ia32": "0.25.9",
- "@esbuild/win32-x64": "0.25.9"
+ "@esbuild/aix-ppc64": "0.25.10",
+ "@esbuild/android-arm": "0.25.10",
+ "@esbuild/android-arm64": "0.25.10",
+ "@esbuild/android-x64": "0.25.10",
+ "@esbuild/darwin-arm64": "0.25.10",
+ "@esbuild/darwin-x64": "0.25.10",
+ "@esbuild/freebsd-arm64": "0.25.10",
+ "@esbuild/freebsd-x64": "0.25.10",
+ "@esbuild/linux-arm": "0.25.10",
+ "@esbuild/linux-arm64": "0.25.10",
+ "@esbuild/linux-ia32": "0.25.10",
+ "@esbuild/linux-loong64": "0.25.10",
+ "@esbuild/linux-mips64el": "0.25.10",
+ "@esbuild/linux-ppc64": "0.25.10",
+ "@esbuild/linux-riscv64": "0.25.10",
+ "@esbuild/linux-s390x": "0.25.10",
+ "@esbuild/linux-x64": "0.25.10",
+ "@esbuild/netbsd-arm64": "0.25.10",
+ "@esbuild/netbsd-x64": "0.25.10",
+ "@esbuild/openbsd-arm64": "0.25.10",
+ "@esbuild/openbsd-x64": "0.25.10",
+ "@esbuild/openharmony-arm64": "0.25.10",
+ "@esbuild/sunos-x64": "0.25.10",
+ "@esbuild/win32-arm64": "0.25.10",
+ "@esbuild/win32-ia32": "0.25.10",
+ "@esbuild/win32-x64": "0.25.10"
}
},
"node_modules/escalade": {
diff --git a/package.json b/package.json
index 5a312a97..2c61d0c9 100644
--- a/package.json
+++ b/package.json
@@ -23,8 +23,8 @@
"@sinonjs/fake-timers": "^14.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
- "dotenv": "^17.2.2",
- "esbuild": "^0.25.9",
+ "dotenv": "^17.2.3",
+ "esbuild": "^0.25.10",
"execa": "^9.6.0",
"open-cli": "^8.0.0",
"yaml": "^2.8.1"
From 2a47cfc9effa17e860a50828389b248e0bb20504 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 12:53:32 -0800
Subject: [PATCH 14/27] build(deps-dev): bump js-yaml from 3.14.1 to 3.14.2
(#304)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to
3.14.2.
Changelog
Sourced from js-yaml's
changelog.
[3.14.2] - 2025-11-15
Security
- Backported v4.1.1 fix to v3
[4.1.1] - 2025-11-12
Security
- Fix prototype pollution issue in yaml merge (<<)
operator.
[4.1.0] - 2021-04-15
Added
- Types are now exported as
yaml.types.XXX.
- Every type now has
options property with original
arguments kept as they were
(see yaml.types.int.options as an example).
Changed
Schema.extend() now keeps old type order in case of
conflicts
(e.g. Schema.extend([ a, b, c ]).extend([ b, a, d ]) is now ordered as
abcd instead of cbad).
[4.0.0] - 2021-01-03
Changed
- Check migration
guide to see details for all breaking changes.
- Breaking: "unsafe" tags
!!js/function,
!!js/regexp, !!js/undefined are
moved to js-yaml-js-types
package.
- Breaking: removed
safe* functions. Use
load, loadAll, dump
instead which are all now safe by default.
yaml.DEFAULT_SAFE_SCHEMA and
yaml.DEFAULT_FULL_SCHEMA are removed, use
yaml.DEFAULT_SCHEMA instead.
yaml.Schema.create(schema, tags) is removed, use
schema.extend(tags) instead.
!!binary now always mapped to Uint8Array
on load.
- Reduced nesting of
/lib folder.
- Parse numbers according to YAML 1.2 instead of YAML 1.1
(
01234 is now decimal,
0o1234 is octal, 1:23 is parsed as string
instead of base60).
dump() no longer quotes :, [,
], (, ) except when necessary, #470,
#557.
- Line and column in exceptions are now formatted as
(X:Y) instead of
at line X, column Y (also present in compact format), #332.
- Code snippet created in exceptions now contains multiple lines with
line numbers.
dump() now serializes undefined as
null in collections and removes keys with
undefined in mappings, #571.
dump() with skipInvalid=true now
serializes invalid items in collections as null.
- Custom tags starting with
! are now dumped as
!tag instead of !<!tag>, #576.
- Custom tags starting with
tag:yaml.org,2002: are now
shorthanded using !!, #258.
Added
- Added
.mjs (es modules) support.
- Added
quotingType and forceQuotes options
for dumper to configure
string literal style, #290,
#529.
- Added
styles: { '!!null': 'empty' } option for dumper
(serializes { foo: null } as "foo:
"), #570.
... (truncated)
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/actions/create-github-app-token/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9e88a13e..ff710110 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2425,10 +2425,11 @@
}
},
"node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
From b7f83f6278be73b624257deedba056416f53fed2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 13:18:24 -0800
Subject: [PATCH 15/27] build(deps): bump actions/setup-node from 4 to 6 (#299)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4
to 6.
Release notes
Sourced from actions/setup-node's
releases.
v6.0.0
What's Changed
Breaking Changes
Dependency Upgrades
Full Changelog: https://github.com/actions/setup-node/compare/v5...v6.0.0
v5.0.0
What's Changed
Breaking Changes
This update, introduces automatic caching when a valid
packageManager field is present in your
package.json. This aims to improve workflow performance and
make dependency management more seamless.
To disable this automatic caching, set package-manager-cache:
false
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
package-manager-cache: false
Make sure your runner is on version v2.327.1 or later to ensure
compatibility with this release. See
Release Notes
Dependency Upgrades
New Contributors
Full Changelog: https://github.com/actions/setup-node/compare/v4...v5.0.0
v4.4.0
... (truncated)
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
.github/workflows/release.yml | 6 +++---
.github/workflows/test.yml | 10 ++++------
.github/workflows/update-permission-inputs.yml | 5 ++---
.node-version | 1 -
package.json | 4 ++++
5 files changed, 13 insertions(+), 13 deletions(-)
delete mode 100644 .node-version
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ac1c7abb..11c6821b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -22,10 +22,10 @@ jobs:
with:
persist-credentials: false
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v6
with:
- node-version-file: .node-version
- cache: 'npm'
+ node-version-file: package.json
+
- run: npm ci
- run: npm run build
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b1308429..55902c38 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -21,10 +21,9 @@ jobs:
steps:
- uses: actions/checkout@v5
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v6
with:
- node-version-file: .node-version
- cache: 'npm'
+ node-version-file: package.json
- run: npm ci
- run: npm test
@@ -36,10 +35,9 @@ jobs:
if: github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
steps:
- uses: actions/checkout@v5
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v6
with:
- node-version: 20
- cache: "npm"
+ node-version-file: package.json
- run: npm ci
- run: npm run build
- uses: ./ # Uses the action in the root directory
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index 804dfebe..3a93855c 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -19,10 +19,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@v6
with:
- node-version-file: .node-version
- cache: 'npm'
+ node-version-file: package.json
- name: Install dependencies
run: npm ci
- name: Run permission inputs update script
diff --git a/.node-version b/.node-version
deleted file mode 100644
index f3f52b42..00000000
--- a/.node-version
+++ /dev/null
@@ -1 +0,0 @@
-20.9.0
diff --git a/package.json b/package.json
index 2c61d0c9..9bb77dae 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,10 @@
"type": "module",
"version": "2.1.4",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
+ "engines": {
+ "node": ">=20"
+ },
+ "packageManager": "npm@10.9.4",
"scripts": {
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0 --packages=bundle",
"test": "c8 --100 ava tests/index.js",
From f48f2eb9326f99a06d3f3e8461c45793d5a24ffa Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 13:21:49 -0800
Subject: [PATCH 16/27] build(deps): bump stefanzweifel/git-auto-commit-action
from 6.0.1 to 7.0.0 (#300)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action)
from 6.0.1 to 7.0.0.
Release notes
Sourced from stefanzweifel/git-auto-commit-action's
releases.
v7.0.0
Added
Changed
Dependency Updates
Changelog
Sourced from stefanzweifel/git-auto-commit-action's
changelog.
Changelog
All notable changes to this project will be documented in this
file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
TBD
v7.0.0
- 2025-10-12
Added
Changed
Dependency Updates
v6.0.1
- 2025-06-11
Fixed
v6.0.0
- 2025-06-10
Added
- Throw error early if repository is in a detached state (#357)
Fixed
Removed
- Remove support for
create_branch,
skip_checkout, skip_Fetch (#314)
v5.2.0
- 2025-04-19
Added
... (truncated)
Commits
28e16e8
Release preparations for v7 (#394)
698fd76
Merge pull request #391
from EliasBoulharts/custom-tag-message
c40819a
Update README
d7ee275
Change internal variable names
e8684eb
Fix Tests
1949701
Merge branch 'master' into pr/391
a88dc49
Merge pull request #388
from stefanzweifel/v7-next
a531dec
Merge pull request #386
from stefanzweifel/dependabot/github_actions/actions/...
acbe8b1
Merge pull request #393
from stefanzweifel/v7-warn-detached-head
d185485
Enable Detached State Check
- Additional commits viewable in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/update-permission-inputs.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index 3a93855c..d476dc66 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -27,6 +27,6 @@ jobs:
- name: Run permission inputs update script
run: node scripts/update-permission-inputs.js
- name: Commit changes
- uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0 # v6.0.1
+ uses: stefanzweifel/git-auto-commit-action@28e16e81777b558cc906c8750092100bbb34c5e3 # v7.0.0
with:
commit_message: 'feat: update permission inputs'
From 396e5022f0b3904220aca120478484fe822c5aac Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 13:25:22 -0800
Subject: [PATCH 17/27] build(deps): bump actions/checkout from 5 to 6 (#306)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to
6.
Release notes
Sourced from actions/checkout's
releases.
v6.0.0
What's Changed
Full Changelog: https://github.com/actions/checkout/compare/v5.0.0...v6.0.0
v6-beta
What's Changed
Updated persist-credentials to store the credentials under
$RUNNER_TEMP instead of directly in the local git
config.
This requires a minimum Actions Runner version of v2.329.0
to access the persisted credentials for Docker
container action scenarios.
v5.0.1
What's Changed
Full Changelog: https://github.com/actions/checkout/compare/v5...v5.0.1
Changelog
Sourced from actions/checkout's
changelog.
Changelog
V6.0.0
V5.0.1
V5.0.0
V4.3.1
V4.3.0
v4.2.2
v4.2.1
v4.2.0
v4.1.7
v4.1.6
v4.1.5
... (truncated)
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/publish-immutable-action.yml | 2 +-
.github/workflows/release.yml | 2 +-
.github/workflows/test.yml | 4 ++--
.github/workflows/update-permission-inputs.yml | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/publish-immutable-action.yml b/.github/workflows/publish-immutable-action.yml
index 0e65c071..dd783deb 100644
--- a/.github/workflows/publish-immutable-action.yml
+++ b/.github/workflows/publish-immutable-action.yml
@@ -12,6 +12,6 @@ jobs:
id-token: write
packages: write
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v6
- name: Publish Immutable Action
uses: actions/publish-immutable-action@v0.0.4
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 11c6821b..59ca850c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
# build local version to create token
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v6
with:
persist-credentials: false
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 55902c38..afbaded9 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -19,7 +19,7 @@ jobs:
name: Integration
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
@@ -34,7 +34,7 @@ jobs:
# do not run from forks, as forks don’t have access to repository secrets
if: github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version-file: package.json
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index d476dc66..d239fdfb 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -18,7 +18,7 @@ jobs:
update-permission-inputs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version-file: package.json
From 40fa6b52b33cc945b40f86ff422cb3991908649f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 14:36:49 -0800
Subject: [PATCH 18/27] build(deps-dev): bump @sinonjs/fake-timers from 14.0.0
to 15.0.0 (#295)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [@sinonjs/fake-timers](https://github.com/sinonjs/fake-timers)
from 14.0.0 to 15.0.0.
Changelog
Sourced from @sinonjs/fake-timers's
changelog.
15.0.0 / 2025-09-18
- feat: Add additional auto advance time controls (#509)
- Upgrade dependencies and drop support for Node 18 in favor of Node
24 (#526
and #523)
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 12 ++++++++----
package.json | 2 +-
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ff710110..6d2d2d31 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,7 +17,7 @@
},
"devDependencies": {
"@octokit/openapi": "^19.1.0",
- "@sinonjs/fake-timers": "^14.0.0",
+ "@sinonjs/fake-timers": "^15.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
"dotenv": "^17.2.3",
@@ -25,6 +25,9 @@
"execa": "^9.6.0",
"open-cli": "^8.0.0",
"yaml": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@actions/core": {
@@ -911,10 +914,11 @@
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-14.0.0.tgz",
- "integrity": "sha512-QfoXRaUTjMVVn/ZbnD4LS3TPtqOkOdKIYCKldIVPnuClcwRKat6LI2mRZ2s5qiBfO6Fy03An35dSls/2/FEc0Q==",
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.0.0.tgz",
+ "integrity": "sha512-dlUB2oL+hDIYkIq/OWFBDhQAuU6kDey3eeMiYpVb7UXHhkMq/r1HloKXAbJwJZpYWkFWsydLjMqDpueMUEOjXQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sinonjs/commons": "^3.0.1"
}
diff --git a/package.json b/package.json
index 9bb77dae..13978fc2 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
},
"devDependencies": {
"@octokit/openapi": "^19.1.0",
- "@sinonjs/fake-timers": "^14.0.0",
+ "@sinonjs/fake-timers": "^15.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
"dotenv": "^17.2.3",
From cc6f999683e9e6150699fa443589ab389e4d3334 Mon Sep 17 00:00:00 2001
From: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:46:17 -0800
Subject: [PATCH 19/27] ci(test): trigger on merge_group (#308)
This pull request makes minor updates to the GitHub Actions workflow
configuration in `.github/workflows/test.yml`, focusing on standardizing
job naming and adding support for merge group events.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/test.yml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index afbaded9..8774c1b2 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -5,6 +5,7 @@ on:
branches:
- main
pull_request:
+ merge_group:
workflow_dispatch:
concurrency:
@@ -16,7 +17,7 @@ permissions:
jobs:
integration:
- name: Integration
+ name: integration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
@@ -29,10 +30,10 @@ jobs:
- run: npm test
end-to-end:
- name: End-to-End
+ name: end-to-end
runs-on: ubuntu-latest
# do not run from forks, as forks don’t have access to repository secrets
- if: github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
+ if: github.event_name == 'merge_group' || github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
From 55e2a4b2ccaaa8364303e6ab9f77e31ad02298e5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:48:38 -0800
Subject: [PATCH 20/27] fix(deps): bump the production-dependencies group with
2 updates (#292)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the production-dependencies group with 2 updates:
[@octokit/auth-app](https://github.com/octokit/auth-app.js) and
[@octokit/request](https://github.com/octokit/request.js).
Updates `@octokit/auth-app` from 8.1.0 to 8.1.1
Release notes
Sourced from @octokit/auth-app's
releases.
v8.1.1
8.1.1
(2025-09-29)
Bug Fixes
- deps: update dependency
@octokit/types to v15 (#721)
(8b76e56)
Commits
Updates `@octokit/request` from 10.0.3 to 10.0.5
Release notes
Sourced from @octokit/request's
releases.
v10.0.5
10.0.5
(2025-09-29)
Bug Fixes
v10.0.4
10.0.4
(2025-09-29)
Bug Fixes
- deps: update dependency
@octokit/types to v15 (#775)
(ad78b4c)
Commits
30f83b6
fix(deps): update octokit deps (#772)
b07d593
ci(action): update actions/checkout action to v5 (#770)
928c3d7
chore(deps): update dependency prettier to v3.6.2 (#766)
a84613e
ci(action): update actions/setup-node action to v5 (#771)
ad78b4c
fix(deps): update dependency @octokit/types to v15 (#775)
- See full diff in compare
view
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
package-lock.json | 112 +++++++++++++++++++++++-----------------------
package.json | 2 +-
2 files changed, 57 insertions(+), 57 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6d2d2d31..868fbfc3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^8.1.0",
+ "@octokit/auth-app": "^8.1.1",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.16.0"
@@ -697,16 +697,16 @@
}
},
"node_modules/@octokit/auth-app": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-8.1.0.tgz",
- "integrity": "sha512-6bWhyvLXqCSfHiqlwzn9pScLZ+Qnvh/681GR/UEEPCMIVwfpRDBw0cCzy3/t2Dq8B7W2X/8pBgmw6MOiyE0DXQ==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-8.1.1.tgz",
+ "integrity": "sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-app": "^9.0.1",
- "@octokit/auth-oauth-user": "^6.0.0",
- "@octokit/request": "^10.0.2",
- "@octokit/request-error": "^7.0.0",
- "@octokit/types": "^14.0.0",
+ "@octokit/auth-oauth-app": "^9.0.2",
+ "@octokit/auth-oauth-user": "^6.0.1",
+ "@octokit/request": "^10.0.5",
+ "@octokit/request-error": "^7.0.1",
+ "@octokit/types": "^15.0.0",
"toad-cache": "^3.7.0",
"universal-github-app-jwt": "^2.2.0",
"universal-user-agent": "^7.0.0"
@@ -716,15 +716,15 @@
}
},
"node_modules/@octokit/auth-oauth-app": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-9.0.1.tgz",
- "integrity": "sha512-TthWzYxuHKLAbmxdFZwFlmwVyvynpyPmjwc+2/cI3cvbT7mHtsAW9b1LvQaNnAuWL+pFnqtxdmrU8QpF633i1g==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-9.0.2.tgz",
+ "integrity": "sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^8.0.1",
- "@octokit/auth-oauth-user": "^6.0.0",
- "@octokit/request": "^10.0.2",
- "@octokit/types": "^14.0.0",
+ "@octokit/auth-oauth-device": "^8.0.2",
+ "@octokit/auth-oauth-user": "^6.0.1",
+ "@octokit/request": "^10.0.5",
+ "@octokit/types": "^15.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -732,14 +732,14 @@
}
},
"node_modules/@octokit/auth-oauth-device": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-8.0.1.tgz",
- "integrity": "sha512-TOqId/+am5yk9zor0RGibmlqn4V0h8vzjxlw/wYr3qzkQxl8aBPur384D1EyHtqvfz0syeXji4OUvKkHvxk/Gw==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-8.0.2.tgz",
+ "integrity": "sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw==",
"license": "MIT",
"dependencies": {
- "@octokit/oauth-methods": "^6.0.0",
- "@octokit/request": "^10.0.2",
- "@octokit/types": "^14.0.0",
+ "@octokit/oauth-methods": "^6.0.1",
+ "@octokit/request": "^10.0.5",
+ "@octokit/types": "^15.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -747,15 +747,15 @@
}
},
"node_modules/@octokit/auth-oauth-user": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-6.0.0.tgz",
- "integrity": "sha512-GV9IW134PHsLhtUad21WIeP9mlJ+QNpFd6V9vuPWmaiN25HEJeEQUcS4y5oRuqCm9iWDLtfIs+9K8uczBXKr6A==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-6.0.1.tgz",
+ "integrity": "sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^8.0.1",
- "@octokit/oauth-methods": "^6.0.0",
- "@octokit/request": "^10.0.2",
- "@octokit/types": "^14.0.0",
+ "@octokit/auth-oauth-device": "^8.0.2",
+ "@octokit/oauth-methods": "^6.0.1",
+ "@octokit/request": "^10.0.5",
+ "@octokit/types": "^15.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -763,12 +763,12 @@
}
},
"node_modules/@octokit/endpoint": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
- "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.1.tgz",
+ "integrity": "sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==",
"license": "MIT",
"dependencies": {
- "@octokit/types": "^14.0.0",
+ "@octokit/types": "^15.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
@@ -785,15 +785,15 @@
}
},
"node_modules/@octokit/oauth-methods": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-6.0.0.tgz",
- "integrity": "sha512-Q8nFIagNLIZgM2odAraelMcDssapc+lF+y3OlcIPxyAU+knefO8KmozGqfnma1xegRDP4z5M73ABsamn72bOcA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-6.0.1.tgz",
+ "integrity": "sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==",
"license": "MIT",
"dependencies": {
"@octokit/oauth-authorization-url": "^8.0.0",
- "@octokit/request": "^10.0.2",
- "@octokit/request-error": "^7.0.0",
- "@octokit/types": "^14.0.0"
+ "@octokit/request": "^10.0.5",
+ "@octokit/request-error": "^7.0.1",
+ "@octokit/types": "^15.0.0"
},
"engines": {
"node": ">= 20"
@@ -810,20 +810,20 @@
}
},
"node_modules/@octokit/openapi-types": {
- "version": "25.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
- "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==",
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz",
+ "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==",
"license": "MIT"
},
"node_modules/@octokit/request": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.3.tgz",
- "integrity": "sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==",
+ "version": "10.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.5.tgz",
+ "integrity": "sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==",
"license": "MIT",
"dependencies": {
- "@octokit/endpoint": "^11.0.0",
- "@octokit/request-error": "^7.0.0",
- "@octokit/types": "^14.0.0",
+ "@octokit/endpoint": "^11.0.1",
+ "@octokit/request-error": "^7.0.1",
+ "@octokit/types": "^15.0.0",
"fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2"
},
@@ -832,24 +832,24 @@
}
},
"node_modules/@octokit/request-error": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
- "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.1.tgz",
+ "integrity": "sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==",
"license": "MIT",
"dependencies": {
- "@octokit/types": "^14.0.0"
+ "@octokit/types": "^15.0.0"
},
"engines": {
"node": ">= 20"
}
},
"node_modules/@octokit/types": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
- "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.0.tgz",
+ "integrity": "sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==",
"license": "MIT",
"dependencies": {
- "@octokit/openapi-types": "^25.0.0"
+ "@octokit/openapi-types": "^26.0.0"
}
},
"node_modules/@pkgjs/parseargs": {
diff --git a/package.json b/package.json
index 13978fc2..61a9b7f7 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^8.1.0",
+ "@octokit/auth-app": "^8.1.1",
"@octokit/request": "^10.0.3",
"p-retry": "^6.2.1",
"undici": "^7.16.0"
From d90aa532332d33f6dc9656fd4491a98441595a37 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:49:50 -0800
Subject: [PATCH 21/27] feat: update permission inputs (#296)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [@octokit/openapi](https://github.com/octokit/openapi) from 19.1.0
to 21.0.0.
Release notes
Sourced from @octokit/openapi's
releases.
v20.0.0
20.0.0
(2025-09-16)
chore
- deps: update dependency sort-keys to v6 (#500)
(262f87f)
Features
- new Projects v2 endpoints, new code scanning dismissal endpoints,
many other endpoints (#503)
(0b92729)
BREAKING CHANGES
Commits
262f87f
chore(deps): update dependency sort-keys to v6 (#500)
0b92729
feat: new Projects v2 endpoints, new code scanning dismissal endpoints,
many ...
a74dd44
chore(deps): update dependency @octokit/core to v7 (#496)
3a7a9ea
build(deps): lock file maintenance (#498)
d6be26f
ci(action): update actions/checkout action to v5 (#499)
6ae358e
ci(action): update actions/setup-node action to v5 (#502)
f02c5e2
ci(action): update gr2m/release-notifier-action action to v2 (#501)
- See full diff in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
.../workflows/update-permission-inputs.yml | 14 ++++++++++++--
action.yml | 6 +++++-
package-lock.json | 9 +++++----
package.json | 2 +-
scripts/generated/app-permissions.json | 19 ++++++++++++++++++-
5 files changed, 41 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/update-permission-inputs.yml b/.github/workflows/update-permission-inputs.yml
index d239fdfb..502d52ef 100644
--- a/.github/workflows/update-permission-inputs.yml
+++ b/.github/workflows/update-permission-inputs.yml
@@ -13,10 +13,13 @@ concurrency:
permissions:
contents: write
+ pull-requests: write
jobs:
update-permission-inputs:
runs-on: ubuntu-latest
+ env:
+ COMMIT_MESSAGE: 'feat: update permission inputs'
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
@@ -27,6 +30,13 @@ jobs:
- name: Run permission inputs update script
run: node scripts/update-permission-inputs.js
- name: Commit changes
- uses: stefanzweifel/git-auto-commit-action@28e16e81777b558cc906c8750092100bbb34c5e3 # v7.0.0
+ id: auto-commit
+ uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0 # v6.0.1
with:
- commit_message: 'feat: update permission inputs'
+ commit_message: ${{ env.COMMIT_MESSAGE }}
+ - name: Update PR title
+ if: github.event_name == 'pull_request' && steps.auto-commit.outputs.changes_detected == 'true'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ gh pr edit ${{ github.event.pull_request.number }} --title "${{ env.COMMIT_MESSAGE }}"
diff --git a/action.yml b/action.yml
index ab7d7f30..67616d4d 100644
--- a/action.yml
+++ b/action.yml
@@ -37,12 +37,16 @@ inputs:
description: "The level of permission to grant the access token to create, edit, delete, and list Codespaces. Can be set to 'read' or 'write'."
permission-contents:
description: "The level of permission to grant the access token for repository contents, commits, branches, downloads, releases, and merges. Can be set to 'read' or 'write'."
+ permission-custom-properties-for-organizations:
+ description: "The level of permission to grant the access token to view and edit custom properties for an organization, when allowed by the property. Can be set to 'read' or 'write'."
permission-dependabot-secrets:
description: "The level of permission to grant the access token to manage Dependabot secrets. Can be set to 'read' or 'write'."
permission-deployments:
description: "The level of permission to grant the access token for deployments and deployment statuses. Can be set to 'read' or 'write'."
permission-email-addresses:
description: "The level of permission to grant the access token to manage the email addresses belonging to a user. Can be set to 'read' or 'write'."
+ permission-enterprise-custom-properties-for-organizations:
+ description: "The level of permission to grant the access token for organization custom properties management at the enterprise level. Can be set to 'read', 'write', or 'admin'."
permission-environments:
description: "The level of permission to grant the access token for managing repository environments. Can be set to 'read' or 'write'."
permission-followers:
@@ -68,7 +72,7 @@ inputs:
permission-organization-custom-org-roles:
description: "The level of permission to grant the access token for custom organization roles management. Can be set to 'read' or 'write'."
permission-organization-custom-properties:
- description: "The level of permission to grant the access token for custom property management. Can be set to 'read', 'write', or 'admin'."
+ description: "The level of permission to grant the access token for repository custom properties management at the organization level. Can be set to 'read', 'write', or 'admin'."
permission-organization-custom-roles:
description: "The level of permission to grant the access token for custom repository roles management. Can be set to 'read' or 'write'."
permission-organization-events:
diff --git a/package-lock.json b/package-lock.json
index 868fbfc3..c499d2cd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
"undici": "^7.16.0"
},
"devDependencies": {
- "@octokit/openapi": "^19.1.0",
+ "@octokit/openapi": "^21.0.0",
"@sinonjs/fake-timers": "^15.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
@@ -800,9 +800,9 @@
}
},
"node_modules/@octokit/openapi": {
- "version": "19.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi/-/openapi-19.1.0.tgz",
- "integrity": "sha512-geiTDyEF3/QEFcb41IlIhl070NlqUStxiZycbSCmUn17Vrc7F+tHyDc34kavqprVe6I5z+2/SQQj9gz1w7UsVA==",
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi/-/openapi-21.0.0.tgz",
+ "integrity": "sha512-NybZQUNsa6yErKW1EEniJs0c/KFEFkXOrWlHk9IVFkY2OC5SQJMsjJnfCfVFyIuBjt8qBHGTopri7y/cKafxPQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -990,6 +990,7 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
diff --git a/package.json b/package.json
index 61a9b7f7..954cccf8 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
"undici": "^7.16.0"
},
"devDependencies": {
- "@octokit/openapi": "^19.1.0",
+ "@octokit/openapi": "^21.0.0",
"@sinonjs/fake-timers": "^15.0.0",
"ava": "^6.4.1",
"c8": "^10.1.3",
diff --git a/scripts/generated/app-permissions.json b/scripts/generated/app-permissions.json
index 5a00882b..aae22e8a 100644
--- a/scripts/generated/app-permissions.json
+++ b/scripts/generated/app-permissions.json
@@ -187,6 +187,14 @@
"write"
]
},
+ "custom_properties_for_organizations": {
+ "type": "string",
+ "description": "The level of permission to grant the access token to view and edit custom properties for an organization, when allowed by the property.",
+ "enum": [
+ "read",
+ "write"
+ ]
+ },
"members": {
"type": "string",
"description": "The level of permission to grant the access token for organization teams and members.",
@@ -221,7 +229,7 @@
},
"organization_custom_properties": {
"type": "string",
- "description": "The level of permission to grant the access token for custom property management.",
+ "description": "The level of permission to grant the access token for repository custom properties management at the organization level.",
"enum": [
"read",
"write",
@@ -384,6 +392,15 @@
"read",
"write"
]
+ },
+ "enterprise_custom_properties_for_organizations": {
+ "type": "string",
+ "description": "The level of permission to grant the access token for organization custom properties management at the enterprise level.",
+ "enum": [
+ "read",
+ "write",
+ "admin"
+ ]
}
},
"example": {
From 5480f4325a18c025ee16d7e081413854624e9edc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:49:59 -0800
Subject: [PATCH 22/27] fix(deps): bump glob from 10.4.5 to 10.5.0 (#305)
Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 10.5.0.
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/actions/create-github-app-token/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c499d2cd..e02d9da0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2015,9 +2015,9 @@
}
},
"node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"dev": true,
"license": "ISC",
"dependencies": {
From dce3be8b284f45e65caed11a610e2bef738d15b4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:50:07 -0800
Subject: [PATCH 23/27] fix(deps): bump p-retry from 6.2.1 to 7.1.0 (#294)
Bumps [p-retry](https://github.com/sindresorhus/p-retry) from 6.2.1 to
7.1.0.
Release notes
Sourced from p-retry's
releases.
v7.0.0
Breaking
- Require Node.js 20 3bdb53a
onFailedAttempt and shouldRetry now
receive a context object instead of a decorated
error bff36bb
- You must now must access the error as
object.error
instead of object.
- The use of
.attemptNumber and .retriesLeft
did not change.
- Remove the
forever option (#79)
6a89827
- Many use-cases can use
{retries: Infinity} instead for
infinite retries.
Improvements
- Rewrite the package to not depend on the
retry package
(#79)
6a89827
- This is a full rewrite, so test carefully.
- Add
makeRetriable
method 1a81c1e
https://github.com/sindresorhus/p-retry/compare/v6.2.1...v7.0.0
v7.0.0-0
Breaking
- Require Node.js 20 3bdb53a
onFailedAttempt and shouldRetry now
receive a context object instead of a decorated
error bff36bb
- You must now must access the error as
object.error
instead of object.
- The use of
.attemptNumber and .retriesLeft
did not change.
- Remove the
forever option (#79)
6a89827
- Many use-cases can use
{retries: Infinity} instead for
infinite retries.
Improvements
- Rewrite the package to not depend on the
retry package
(#79)
6a89827
- This is a full rewrite, so test carefully.
- Add
makeRetriable
method 1a81c1e
https://github.com/sindresorhus/p-retry/compare/v6.2.1...v7.0.0-0
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
---
lib/main.js | 10 +++++-----
package-lock.json | 28 +++++++---------------------
package.json | 2 +-
3 files changed, 13 insertions(+), 27 deletions(-)
diff --git a/lib/main.js b/lib/main.js
index 3ec39b50..9ae9d783 100644
--- a/lib/main.js
+++ b/lib/main.js
@@ -89,12 +89,12 @@ export async function main(
permissions
),
{
- shouldRetry: (error) => error.status >= 500,
- onFailedAttempt: (error) => {
+ shouldRetry: ({ error }) => error.status >= 500,
+ onFailedAttempt: (context) => {
core.info(
`Failed to create token for "${parsedRepositoryNames.join(
","
- )}" (attempt ${error.attemptNumber}): ${error.message}`
+ )}" (attempt ${context.attemptNumber}): ${context.error.message}`
);
},
retries: 3,
@@ -105,9 +105,9 @@ export async function main(
({ authentication, installationId, appSlug } = await pRetry(
() => getTokenFromOwner(request, auth, parsedOwner, permissions),
{
- onFailedAttempt: (error) => {
+ onFailedAttempt: (context) => {
core.info(
- `Failed to create token for "${parsedOwner}" (attempt ${error.attemptNumber}): ${error.message}`
+ `Failed to create token for "${parsedOwner}" (attempt ${context.attemptNumber}): ${context.error.message}`
);
},
retries: 3,
diff --git a/package-lock.json b/package-lock.json
index e02d9da0..d1e86244 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,7 @@
"@actions/core": "^1.11.1",
"@octokit/auth-app": "^8.1.1",
"@octokit/request": "^10.0.3",
- "p-retry": "^6.2.1",
+ "p-retry": "^7.1.0",
"undici": "^7.16.0"
},
"devDependencies": {
@@ -942,11 +942,6 @@
"integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
"dev": true
},
- "node_modules/@types/retry": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
- "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow=="
- },
"node_modules/@vercel/nft": {
"version": "0.29.4",
"resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz",
@@ -2822,16 +2817,15 @@
}
},
"node_modules/p-retry": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz",
- "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.0.tgz",
+ "integrity": "sha512-xL4PiFRQa/f9L9ZvR4/gUCRNus4N8YX80ku8kv9Jqz+ZokkiZLM0bcvX0gm1F3PDi9SPRsww1BDsTWgE6Y1GLQ==",
+ "license": "MIT",
"dependencies": {
- "@types/retry": "0.12.2",
- "is-network-error": "^1.0.0",
- "retry": "^0.13.1"
+ "is-network-error": "^1.1.0"
},
"engines": {
- "node": ">=16.17"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -3055,14 +3049,6 @@
"node": ">=8"
}
},
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/reusify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
diff --git a/package.json b/package.json
index 954cccf8..ad769560 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"@actions/core": "^1.11.1",
"@octokit/auth-app": "^8.1.1",
"@octokit/request": "^10.0.3",
- "p-retry": "^6.2.1",
+ "p-retry": "^7.1.0",
"undici": "^7.16.0"
},
"devDependencies": {
From 7e473efe3cb98aa54f8d4bac15400b15fad77d94 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 21 Nov 2025 23:51:44 +0000
Subject: [PATCH 24/27] build(release): 2.2.0 [skip ci]
# [2.2.0](https://github.com/actions/create-github-app-token/compare/v2.1.4...v2.2.0) (2025-11-21)
### Bug Fixes
* **deps:** bump glob from 10.4.5 to 10.5.0 ([#305](https://github.com/actions/create-github-app-token/issues/305)) ([5480f43](https://github.com/actions/create-github-app-token/commit/5480f4325a18c025ee16d7e081413854624e9edc))
* **deps:** bump p-retry from 6.2.1 to 7.1.0 ([#294](https://github.com/actions/create-github-app-token/issues/294)) ([dce3be8](https://github.com/actions/create-github-app-token/commit/dce3be8b284f45e65caed11a610e2bef738d15b4))
* **deps:** bump the production-dependencies group with 2 updates ([#292](https://github.com/actions/create-github-app-token/issues/292)) ([55e2a4b](https://github.com/actions/create-github-app-token/commit/55e2a4b2ccaaa8364303e6ab9f77e31ad02298e5))
### Features
* update permission inputs ([#296](https://github.com/actions/create-github-app-token/issues/296)) ([d90aa53](https://github.com/actions/create-github-app-token/commit/d90aa532332d33f6dc9656fd4491a98441595a37))
---
dist/main.cjs | 561 +++++++++++++++++-----------------------------
dist/post.cjs | 110 ++++-----
package-lock.json | 4 +-
package.json | 2 +-
4 files changed, 266 insertions(+), 411 deletions(-)
diff --git a/dist/main.cjs b/dist/main.cjs
index 97ecc2da..785c91a0 100644
--- a/dist/main.cjs
+++ b/dist/main.cjs
@@ -66,7 +66,7 @@ var require_utils = __commonJS({
var require_command = __commonJS({
"node_modules/@actions/core/lib/command.js"(exports2) {
"use strict";
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ 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)) {
@@ -75,13 +75,13 @@ var require_command = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -152,7 +152,7 @@ var require_command = __commonJS({
var require_file_command = __commonJS({
"node_modules/@actions/core/lib/file-command.js"(exports2) {
"use strict";
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ 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)) {
@@ -161,13 +161,13 @@ var require_file_command = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -13720,7 +13720,7 @@ var require_fetch = __commonJS({
fetchParams.controller.terminate(e);
}
};
- requestBody = async function* () {
+ requestBody = (async function* () {
try {
for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
@@ -13729,7 +13729,7 @@ var require_fetch = __commonJS({
} catch (err) {
processBodyError(err);
}
- }();
+ })();
}
try {
const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody });
@@ -17280,7 +17280,7 @@ var require_undici = __commonJS({
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) {
+ 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)) {
@@ -17289,13 +17289,13 @@ var require_lib = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18395,7 +18395,7 @@ var require_summary = __commonJS({
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) {
+ 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)) {
@@ -18404,13 +18404,13 @@ var require_path_utils = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18444,18 +18444,18 @@ var require_path_utils = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18617,18 +18617,18 @@ var require_io_util = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18865,18 +18865,18 @@ var require_io = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19349,18 +19349,18 @@ var require_toolrunner = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19456,7 +19456,7 @@ var require_exec = __commonJS({
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) {
+ 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)) {
@@ -19465,13 +19465,13 @@ var require_platform = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19575,7 +19575,7 @@ var require_platform = __commonJS({
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) {
+ 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)) {
@@ -19584,13 +19584,13 @@ var require_core = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19896,234 +19896,6 @@ var require_fast_content_type_parse = __commonJS({
}
});
-// node_modules/retry/lib/retry_operation.js
-var require_retry_operation = __commonJS({
- "node_modules/retry/lib/retry_operation.js"(exports2, module2) {
- function RetryOperation(timeouts, options) {
- if (typeof options === "boolean") {
- options = { forever: options };
- }
- this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
- this._timeouts = timeouts;
- this._options = options || {};
- this._maxRetryTime = options && options.maxRetryTime || Infinity;
- this._fn = null;
- this._errors = [];
- this._attempts = 1;
- this._operationTimeout = null;
- this._operationTimeoutCb = null;
- this._timeout = null;
- this._operationStart = null;
- this._timer = null;
- if (this._options.forever) {
- this._cachedTimeouts = this._timeouts.slice(0);
- }
- }
- module2.exports = RetryOperation;
- RetryOperation.prototype.reset = function() {
- this._attempts = 1;
- this._timeouts = this._originalTimeouts.slice(0);
- };
- RetryOperation.prototype.stop = function() {
- if (this._timeout) {
- clearTimeout(this._timeout);
- }
- if (this._timer) {
- clearTimeout(this._timer);
- }
- this._timeouts = [];
- this._cachedTimeouts = null;
- };
- RetryOperation.prototype.retry = function(err) {
- if (this._timeout) {
- clearTimeout(this._timeout);
- }
- if (!err) {
- return false;
- }
- var currentTime = (/* @__PURE__ */ new Date()).getTime();
- if (err && currentTime - this._operationStart >= this._maxRetryTime) {
- this._errors.push(err);
- this._errors.unshift(new Error("RetryOperation timeout occurred"));
- return false;
- }
- this._errors.push(err);
- var timeout = this._timeouts.shift();
- if (timeout === void 0) {
- if (this._cachedTimeouts) {
- this._errors.splice(0, this._errors.length - 1);
- timeout = this._cachedTimeouts.slice(-1);
- } else {
- return false;
- }
- }
- var self = this;
- this._timer = setTimeout(function() {
- self._attempts++;
- if (self._operationTimeoutCb) {
- self._timeout = setTimeout(function() {
- self._operationTimeoutCb(self._attempts);
- }, self._operationTimeout);
- if (self._options.unref) {
- self._timeout.unref();
- }
- }
- self._fn(self._attempts);
- }, timeout);
- if (this._options.unref) {
- this._timer.unref();
- }
- return true;
- };
- RetryOperation.prototype.attempt = function(fn, timeoutOps) {
- this._fn = fn;
- if (timeoutOps) {
- if (timeoutOps.timeout) {
- this._operationTimeout = timeoutOps.timeout;
- }
- if (timeoutOps.cb) {
- this._operationTimeoutCb = timeoutOps.cb;
- }
- }
- var self = this;
- if (this._operationTimeoutCb) {
- this._timeout = setTimeout(function() {
- self._operationTimeoutCb();
- }, self._operationTimeout);
- }
- this._operationStart = (/* @__PURE__ */ new Date()).getTime();
- this._fn(this._attempts);
- };
- RetryOperation.prototype.try = function(fn) {
- console.log("Using RetryOperation.try() is deprecated");
- this.attempt(fn);
- };
- RetryOperation.prototype.start = function(fn) {
- console.log("Using RetryOperation.start() is deprecated");
- this.attempt(fn);
- };
- RetryOperation.prototype.start = RetryOperation.prototype.try;
- RetryOperation.prototype.errors = function() {
- return this._errors;
- };
- RetryOperation.prototype.attempts = function() {
- return this._attempts;
- };
- RetryOperation.prototype.mainError = function() {
- if (this._errors.length === 0) {
- return null;
- }
- var counts = {};
- var mainError = null;
- var mainErrorCount = 0;
- for (var i = 0; i < this._errors.length; i++) {
- var error = this._errors[i];
- var message = error.message;
- var count = (counts[message] || 0) + 1;
- counts[message] = count;
- if (count >= mainErrorCount) {
- mainError = error;
- mainErrorCount = count;
- }
- }
- return mainError;
- };
- }
-});
-
-// node_modules/retry/lib/retry.js
-var require_retry = __commonJS({
- "node_modules/retry/lib/retry.js"(exports2) {
- var RetryOperation = require_retry_operation();
- exports2.operation = function(options) {
- var timeouts = exports2.timeouts(options);
- return new RetryOperation(timeouts, {
- forever: options && (options.forever || options.retries === Infinity),
- unref: options && options.unref,
- maxRetryTime: options && options.maxRetryTime
- });
- };
- exports2.timeouts = function(options) {
- if (options instanceof Array) {
- return [].concat(options);
- }
- var opts = {
- retries: 10,
- factor: 2,
- minTimeout: 1 * 1e3,
- maxTimeout: Infinity,
- randomize: false
- };
- for (var key in options) {
- opts[key] = options[key];
- }
- if (opts.minTimeout > opts.maxTimeout) {
- throw new Error("minTimeout is greater than maxTimeout");
- }
- var timeouts = [];
- for (var i = 0; i < opts.retries; i++) {
- timeouts.push(this.createTimeout(i, opts));
- }
- if (options && options.forever && !timeouts.length) {
- timeouts.push(this.createTimeout(i, opts));
- }
- timeouts.sort(function(a, b) {
- return a - b;
- });
- return timeouts;
- };
- exports2.createTimeout = function(attempt, opts) {
- var random = opts.randomize ? Math.random() + 1 : 1;
- var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));
- timeout = Math.min(timeout, opts.maxTimeout);
- return timeout;
- };
- exports2.wrap = function(obj, options, methods) {
- if (options instanceof Array) {
- methods = options;
- options = null;
- }
- if (!methods) {
- methods = [];
- for (var key in obj) {
- if (typeof obj[key] === "function") {
- methods.push(key);
- }
- }
- }
- for (var i = 0; i < methods.length; i++) {
- var method = methods[i];
- var original = obj[method];
- obj[method] = function retryWrapper(original2) {
- var op = exports2.operation(options);
- var args = Array.prototype.slice.call(arguments, 1);
- var callback = args.pop();
- args.push(function(err) {
- if (op.retry(err)) {
- return;
- }
- if (err) {
- arguments[0] = op.mainError();
- }
- callback.apply(this, arguments);
- });
- op.attempt(function() {
- original2.apply(obj, args);
- });
- }.bind(obj, original);
- obj[method].options = options;
- }
- };
- }
-});
-
-// node_modules/retry/index.js
-var require_retry2 = __commonJS({
- "node_modules/retry/index.js"(exports2, module2) {
- module2.exports = require_retry();
- }
-});
-
// node_modules/undici/lib/core/symbols.js
var require_symbols6 = __commonJS({
"node_modules/undici/lib/core/symbols.js"(exports2, module2) {
@@ -29596,14 +29368,14 @@ var require_retry_agent = __commonJS({
this.#options = options;
}
dispatch(opts, handler) {
- const retry2 = new RetryHandler({
+ const retry = new RetryHandler({
...opts,
retryOptions: this.#options
}, {
dispatch: this.#agent.dispatch.bind(this.#agent),
handler
});
- return this.#agent.dispatch(opts, retry2);
+ return this.#agent.dispatch(opts, retry);
}
close() {
return this.#agent.close();
@@ -33128,7 +32900,7 @@ var require_response_error = __commonJS({
});
// node_modules/undici/lib/interceptor/retry.js
-var require_retry3 = __commonJS({
+var require_retry = __commonJS({
"node_modules/undici/lib/interceptor/retry.js"(exports2, module2) {
"use strict";
var RetryHandler = require_retry_handler();
@@ -38343,7 +38115,7 @@ var require_fetch2 = __commonJS({
fetchParams.controller.terminate(e);
}
};
- requestBody = async function* () {
+ requestBody = (async function* () {
try {
for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
@@ -38352,7 +38124,7 @@ var require_fetch2 = __commonJS({
} catch (err) {
processBodyError(err);
}
- }();
+ })();
}
try {
const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody });
@@ -42433,7 +42205,7 @@ var require_undici2 = __commonJS({
module2.exports.interceptors = {
redirect: require_redirect(),
responseError: require_response_error(),
- retry: require_retry3(),
+ retry: require_retry(),
dump: require_dump(),
dns: require_dns(),
cache: require_cache3(),
@@ -42933,7 +42705,7 @@ var RequestError = class extends Error {
};
// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "10.0.3";
+var VERSION2 = "10.0.5";
var defaults_default = {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
@@ -44376,7 +44148,7 @@ async function sendRequestWithRetries(state, request2, options, createdAt, retri
return sendRequestWithRetries(state, request2, options, createdAt, retries);
}
}
-var VERSION6 = "8.1.0";
+var VERSION6 = "8.1.1";
function createAppAuth(options) {
if (!options.appId) {
throw new Error("[@octokit/auth-app] appId option is required");
@@ -44441,9 +44213,6 @@ function getPermissionsFromInputs(env) {
}, void 0);
}
-// node_modules/p-retry/index.js
-var import_retry = __toESM(require_retry2(), 1);
-
// node_modules/is-network-error/index.js
var objectToString = Object.prototype.toString;
var isError = (value) => objectToString.call(value) === "[object Error]";
@@ -44477,6 +44246,32 @@ function isNetworkError(error) {
}
// node_modules/p-retry/index.js
+function validateRetries(retries) {
+ if (typeof retries === "number") {
+ if (retries < 0) {
+ throw new TypeError("Expected `retries` to be a non-negative number.");
+ }
+ if (Number.isNaN(retries)) {
+ throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.");
+ }
+ } else if (retries !== void 0) {
+ throw new TypeError("Expected `retries` to be a number or Infinity.");
+ }
+}
+function validateNumberOption(name, value, { min = 0, allowInfinity = false } = {}) {
+ if (value === void 0) {
+ return;
+ }
+ if (typeof value !== "number" || Number.isNaN(value)) {
+ throw new TypeError(`Expected \`${name}\` to be a number${allowInfinity ? " or Infinity" : ""}.`);
+ }
+ if (!allowInfinity && !Number.isFinite(value)) {
+ throw new TypeError(`Expected \`${name}\` to be a finite number.`);
+ }
+ if (value < min) {
+ throw new TypeError(`Expected \`${name}\` to be \u2265 ${min}.`);
+ }
+}
var AbortError = class extends Error {
constructor(message) {
super();
@@ -44491,64 +44286,124 @@ var AbortError = class extends Error {
this.message = message;
}
};
-var decorateErrorWithCounts = (error, attemptNumber, options) => {
- const retriesLeft = options.retries - (attemptNumber - 1);
- error.attemptNumber = attemptNumber;
- error.retriesLeft = retriesLeft;
- return error;
-};
-async function pRetry(input, options) {
- return new Promise((resolve, reject) => {
- options = { ...options };
- options.onFailedAttempt ??= () => {
- };
- options.shouldRetry ??= () => true;
- options.retries ??= 10;
- const operation = import_retry.default.operation(options);
- const abortHandler = () => {
- operation.stop();
- reject(options.signal?.reason);
- };
- if (options.signal && !options.signal.aborted) {
- options.signal.addEventListener("abort", abortHandler, { once: true });
- }
- const cleanUp = () => {
- options.signal?.removeEventListener("abort", abortHandler);
- operation.stop();
- };
- operation.attempt(async (attemptNumber) => {
- try {
- const result = await input(attemptNumber);
- cleanUp();
- resolve(result);
- } catch (error) {
- try {
- if (!(error instanceof Error)) {
- throw new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`);
- }
- if (error instanceof AbortError) {
- throw error.originalError;
- }
- if (error instanceof TypeError && !isNetworkError(error)) {
- throw error;
- }
- decorateErrorWithCounts(error, attemptNumber, options);
- if (!await options.shouldRetry(error)) {
- operation.stop();
- reject(error);
- }
- await options.onFailedAttempt(error);
- if (!operation.retry(error)) {
- throw operation.mainError();
- }
- } catch (finalError) {
- decorateErrorWithCounts(finalError, attemptNumber, options);
- cleanUp();
- reject(finalError);
- }
- }
- });
+function calculateDelay(retriesConsumed, options) {
+ const attempt = Math.max(1, retriesConsumed + 1);
+ const random = options.randomize ? Math.random() + 1 : 1;
+ let timeout = Math.round(random * options.minTimeout * options.factor ** (attempt - 1));
+ timeout = Math.min(timeout, options.maxTimeout);
+ return timeout;
+}
+function calculateRemainingTime(start, max) {
+ if (!Number.isFinite(max)) {
+ return max;
+ }
+ return max - (performance.now() - start);
+}
+async function onAttemptFailure({ error, attemptNumber, retriesConsumed, startTime, options }) {
+ const normalizedError = error instanceof Error ? error : new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`);
+ if (normalizedError instanceof AbortError) {
+ throw normalizedError.originalError;
+ }
+ const retriesLeft = Number.isFinite(options.retries) ? Math.max(0, options.retries - retriesConsumed) : options.retries;
+ const maxRetryTime = options.maxRetryTime ?? Number.POSITIVE_INFINITY;
+ const context = Object.freeze({
+ error: normalizedError,
+ attemptNumber,
+ retriesLeft,
+ retriesConsumed
});
+ await options.onFailedAttempt(context);
+ if (calculateRemainingTime(startTime, maxRetryTime) <= 0) {
+ throw normalizedError;
+ }
+ const consumeRetry = await options.shouldConsumeRetry(context);
+ const remainingTime = calculateRemainingTime(startTime, maxRetryTime);
+ if (remainingTime <= 0 || retriesLeft <= 0) {
+ throw normalizedError;
+ }
+ if (normalizedError instanceof TypeError && !isNetworkError(normalizedError)) {
+ if (consumeRetry) {
+ throw normalizedError;
+ }
+ options.signal?.throwIfAborted();
+ return false;
+ }
+ if (!await options.shouldRetry(context)) {
+ throw normalizedError;
+ }
+ if (!consumeRetry) {
+ options.signal?.throwIfAborted();
+ return false;
+ }
+ const delayTime = calculateDelay(retriesConsumed, options);
+ const finalDelay = Math.min(delayTime, remainingTime);
+ if (finalDelay > 0) {
+ await new Promise((resolve, reject) => {
+ const onAbort = () => {
+ clearTimeout(timeoutToken);
+ options.signal?.removeEventListener("abort", onAbort);
+ reject(options.signal.reason);
+ };
+ const timeoutToken = setTimeout(() => {
+ options.signal?.removeEventListener("abort", onAbort);
+ resolve();
+ }, finalDelay);
+ if (options.unref) {
+ timeoutToken.unref?.();
+ }
+ options.signal?.addEventListener("abort", onAbort, { once: true });
+ });
+ }
+ options.signal?.throwIfAborted();
+ return true;
+}
+async function pRetry(input, options = {}) {
+ options = { ...options };
+ validateRetries(options.retries);
+ if (Object.hasOwn(options, "forever")) {
+ throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");
+ }
+ options.retries ??= 10;
+ options.factor ??= 2;
+ options.minTimeout ??= 1e3;
+ options.maxTimeout ??= Number.POSITIVE_INFINITY;
+ options.maxRetryTime ??= Number.POSITIVE_INFINITY;
+ options.randomize ??= false;
+ options.onFailedAttempt ??= () => {
+ };
+ options.shouldRetry ??= () => true;
+ options.shouldConsumeRetry ??= () => true;
+ validateNumberOption("factor", options.factor, { min: 0, allowInfinity: false });
+ validateNumberOption("minTimeout", options.minTimeout, { min: 0, allowInfinity: false });
+ validateNumberOption("maxTimeout", options.maxTimeout, { min: 0, allowInfinity: true });
+ validateNumberOption("maxRetryTime", options.maxRetryTime, { min: 0, allowInfinity: true });
+ if (!(options.factor > 0)) {
+ options.factor = 1;
+ }
+ options.signal?.throwIfAborted();
+ let attemptNumber = 0;
+ let retriesConsumed = 0;
+ const startTime = performance.now();
+ while (Number.isFinite(options.retries) ? retriesConsumed <= options.retries : true) {
+ attemptNumber++;
+ try {
+ options.signal?.throwIfAborted();
+ const result = await input(attemptNumber);
+ options.signal?.throwIfAborted();
+ return result;
+ } catch (error) {
+ if (await onAttemptFailure({
+ error,
+ attemptNumber,
+ retriesConsumed,
+ startTime,
+ options
+ })) {
+ retriesConsumed++;
+ }
+ }
+ }
+ throw new Error("Retry attempts exhausted without throwing an error.");
}
// lib/main.js
@@ -44602,12 +44457,12 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
permissions2
),
{
- shouldRetry: (error) => error.status >= 500,
- onFailedAttempt: (error) => {
+ shouldRetry: ({ error }) => error.status >= 500,
+ onFailedAttempt: (context) => {
core3.info(
`Failed to create token for "${parsedRepositoryNames.join(
","
- )}" (attempt ${error.attemptNumber}): ${error.message}`
+ )}" (attempt ${context.attemptNumber}): ${context.error.message}`
);
},
retries: 3
@@ -44617,9 +44472,9 @@ async function main(appId2, privateKey2, owner2, repositories2, permissions2, co
({ authentication, installationId, appSlug } = await pRetry(
() => getTokenFromOwner(request2, auth5, parsedOwner, permissions2),
{
- onFailedAttempt: (error) => {
+ onFailedAttempt: (context) => {
core3.info(
- `Failed to create token for "${parsedOwner}" (attempt ${error.attemptNumber}): ${error.message}`
+ `Failed to create token for "${parsedOwner}" (attempt ${context.attemptNumber}): ${context.error.message}`
);
},
retries: 3
diff --git a/dist/post.cjs b/dist/post.cjs
index 0391dd67..6b186a85 100644
--- a/dist/post.cjs
+++ b/dist/post.cjs
@@ -60,7 +60,7 @@ var require_utils = __commonJS({
var require_command = __commonJS({
"node_modules/@actions/core/lib/command.js"(exports2) {
"use strict";
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ 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)) {
@@ -69,13 +69,13 @@ var require_command = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -146,7 +146,7 @@ var require_command = __commonJS({
var require_file_command = __commonJS({
"node_modules/@actions/core/lib/file-command.js"(exports2) {
"use strict";
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ 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)) {
@@ -155,13 +155,13 @@ var require_file_command = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -13714,7 +13714,7 @@ var require_fetch = __commonJS({
fetchParams.controller.terminate(e);
}
};
- requestBody = async function* () {
+ requestBody = (async function* () {
try {
for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
@@ -13723,7 +13723,7 @@ var require_fetch = __commonJS({
} catch (err) {
processBodyError(err);
}
- }();
+ })();
}
try {
const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody });
@@ -17274,7 +17274,7 @@ var require_undici = __commonJS({
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) {
+ 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)) {
@@ -17283,13 +17283,13 @@ var require_lib = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18389,7 +18389,7 @@ var require_summary = __commonJS({
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) {
+ 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)) {
@@ -18398,13 +18398,13 @@ var require_path_utils = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18438,18 +18438,18 @@ var require_path_utils = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18611,18 +18611,18 @@ var require_io_util = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -18859,18 +18859,18 @@ var require_io = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19343,18 +19343,18 @@ var require_toolrunner = __commonJS({
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) {
+ 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) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19450,7 +19450,7 @@ var require_exec = __commonJS({
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) {
+ 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)) {
@@ -19459,13 +19459,13 @@ var require_platform = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -19569,7 +19569,7 @@ var require_platform = __commonJS({
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) {
+ 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)) {
@@ -19578,13 +19578,13 @@ var require_core = __commonJS({
} };
}
Object.defineProperty(o, k2, desc);
- } : function(o, m, k, k2) {
+ }) : (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) {
+ }));
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
- } : function(o, v) {
+ }) : function(o, v) {
o["default"] = v;
});
var __importStar = exports2 && exports2.__importStar || function(mod) {
@@ -38109,7 +38109,7 @@ var require_fetch2 = __commonJS({
fetchParams.controller.terminate(e);
}
};
- requestBody = async function* () {
+ requestBody = (async function* () {
try {
for await (const bytes of request2.body.stream) {
yield* processBodyChunk(bytes);
@@ -38118,7 +38118,7 @@ var require_fetch2 = __commonJS({
} catch (err) {
processBodyError(err);
}
- }();
+ })();
}
try {
const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody });
@@ -42731,7 +42731,7 @@ var RequestError = class extends Error {
};
// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "10.0.3";
+var VERSION2 = "10.0.5";
var defaults_default = {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
diff --git a/package-lock.json b/package-lock.json
index d1e86244..ff71d0c1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "create-github-app-token",
- "version": "2.1.4",
+ "version": "2.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-github-app-token",
- "version": "2.1.4",
+ "version": "2.2.0",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
diff --git a/package.json b/package.json
index ad769560..4333aed6 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "create-github-app-token",
"private": true,
"type": "module",
- "version": "2.1.4",
+ "version": "2.2.0",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
"engines": {
"node": ">=20"
From 8efbf9bf0ff7093c26fd1720e1722fd9cdd30fac Mon Sep 17 00:00:00 2001
From: Parker Brown <17183625+parkerbxyz@users.noreply.github.com>
Date: Sat, 22 Nov 2025 00:07:32 -0800
Subject: [PATCH 25/27] ci: create stale workflow (#309)
Introduces a GitHub Actions workflow that automatically marks issues and
pull requests as stale after 180 days of inactivity and closes them
after an additional 60 days. This helps keep the repository clean and
maintainable by prompting action on inactive items.
---
.github/workflows/stale.yml | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 .github/workflows/stale.yml
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 00000000..e1cf89b2
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,34 @@
+# This workflow warns and then closes issues that have had no activity for a specified amount of time.
+# https://github.com/actions/stale
+
+name: Stale
+
+on:
+ workflow_dispatch:
+ schedule:
+ # 00:00 UTC on Mondays
+ - cron: '0 0 * * 1'
+
+permissions:
+ issues: write
+ pull-requests: write
+
+env:
+ DAYS_BEFORE_STALE: 180
+ DAYS_BEFORE_CLOSE: 60
+ STALE_LABEL: 'stale'
+ STALE_LABEL_URL: ${{github.server_url}}/${{github.repository}}/labels/stale
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v10
+ with:
+ operations-per-run: 100
+ days-before-stale: ${{ env.DAYS_BEFORE_STALE }}
+ days-before-close: ${{ env.DAYS_BEFORE_CLOSE }}
+ stale-issue-label: ${{ env.STALE_LABEL }}
+ stale-pr-label: ${{ env.STALE_LABEL }}
+ stale-issue-message: 'This issue has been marked ${{ env.STALE_LABEL_URL }} because it has been open for ${{ env.DAYS_BEFORE_STALE }} days with no activity. Please close this issue if it is no longer needed. If this issue is still relevant and you would like it to remain open, simply update it within the next ${{ env.DAYS_BEFORE_CLOSE }} days.'
+ stale-pr-message: 'This pull request has been marked ${{ env.STALE_LABEL_URL }} because it has been open for ${{ env.DAYS_BEFORE_STALE }} days with no activity. Please close this pull request if it is no longer needed. If this pull request is still relevant and you would like it to remain open, simply update it within the next ${{ env.DAYS_BEFORE_CLOSE }} days.'
From b212e6a739dec02d8488610fbaf8f049f82ee999 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Dec 2025 14:52:29 -0800
Subject: [PATCH 26/27] fix(deps): bump the production-dependencies group with
2 updates (#311)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the production-dependencies group with 2 updates:
[@octokit/auth-app](https://github.com/octokit/auth-app.js) and
[@octokit/request](https://github.com/octokit/request.js).
Updates `@octokit/auth-app` from 8.1.1 to 8.1.2
Release notes
Sourced from @octokit/auth-app's
releases.
v8.1.2
8.1.2
(2025-10-31)
Bug Fixes
- deps: update dependency
@octokit/types to v16 (#731)
(016958a)
Commits
016958a
fix(deps): update dependency @octokit/types to v16 (#731)
6290a83
ci(action): update peter-evans/create-or-update-comment action to v5 (#723)
767ba94
ci(action): update actions/setup-node action to v6 (#727)
a6b03f2
ci(action): update github/codeql-action action to v4 (#726)
f6eb9c8
chore(deps): update dependency node to v24 (#730)
f50e21a
ci(action): update actions/setup-node action to v5 (#718)
7f24cee
build(deps): lock file maintenance (#719)
- See full diff in compare
view
Updates `@octokit/request` from 10.0.5 to 10.0.7
Release notes
Sourced from @octokit/request's
releases.
v10.0.7
10.0.7
(2025-11-13)
Bug Fixes
- readme: properly structure the options for custom
agent (#786)
(f17c1c1),
closes #785
v10.0.6
10.0.6
(2025-10-30)
Bug Fixes
- deps: update dependency
@octokit/types to v16 (#783)
(1aeac56)
Commits
f17c1c1
fix(readme): properly structure the options for custom agent (#786)
ea46fa9
ci(action): update github/codeql-action action to v4 (#778)
8166d28
chore(deps): update vitest monorepo to v4 (major) (#781)
1aeac56
fix(deps): update dependency @octokit/types to v16 (#783)
b5b08a2
ci(action): update actions/setup-node action to v6 (#779)
9a78123
chore(deps): update dependency @types/node to v24 (#782)
- See full diff in compare
view
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 113 +++++++++++++++++++++++-----------------------
package.json | 2 +-
2 files changed, 57 insertions(+), 58 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ff71d0c1..c4e098cb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^8.1.1",
+ "@octokit/auth-app": "^8.1.2",
"@octokit/request": "^10.0.3",
"p-retry": "^7.1.0",
"undici": "^7.16.0"
@@ -697,16 +697,16 @@
}
},
"node_modules/@octokit/auth-app": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-8.1.1.tgz",
- "integrity": "sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==",
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-8.1.2.tgz",
+ "integrity": "sha512-db8VO0PqXxfzI6GdjtgEFHY9tzqUql5xMFXYA12juq8TeTgPAuiiP3zid4h50lwlIP457p5+56PnJOgd2GGBuw==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-app": "^9.0.2",
- "@octokit/auth-oauth-user": "^6.0.1",
- "@octokit/request": "^10.0.5",
- "@octokit/request-error": "^7.0.1",
- "@octokit/types": "^15.0.0",
+ "@octokit/auth-oauth-app": "^9.0.3",
+ "@octokit/auth-oauth-user": "^6.0.2",
+ "@octokit/request": "^10.0.6",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
"toad-cache": "^3.7.0",
"universal-github-app-jwt": "^2.2.0",
"universal-user-agent": "^7.0.0"
@@ -716,15 +716,15 @@
}
},
"node_modules/@octokit/auth-oauth-app": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-9.0.2.tgz",
- "integrity": "sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ==",
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-9.0.3.tgz",
+ "integrity": "sha512-+yoFQquaF8OxJSxTb7rnytBIC2ZLbLqA/yb71I4ZXT9+Slw4TziV9j/kyGhUFRRTF2+7WlnIWsePZCWHs+OGjg==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^8.0.2",
- "@octokit/auth-oauth-user": "^6.0.1",
- "@octokit/request": "^10.0.5",
- "@octokit/types": "^15.0.0",
+ "@octokit/auth-oauth-device": "^8.0.3",
+ "@octokit/auth-oauth-user": "^6.0.2",
+ "@octokit/request": "^10.0.6",
+ "@octokit/types": "^16.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -732,14 +732,14 @@
}
},
"node_modules/@octokit/auth-oauth-device": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-8.0.2.tgz",
- "integrity": "sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-8.0.3.tgz",
+ "integrity": "sha512-zh2W0mKKMh/VWZhSqlaCzY7qFyrgd9oTWmTmHaXnHNeQRCZr/CXy2jCgHo4e4dJVTiuxP5dLa0YM5p5QVhJHbw==",
"license": "MIT",
"dependencies": {
- "@octokit/oauth-methods": "^6.0.1",
- "@octokit/request": "^10.0.5",
- "@octokit/types": "^15.0.0",
+ "@octokit/oauth-methods": "^6.0.2",
+ "@octokit/request": "^10.0.6",
+ "@octokit/types": "^16.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -747,15 +747,15 @@
}
},
"node_modules/@octokit/auth-oauth-user": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-6.0.1.tgz",
- "integrity": "sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-6.0.2.tgz",
+ "integrity": "sha512-qLoPPc6E6GJoz3XeDG/pnDhJpTkODTGG4kY0/Py154i/I003O9NazkrwJwRuzgCalhzyIeWQ+6MDvkUmKXjg/A==",
"license": "MIT",
"dependencies": {
- "@octokit/auth-oauth-device": "^8.0.2",
- "@octokit/oauth-methods": "^6.0.1",
- "@octokit/request": "^10.0.5",
- "@octokit/types": "^15.0.0",
+ "@octokit/auth-oauth-device": "^8.0.3",
+ "@octokit/oauth-methods": "^6.0.2",
+ "@octokit/request": "^10.0.6",
+ "@octokit/types": "^16.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
@@ -763,12 +763,12 @@
}
},
"node_modules/@octokit/endpoint": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.1.tgz",
- "integrity": "sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==",
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz",
+ "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==",
"license": "MIT",
"dependencies": {
- "@octokit/types": "^15.0.0",
+ "@octokit/types": "^16.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
@@ -785,15 +785,15 @@
}
},
"node_modules/@octokit/oauth-methods": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-6.0.1.tgz",
- "integrity": "sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-6.0.2.tgz",
+ "integrity": "sha512-HiNOO3MqLxlt5Da5bZbLV8Zarnphi4y9XehrbaFMkcoJ+FL7sMxH/UlUsCVxpddVu4qvNDrBdaTVE2o4ITK8ng==",
"license": "MIT",
"dependencies": {
"@octokit/oauth-authorization-url": "^8.0.0",
- "@octokit/request": "^10.0.5",
- "@octokit/request-error": "^7.0.1",
- "@octokit/types": "^15.0.0"
+ "@octokit/request": "^10.0.6",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0"
},
"engines": {
"node": ">= 20"
@@ -810,20 +810,20 @@
}
},
"node_modules/@octokit/openapi-types": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz",
- "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==",
+ "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/request": {
- "version": "10.0.5",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.5.tgz",
- "integrity": "sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==",
+ "version": "10.0.7",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz",
+ "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==",
"license": "MIT",
"dependencies": {
- "@octokit/endpoint": "^11.0.1",
- "@octokit/request-error": "^7.0.1",
- "@octokit/types": "^15.0.0",
+ "@octokit/endpoint": "^11.0.2",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
"fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2"
},
@@ -832,24 +832,24 @@
}
},
"node_modules/@octokit/request-error": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.1.tgz",
- "integrity": "sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==",
+ "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": "^15.0.0"
+ "@octokit/types": "^16.0.0"
},
"engines": {
"node": ">= 20"
}
},
"node_modules/@octokit/types": {
- "version": "15.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.0.tgz",
- "integrity": "sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==",
+ "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": "^26.0.0"
+ "@octokit/openapi-types": "^27.0.0"
}
},
"node_modules/@pkgjs/parseargs": {
@@ -985,7 +985,6 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
diff --git a/package.json b/package.json
index 4333aed6..8ff34534 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
- "@octokit/auth-app": "^8.1.1",
+ "@octokit/auth-app": "^8.1.2",
"@octokit/request": "^10.0.3",
"p-retry": "^7.1.0",
"undici": "^7.16.0"
From 29824e69f54612133e76f7eaac726eef6c875baf Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 5 Dec 2025 22:53:03 +0000
Subject: [PATCH 27/27] build(release): 2.2.1 [skip ci]
## [2.2.1](https://github.com/actions/create-github-app-token/compare/v2.2.0...v2.2.1) (2025-12-05)
### Bug Fixes
* **deps:** bump the production-dependencies group with 2 updates ([#311](https://github.com/actions/create-github-app-token/issues/311)) ([b212e6a](https://github.com/actions/create-github-app-token/commit/b212e6a739dec02d8488610fbaf8f049f82ee999))
---
dist/main.cjs | 85 ++++++++++++++++++++++++++---------------------
dist/post.cjs | 83 +++++++++++++++++++++++++--------------------
package-lock.json | 4 +--
package.json | 2 +-
4 files changed, 98 insertions(+), 76 deletions(-)
diff --git a/dist/main.cjs b/dist/main.cjs
index 785c91a0..0371f562 100644
--- a/dist/main.cjs
+++ b/dist/main.cjs
@@ -9201,7 +9201,7 @@ var require_readable = __commonJS({
var kBody = Symbol("kBody");
var kAbort = Symbol("abort");
var kContentType = Symbol("kContentType");
- var noop = () => {
+ var noop2 = () => {
};
module2.exports = class BodyReadable extends Readable {
constructor({
@@ -9323,7 +9323,7 @@ var require_readable = __commonJS({
return new Promise((resolve, reject) => {
const signalListenerCleanup = signal ? util.addAbortListener(signal, () => {
this.destroy();
- }) : noop;
+ }) : noop2;
this.on("close", function() {
signalListenerCleanup();
if (signal && signal.aborted) {
@@ -9331,7 +9331,7 @@ var require_readable = __commonJS({
} else {
resolve(null);
}
- }).on("error", noop).on("data", function(chunk) {
+ }).on("error", noop2).on("data", function(chunk) {
limit -= chunk.length;
if (limit <= 0) {
this.destroy();
@@ -20879,7 +20879,7 @@ var require_util8 = __commonJS({
yield* this[kBody];
}
};
- function noop() {
+ function noop2() {
}
function wrapRequestBody(body) {
if (isStream(body)) {
@@ -21290,7 +21290,7 @@ var require_util8 = __commonJS({
}
var setupConnectTimeout = process.platform === "win32" ? (socketWeakRef, opts) => {
if (!opts.timeout) {
- return noop;
+ return noop2;
}
let s1 = null;
let s2 = null;
@@ -21306,7 +21306,7 @@ var require_util8 = __commonJS({
};
} : (socketWeakRef, opts) => {
if (!opts.timeout) {
- return noop;
+ return noop2;
}
let s1 = null;
const fastTimer = timers.setFastTimeout(() => {
@@ -25556,12 +25556,12 @@ var require_body2 = __commonJS({
random = (max) => Math.floor(Math.random() * max);
}
var textEncoder = new TextEncoder();
- function noop() {
+ function noop2() {
}
var 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(noop);
+ stream.cancel("Response object has been garbage collected").catch(noop2);
}
});
function extractBody(object, keepalive = false) {
@@ -27650,7 +27650,7 @@ var require_client2 = __commonJS({
var getDefaultNodeMaxHeaderSize = http && http.maxHeaderSize && Number.isInteger(http.maxHeaderSize) && http.maxHeaderSize > 0 ? () => http.maxHeaderSize : () => {
throw new InvalidArgumentError("http module not available or http.maxHeaderSize invalid");
};
- var noop = () => {
+ var noop2 = () => {
};
function getPipelining(client) {
return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1;
@@ -27924,7 +27924,7 @@ var require_client2 = __commonJS({
return;
}
if (client.destroyed) {
- util.destroy(socket.on("error", noop), new ClientDestroyedError());
+ util.destroy(socket.on("error", noop2), new ClientDestroyedError());
client[kResume]();
return;
}
@@ -27932,7 +27932,7 @@ var require_client2 = __commonJS({
try {
client[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client, socket) : connectH1(client, socket);
} catch (err2) {
- socket.destroy().on("error", noop);
+ socket.destroy().on("error", noop2);
handleConnectError(client, err2, { host, hostname, protocol, port });
client[kResume]();
return;
@@ -28716,7 +28716,7 @@ var require_proxy_agent2 = __commonJS({
function defaultFactory(origin, opts) {
return new Pool(origin, opts);
}
- var noop = () => {
+ var noop2 = () => {
};
function defaultAgentFactory(origin, opts) {
if (opts.connections === 1) {
@@ -28833,7 +28833,7 @@ var require_proxy_agent2 = __commonJS({
servername: this[kProxyTls]?.servername || proxyHostname
});
if (statusCode !== 200) {
- socket.on("error", noop).destroy();
+ socket.on("error", noop2).destroy();
callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`));
}
if (opts2.protocol !== "https:") {
@@ -29500,7 +29500,7 @@ var require_readable2 = __commonJS({
var kContentLength = Symbol("kContentLength");
var kUsed = Symbol("kUsed");
var kBytesRead = Symbol("kBytesRead");
- var noop = () => {
+ var noop2 = () => {
};
var BodyReadable = class extends Readable {
/**
@@ -29725,7 +29725,7 @@ var require_readable2 = __commonJS({
} else {
this.on("close", resolve);
}
- this.on("error", noop).on("data", () => {
+ this.on("error", noop2).on("data", () => {
if (this[kBytesRead] > limit) {
this.destroy();
}
@@ -29894,7 +29894,7 @@ var require_api_request2 = __commonJS({
var { Readable } = require_readable2();
var { InvalidArgumentError, RequestAbortedError } = require_errors2();
var util = require_util8();
- function noop() {
+ function noop2() {
}
var RequestHandler = class extends AsyncResource {
constructor(opts, callback) {
@@ -29921,7 +29921,7 @@ var require_api_request2 = __commonJS({
super("UNDICI_REQUEST");
} catch (err) {
if (util.isStream(body)) {
- util.destroy(body.on("error", noop), err);
+ util.destroy(body.on("error", noop2), err);
}
throw err;
}
@@ -29944,7 +29944,7 @@ var require_api_request2 = __commonJS({
this.removeAbortListener = util.addAbortListener(signal, () => {
this.reason = signal.reason ?? new RequestAbortedError();
if (this.res) {
- util.destroy(this.res.on("error", noop), this.reason);
+ util.destroy(this.res.on("error", noop2), this.reason);
} else if (this.abort) {
this.abort(this.reason);
}
@@ -29997,7 +29997,7 @@ var require_api_request2 = __commonJS({
});
} catch (err) {
this.res = null;
- util.destroy(res.on("error", noop), err);
+ util.destroy(res.on("error", noop2), err);
queueMicrotask(() => {
throw err;
});
@@ -30022,13 +30022,13 @@ var require_api_request2 = __commonJS({
if (res) {
this.res = null;
queueMicrotask(() => {
- util.destroy(res.on("error", noop), err);
+ util.destroy(res.on("error", noop2), err);
});
}
if (body) {
this.body = null;
if (util.isStream(body)) {
- body.on("error", noop);
+ body.on("error", noop2);
util.destroy(body, err);
}
}
@@ -30124,7 +30124,7 @@ var require_api_stream2 = __commonJS({
var { InvalidArgumentError, InvalidReturnValueError } = require_errors2();
var util = require_util8();
var { addSignal, removeSignal } = require_abort_signal2();
- function noop() {
+ function noop2() {
}
var StreamHandler = class extends AsyncResource {
constructor(opts, factory, callback) {
@@ -30151,7 +30151,7 @@ var require_api_stream2 = __commonJS({
super("UNDICI_STREAM");
} catch (err) {
if (util.isStream(body)) {
- util.destroy(body.on("error", noop), err);
+ util.destroy(body.on("error", noop2), err);
}
throw err;
}
@@ -30293,7 +30293,7 @@ var require_api_pipeline2 = __commonJS({
} = require_errors2();
var util = require_util8();
var { addSignal, removeSignal } = require_abort_signal2();
- function noop() {
+ function noop2() {
}
var kResume = Symbol("resume");
var PipelineRequest = class extends Readable {
@@ -30353,7 +30353,7 @@ var require_api_pipeline2 = __commonJS({
this.abort = null;
this.context = null;
this.onInfo = onInfo || null;
- this.req = new PipelineRequest().on("error", noop);
+ this.req = new PipelineRequest().on("error", noop2);
this.ret = new Duplex({
readableObjectMode: opts.objectMode,
autoDestroy: true,
@@ -30424,7 +30424,7 @@ var require_api_pipeline2 = __commonJS({
context
});
} catch (err) {
- this.res.on("error", noop);
+ this.res.on("error", noop2);
throw err;
}
if (!body || typeof body.on !== "function") {
@@ -32646,7 +32646,7 @@ var require_redirect_handler = __commonJS({
var EE = require("node:events");
var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
var kBody = Symbol("body");
- var noop = () => {
+ var noop2 = () => {
};
var BodyAsyncIterable = class {
constructor(body) {
@@ -32709,14 +32709,14 @@ var require_redirect_handler = __commonJS({
if ((statusCode === 301 || statusCode === 302) && this.opts.method === "POST") {
this.opts.method = "GET";
if (util.isStream(this.opts.body)) {
- util.destroy(this.opts.body.on("error", noop));
+ util.destroy(this.opts.body.on("error", noop2));
}
this.opts.body = null;
}
if (statusCode === 303 && this.opts.method !== "HEAD") {
this.opts.method = "GET";
if (util.isStream(this.opts.body)) {
- util.destroy(this.opts.body.on("error", noop));
+ util.destroy(this.opts.body.on("error", noop2));
}
this.opts.body = null;
}
@@ -34104,7 +34104,7 @@ var require_cache_handler = __commonJS({
isEtagUsable
} = require_cache2();
var { parseHttpDate } = require_date();
- function noop() {
+ function noop2() {
}
var HEURISTICALLY_CACHEABLE_STATUS_CODES = [
200,
@@ -34185,7 +34185,7 @@ var require_cache_handler = __commonJS({
);
if (!util.safeHTTPMethods.includes(this.#cacheKey.method) && statusCode >= 200 && statusCode <= 399) {
try {
- this.#store.delete(this.#cacheKey)?.catch?.(noop);
+ this.#store.delete(this.#cacheKey)?.catch?.(noop2);
} catch {
}
return downstreamOnHeaders();
@@ -42681,7 +42681,7 @@ var RequestError = class extends Error {
*/
response;
constructor(message, statusCode, options) {
- super(message);
+ super(message, { cause: options.cause });
this.name = "HttpError";
this.status = Number.parseInt(statusCode);
if (Number.isNaN(this.status)) {
@@ -42705,7 +42705,7 @@ var RequestError = class extends Error {
};
// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "10.0.5";
+var VERSION2 = "10.0.7";
var defaults_default = {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
@@ -42719,6 +42719,7 @@ function isPlainObject2(value) {
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 noop = () => "";
async function fetchWrapper(requestOptions) {
const fetch = requestOptions.request?.fetch || globalThis.fetch;
if (!fetch) {
@@ -42820,7 +42821,7 @@ async function fetchWrapper(requestOptions) {
async function getResponseData(response) {
const contentType = response.headers.get("content-type");
if (!contentType) {
- return response.text().catch(() => "");
+ return response.text().catch(noop);
}
const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
if (isJSONResponse(mimetype)) {
@@ -42832,9 +42833,12 @@ async function getResponseData(response) {
return text;
}
} else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
+ return response.text().catch(noop);
} else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ return response.arrayBuffer().catch(
+ /* v8 ignore next -- @preserve */
+ () => new ArrayBuffer(0)
+ );
}
}
function isJSONResponse(mimetype) {
@@ -44148,7 +44152,7 @@ async function sendRequestWithRetries(state, request2, options, createdAt, retri
return sendRequestWithRetries(state, request2, options, createdAt, retries);
}
}
-var VERSION6 = "8.1.1";
+var VERSION6 = "8.1.2";
function createAppAuth(options) {
if (!options.appId) {
throw new Error("[@octokit/auth-app] appId option is required");
@@ -44589,6 +44593,13 @@ 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 *)
+
toad-cache/dist/toad-cache.mjs:
(**
* toad-cache
diff --git a/dist/post.cjs b/dist/post.cjs
index 6b186a85..50409636 100644
--- a/dist/post.cjs
+++ b/dist/post.cjs
@@ -9195,7 +9195,7 @@ var require_readable = __commonJS({
var kBody = Symbol("kBody");
var kAbort = Symbol("abort");
var kContentType = Symbol("kContentType");
- var noop = () => {
+ var noop2 = () => {
};
module2.exports = class BodyReadable extends Readable {
constructor({
@@ -9317,7 +9317,7 @@ var require_readable = __commonJS({
return new Promise((resolve, reject) => {
const signalListenerCleanup = signal ? util.addAbortListener(signal, () => {
this.destroy();
- }) : noop;
+ }) : noop2;
this.on("close", function() {
signalListenerCleanup();
if (signal && signal.aborted) {
@@ -9325,7 +9325,7 @@ var require_readable = __commonJS({
} else {
resolve(null);
}
- }).on("error", noop).on("data", function(chunk) {
+ }).on("error", noop2).on("data", function(chunk) {
limit -= chunk.length;
if (limit <= 0) {
this.destroy();
@@ -20873,7 +20873,7 @@ var require_util8 = __commonJS({
yield* this[kBody];
}
};
- function noop() {
+ function noop2() {
}
function wrapRequestBody(body) {
if (isStream(body)) {
@@ -21284,7 +21284,7 @@ var require_util8 = __commonJS({
}
var setupConnectTimeout = process.platform === "win32" ? (socketWeakRef, opts) => {
if (!opts.timeout) {
- return noop;
+ return noop2;
}
let s1 = null;
let s2 = null;
@@ -21300,7 +21300,7 @@ var require_util8 = __commonJS({
};
} : (socketWeakRef, opts) => {
if (!opts.timeout) {
- return noop;
+ return noop2;
}
let s1 = null;
const fastTimer = timers.setFastTimeout(() => {
@@ -25550,12 +25550,12 @@ var require_body2 = __commonJS({
random = (max) => Math.floor(Math.random() * max);
}
var textEncoder = new TextEncoder();
- function noop() {
+ function noop2() {
}
var 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(noop);
+ stream.cancel("Response object has been garbage collected").catch(noop2);
}
});
function extractBody(object, keepalive = false) {
@@ -27644,7 +27644,7 @@ var require_client2 = __commonJS({
var getDefaultNodeMaxHeaderSize = http && http.maxHeaderSize && Number.isInteger(http.maxHeaderSize) && http.maxHeaderSize > 0 ? () => http.maxHeaderSize : () => {
throw new InvalidArgumentError("http module not available or http.maxHeaderSize invalid");
};
- var noop = () => {
+ var noop2 = () => {
};
function getPipelining(client) {
return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1;
@@ -27918,7 +27918,7 @@ var require_client2 = __commonJS({
return;
}
if (client.destroyed) {
- util.destroy(socket.on("error", noop), new ClientDestroyedError());
+ util.destroy(socket.on("error", noop2), new ClientDestroyedError());
client[kResume]();
return;
}
@@ -27926,7 +27926,7 @@ var require_client2 = __commonJS({
try {
client[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client, socket) : connectH1(client, socket);
} catch (err2) {
- socket.destroy().on("error", noop);
+ socket.destroy().on("error", noop2);
handleConnectError(client, err2, { host, hostname, protocol, port });
client[kResume]();
return;
@@ -28710,7 +28710,7 @@ var require_proxy_agent2 = __commonJS({
function defaultFactory(origin, opts) {
return new Pool(origin, opts);
}
- var noop = () => {
+ var noop2 = () => {
};
function defaultAgentFactory(origin, opts) {
if (opts.connections === 1) {
@@ -28827,7 +28827,7 @@ var require_proxy_agent2 = __commonJS({
servername: this[kProxyTls]?.servername || proxyHostname
});
if (statusCode !== 200) {
- socket.on("error", noop).destroy();
+ socket.on("error", noop2).destroy();
callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`));
}
if (opts2.protocol !== "https:") {
@@ -29494,7 +29494,7 @@ var require_readable2 = __commonJS({
var kContentLength = Symbol("kContentLength");
var kUsed = Symbol("kUsed");
var kBytesRead = Symbol("kBytesRead");
- var noop = () => {
+ var noop2 = () => {
};
var BodyReadable = class extends Readable {
/**
@@ -29719,7 +29719,7 @@ var require_readable2 = __commonJS({
} else {
this.on("close", resolve);
}
- this.on("error", noop).on("data", () => {
+ this.on("error", noop2).on("data", () => {
if (this[kBytesRead] > limit) {
this.destroy();
}
@@ -29888,7 +29888,7 @@ var require_api_request2 = __commonJS({
var { Readable } = require_readable2();
var { InvalidArgumentError, RequestAbortedError } = require_errors2();
var util = require_util8();
- function noop() {
+ function noop2() {
}
var RequestHandler = class extends AsyncResource {
constructor(opts, callback) {
@@ -29915,7 +29915,7 @@ var require_api_request2 = __commonJS({
super("UNDICI_REQUEST");
} catch (err) {
if (util.isStream(body)) {
- util.destroy(body.on("error", noop), err);
+ util.destroy(body.on("error", noop2), err);
}
throw err;
}
@@ -29938,7 +29938,7 @@ var require_api_request2 = __commonJS({
this.removeAbortListener = util.addAbortListener(signal, () => {
this.reason = signal.reason ?? new RequestAbortedError();
if (this.res) {
- util.destroy(this.res.on("error", noop), this.reason);
+ util.destroy(this.res.on("error", noop2), this.reason);
} else if (this.abort) {
this.abort(this.reason);
}
@@ -29991,7 +29991,7 @@ var require_api_request2 = __commonJS({
});
} catch (err) {
this.res = null;
- util.destroy(res.on("error", noop), err);
+ util.destroy(res.on("error", noop2), err);
queueMicrotask(() => {
throw err;
});
@@ -30016,13 +30016,13 @@ var require_api_request2 = __commonJS({
if (res) {
this.res = null;
queueMicrotask(() => {
- util.destroy(res.on("error", noop), err);
+ util.destroy(res.on("error", noop2), err);
});
}
if (body) {
this.body = null;
if (util.isStream(body)) {
- body.on("error", noop);
+ body.on("error", noop2);
util.destroy(body, err);
}
}
@@ -30118,7 +30118,7 @@ var require_api_stream2 = __commonJS({
var { InvalidArgumentError, InvalidReturnValueError } = require_errors2();
var util = require_util8();
var { addSignal, removeSignal } = require_abort_signal2();
- function noop() {
+ function noop2() {
}
var StreamHandler = class extends AsyncResource {
constructor(opts, factory, callback) {
@@ -30145,7 +30145,7 @@ var require_api_stream2 = __commonJS({
super("UNDICI_STREAM");
} catch (err) {
if (util.isStream(body)) {
- util.destroy(body.on("error", noop), err);
+ util.destroy(body.on("error", noop2), err);
}
throw err;
}
@@ -30287,7 +30287,7 @@ var require_api_pipeline2 = __commonJS({
} = require_errors2();
var util = require_util8();
var { addSignal, removeSignal } = require_abort_signal2();
- function noop() {
+ function noop2() {
}
var kResume = Symbol("resume");
var PipelineRequest = class extends Readable {
@@ -30347,7 +30347,7 @@ var require_api_pipeline2 = __commonJS({
this.abort = null;
this.context = null;
this.onInfo = onInfo || null;
- this.req = new PipelineRequest().on("error", noop);
+ this.req = new PipelineRequest().on("error", noop2);
this.ret = new Duplex({
readableObjectMode: opts.objectMode,
autoDestroy: true,
@@ -30418,7 +30418,7 @@ var require_api_pipeline2 = __commonJS({
context
});
} catch (err) {
- this.res.on("error", noop);
+ this.res.on("error", noop2);
throw err;
}
if (!body || typeof body.on !== "function") {
@@ -32640,7 +32640,7 @@ var require_redirect_handler = __commonJS({
var EE = require("node:events");
var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
var kBody = Symbol("body");
- var noop = () => {
+ var noop2 = () => {
};
var BodyAsyncIterable = class {
constructor(body) {
@@ -32703,14 +32703,14 @@ var require_redirect_handler = __commonJS({
if ((statusCode === 301 || statusCode === 302) && this.opts.method === "POST") {
this.opts.method = "GET";
if (util.isStream(this.opts.body)) {
- util.destroy(this.opts.body.on("error", noop));
+ util.destroy(this.opts.body.on("error", noop2));
}
this.opts.body = null;
}
if (statusCode === 303 && this.opts.method !== "HEAD") {
this.opts.method = "GET";
if (util.isStream(this.opts.body)) {
- util.destroy(this.opts.body.on("error", noop));
+ util.destroy(this.opts.body.on("error", noop2));
}
this.opts.body = null;
}
@@ -34098,7 +34098,7 @@ var require_cache_handler = __commonJS({
isEtagUsable
} = require_cache2();
var { parseHttpDate } = require_date();
- function noop() {
+ function noop2() {
}
var HEURISTICALLY_CACHEABLE_STATUS_CODES = [
200,
@@ -34179,7 +34179,7 @@ var require_cache_handler = __commonJS({
);
if (!util.safeHTTPMethods.includes(this.#cacheKey.method) && statusCode >= 200 && statusCode <= 399) {
try {
- this.#store.delete(this.#cacheKey)?.catch?.(noop);
+ this.#store.delete(this.#cacheKey)?.catch?.(noop2);
} catch {
}
return downstreamOnHeaders();
@@ -42707,7 +42707,7 @@ var RequestError = class extends Error {
*/
response;
constructor(message, statusCode, options) {
- super(message);
+ super(message, { cause: options.cause });
this.name = "HttpError";
this.status = Number.parseInt(statusCode);
if (Number.isNaN(this.status)) {
@@ -42731,7 +42731,7 @@ var RequestError = class extends Error {
};
// node_modules/@octokit/request/dist-bundle/index.js
-var VERSION2 = "10.0.5";
+var VERSION2 = "10.0.7";
var defaults_default = {
headers: {
"user-agent": `octokit-request.js/${VERSION2} ${getUserAgent()}`
@@ -42745,6 +42745,7 @@ function isPlainObject2(value) {
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 noop = () => "";
async function fetchWrapper(requestOptions) {
const fetch = requestOptions.request?.fetch || globalThis.fetch;
if (!fetch) {
@@ -42846,7 +42847,7 @@ async function fetchWrapper(requestOptions) {
async function getResponseData(response) {
const contentType = response.headers.get("content-type");
if (!contentType) {
- return response.text().catch(() => "");
+ return response.text().catch(noop);
}
const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType);
if (isJSONResponse(mimetype)) {
@@ -42858,9 +42859,12 @@ async function getResponseData(response) {
return text;
}
} else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
- return response.text().catch(() => "");
+ return response.text().catch(noop);
} else {
- return response.arrayBuffer().catch(() => new ArrayBuffer(0));
+ return response.arrayBuffer().catch(
+ /* v8 ignore next -- @preserve */
+ () => new ArrayBuffer(0)
+ );
}
}
function isJSONResponse(mimetype) {
@@ -42944,4 +42948,11 @@ undici/lib/web/fetch/body.js:
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 c4e098cb..d25e95b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "create-github-app-token",
- "version": "2.2.0",
+ "version": "2.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-github-app-token",
- "version": "2.2.0",
+ "version": "2.2.1",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.11.1",
diff --git a/package.json b/package.json
index 8ff34534..5db87f84 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "create-github-app-token",
"private": true,
"type": "module",
- "version": "2.2.0",
+ "version": "2.2.1",
"description": "GitHub Action for creating a GitHub App Installation Access Token",
"engines": {
"node": ">=20"